]> git.openstreetmap.org Git - rails.git/blob - vendor/assets/iD/iD.js
Update leaflet to 0.7.7
[rails.git] / vendor / assets / iD / iD.js
1 (function(exports) {
2
3   var bootstrap = (typeof exports.bootstrap === "object") ?
4     exports.bootstrap :
5     (exports.bootstrap = {});
6
7   bootstrap.tooltip = function() {
8
9     var tooltip = function(selection) {
10         selection.each(setup);
11       },
12       animation = d3.functor(false),
13       html = d3.functor(false),
14       title = function() {
15         var title = this.getAttribute("data-original-title");
16         if (title) {
17           return title;
18         } else {
19           title = this.getAttribute("title");
20           this.removeAttribute("title");
21           this.setAttribute("data-original-title", title);
22         }
23         return title;
24       },
25       over = "mouseenter.tooltip",
26       out = "mouseleave.tooltip",
27       placements = "top left bottom right".split(" "),
28       placement = d3.functor("top");
29
30     tooltip.title = function(_) {
31       if (arguments.length) {
32         title = d3.functor(_);
33         return tooltip;
34       } else {
35         return title;
36       }
37     };
38
39     tooltip.html = function(_) {
40       if (arguments.length) {
41         html = d3.functor(_);
42         return tooltip;
43       } else {
44         return html;
45       }
46     };
47
48     tooltip.placement = function(_) {
49       if (arguments.length) {
50         placement = d3.functor(_);
51         return tooltip;
52       } else {
53         return placement;
54       }
55     };
56
57     tooltip.show = function(selection) {
58       selection.each(show);
59     };
60
61     tooltip.hide = function(selection) {
62       selection.each(hide);
63     };
64
65     tooltip.toggle = function(selection) {
66       selection.each(toggle);
67     };
68
69     tooltip.destroy = function(selection) {
70       selection
71         .on(over, null)
72         .on(out, null)
73         .attr("title", function() {
74           return this.getAttribute("data-original-title") || this.getAttribute("title");
75         })
76         .attr("data-original-title", null)
77         .select(".tooltip")
78         .remove();
79     };
80
81     function setup() {
82       var root = d3.select(this),
83           animate = animation.apply(this, arguments),
84           tip = root.append("div")
85             .attr("class", "tooltip");
86
87       if (animate) {
88         tip.classed("fade", true);
89       }
90
91       // TODO "inside" checks?
92
93       tip.append("div")
94         .attr("class", "tooltip-arrow");
95       tip.append("div")
96         .attr("class", "tooltip-inner");
97
98       var place = placement.apply(this, arguments);
99       tip.classed(place, true);
100
101       root.on(over, show);
102       root.on(out, hide);
103     }
104
105     function show() {
106       var root = d3.select(this),
107           content = title.apply(this, arguments),
108           tip = root.select(".tooltip")
109             .classed("in", true),
110           markup = html.apply(this, arguments),
111           innercontent = tip.select(".tooltip-inner")[markup ? "html" : "text"](content),
112           place = placement.apply(this, arguments),
113           outer = getPosition(root.node()),
114           inner = getPosition(tip.node()),
115           pos;
116
117       switch (place) {
118         case "top":
119           pos = {x: outer.x + (outer.w - inner.w) / 2, y: outer.y - inner.h};
120           break;
121         case "right":
122           pos = {x: outer.x + outer.w, y: outer.y + (outer.h - inner.h) / 2};
123           break;
124         case "left":
125           pos = {x: outer.x - inner.w, y: outer.y + (outer.h - inner.h) / 2};
126           break;
127         case "bottom":
128           pos = {x: Math.max(0, outer.x + (outer.w - inner.w) / 2), y: outer.y + outer.h};
129           break;
130       }
131
132       tip.style(pos ?
133         {left: ~~pos.x + "px", top: ~~pos.y + "px"} :
134         {left: null, top: null});
135
136       this.tooltipVisible = true;
137     }
138
139     function hide() {
140       d3.select(this).select(".tooltip")
141         .classed("in", false);
142
143       this.tooltipVisible = false;
144     }
145
146     function toggle() {
147       if (this.tooltipVisible) {
148         hide.apply(this, arguments);
149       } else {
150         show.apply(this, arguments);
151       }
152     }
153
154     return tooltip;
155   };
156
157   function getPosition(node) {
158     var mode = d3.select(node).style('position');
159     if (mode === 'absolute' || mode === 'static') {
160       return {
161         x: node.offsetLeft,
162         y: node.offsetTop,
163         w: node.offsetWidth,
164         h: node.offsetHeight
165       };
166     } else {
167       return {
168         x: 0,
169         y: 0,
170         w: node.offsetWidth,
171         h: node.offsetHeight
172       };
173     }
174   }
175
176 })(this);
177 !function(){
178   var d3 = {version: "3.5.5"}; // semver
179 d3.ascending = d3_ascending;
180
181 function d3_ascending(a, b) {
182   return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
183 }
184 d3.descending = function(a, b) {
185   return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
186 };
187 d3.min = function(array, f) {
188   var i = -1,
189       n = array.length,
190       a,
191       b;
192   if (arguments.length === 1) {
193     while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
194     while (++i < n) if ((b = array[i]) != null && a > b) a = b;
195   } else {
196     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
197     while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
198   }
199   return a;
200 };
201 d3.max = function(array, f) {
202   var i = -1,
203       n = array.length,
204       a,
205       b;
206   if (arguments.length === 1) {
207     while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }
208     while (++i < n) if ((b = array[i]) != null && b > a) a = b;
209   } else {
210     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = b; break; }
211     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
212   }
213   return a;
214 };
215 d3.extent = function(array, f) {
216   var i = -1,
217       n = array.length,
218       a,
219       b,
220       c;
221   if (arguments.length === 1) {
222     while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }
223     while (++i < n) if ((b = array[i]) != null) {
224       if (a > b) a = b;
225       if (c < b) c = b;
226     }
227   } else {
228     while (++i < n) if ((b = f.call(array, array[i], i)) != null && b >= b) { a = c = b; break; }
229     while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
230       if (a > b) a = b;
231       if (c < b) c = b;
232     }
233   }
234   return [a, c];
235 };
236 function d3_number(x) {
237   return x === null ? NaN : +x;
238 }
239
240 function d3_numeric(x) {
241   return !isNaN(x);
242 }
243
244 d3.sum = function(array, f) {
245   var s = 0,
246       n = array.length,
247       a,
248       i = -1;
249   if (arguments.length === 1) {
250     while (++i < n) if (d3_numeric(a = +array[i])) s += a; // zero and null are equivalent
251   } else {
252     while (++i < n) if (d3_numeric(a = +f.call(array, array[i], i))) s += a;
253   }
254   return s;
255 };
256
257 d3.mean = function(array, f) {
258   var s = 0,
259       n = array.length,
260       a,
261       i = -1,
262       j = n;
263   if (arguments.length === 1) {
264     while (++i < n) if (d3_numeric(a = d3_number(array[i]))) s += a; else --j;
265   } else {
266     while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) s += a; else --j;
267   }
268   if (j) return s / j;
269 };
270 // R-7 per <http://en.wikipedia.org/wiki/Quantile>
271 d3.quantile = function(values, p) {
272   var H = (values.length - 1) * p + 1,
273       h = Math.floor(H),
274       v = +values[h - 1],
275       e = H - h;
276   return e ? v + e * (values[h] - v) : v;
277 };
278
279 d3.median = function(array, f) {
280   var numbers = [],
281       n = array.length,
282       a,
283       i = -1;
284   if (arguments.length === 1) {
285     while (++i < n) if (d3_numeric(a = d3_number(array[i]))) numbers.push(a);
286   } else {
287     while (++i < n) if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) numbers.push(a);
288   }
289   if (numbers.length) return d3.quantile(numbers.sort(d3_ascending), .5);
290 };
291
292 d3.variance = function(array, f) {
293   var n = array.length,
294       m = 0,
295       a,
296       d,
297       s = 0,
298       i = -1,
299       j = 0;
300   if (arguments.length === 1) {
301     while (++i < n) {
302       if (d3_numeric(a = d3_number(array[i]))) {
303         d = a - m;
304         m += d / ++j;
305         s += d * (a - m);
306       }
307     }
308   } else {
309     while (++i < n) {
310       if (d3_numeric(a = d3_number(f.call(array, array[i], i)))) {
311         d = a - m;
312         m += d / ++j;
313         s += d * (a - m);
314       }
315     }
316   }
317   if (j > 1) return s / (j - 1);
318 };
319
320 d3.deviation = function() {
321   var v = d3.variance.apply(this, arguments);
322   return v ? Math.sqrt(v) : v;
323 };
324
325 function d3_bisector(compare) {
326   return {
327     left: function(a, x, lo, hi) {
328       if (arguments.length < 3) lo = 0;
329       if (arguments.length < 4) hi = a.length;
330       while (lo < hi) {
331         var mid = lo + hi >>> 1;
332         if (compare(a[mid], x) < 0) lo = mid + 1;
333         else hi = mid;
334       }
335       return lo;
336     },
337     right: function(a, x, lo, hi) {
338       if (arguments.length < 3) lo = 0;
339       if (arguments.length < 4) hi = a.length;
340       while (lo < hi) {
341         var mid = lo + hi >>> 1;
342         if (compare(a[mid], x) > 0) hi = mid;
343         else lo = mid + 1;
344       }
345       return lo;
346     }
347   };
348 }
349
350 var d3_bisect = d3_bisector(d3_ascending);
351 d3.bisectLeft = d3_bisect.left;
352 d3.bisect = d3.bisectRight = d3_bisect.right;
353
354 d3.bisector = function(f) {
355   return d3_bisector(f.length === 1
356       ? function(d, x) { return d3_ascending(f(d), x); }
357       : f);
358 };
359 d3.shuffle = function(array, i0, i1) {
360   if ((m = arguments.length) < 3) { i1 = array.length; if (m < 2) i0 = 0; }
361   var m = i1 - i0, t, i;
362   while (m) {
363     i = Math.random() * m-- | 0;
364     t = array[m + i0], array[m + i0] = array[i + i0], array[i + i0] = t;
365   }
366   return array;
367 };
368 d3.permute = function(array, indexes) {
369   var i = indexes.length, permutes = new Array(i);
370   while (i--) permutes[i] = array[indexes[i]];
371   return permutes;
372 };
373 d3.pairs = function(array) {
374   var i = 0, n = array.length - 1, p0, p1 = array[0], pairs = new Array(n < 0 ? 0 : n);
375   while (i < n) pairs[i] = [p0 = p1, p1 = array[++i]];
376   return pairs;
377 };
378
379 d3.zip = function() {
380   if (!(n = arguments.length)) return [];
381   for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {
382     for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n;) {
383       zip[j] = arguments[j][i];
384     }
385   }
386   return zips;
387 };
388
389 function d3_zipLength(d) {
390   return d.length;
391 }
392
393 d3.transpose = function(matrix) {
394   return d3.zip.apply(d3, matrix);
395 };
396 d3.keys = function(map) {
397   var keys = [];
398   for (var key in map) keys.push(key);
399   return keys;
400 };
401 d3.values = function(map) {
402   var values = [];
403   for (var key in map) values.push(map[key]);
404   return values;
405 };
406 d3.entries = function(map) {
407   var entries = [];
408   for (var key in map) entries.push({key: key, value: map[key]});
409   return entries;
410 };
411 d3.merge = function(arrays) {
412   var n = arrays.length,
413       m,
414       i = -1,
415       j = 0,
416       merged,
417       array;
418
419   while (++i < n) j += arrays[i].length;
420   merged = new Array(j);
421
422   while (--n >= 0) {
423     array = arrays[n];
424     m = array.length;
425     while (--m >= 0) {
426       merged[--j] = array[m];
427     }
428   }
429
430   return merged;
431 };
432 var abs = Math.abs;
433
434 d3.range = function(start, stop, step) {
435   if (arguments.length < 3) {
436     step = 1;
437     if (arguments.length < 2) {
438       stop = start;
439       start = 0;
440     }
441   }
442   if ((stop - start) / step === Infinity) throw new Error("infinite range");
443   var range = [],
444        k = d3_range_integerScale(abs(step)),
445        i = -1,
446        j;
447   start *= k, stop *= k, step *= k;
448   if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k);
449   else while ((j = start + step * ++i) < stop) range.push(j / k);
450   return range;
451 };
452
453 function d3_range_integerScale(x) {
454   var k = 1;
455   while (x * k % 1) k *= 10;
456   return k;
457 }
458 function d3_class(ctor, properties) {
459   for (var key in properties) {
460     Object.defineProperty(ctor.prototype, key, {
461       value: properties[key],
462       enumerable: false
463     });
464   }
465 }
466
467 d3.map = function(object, f) {
468   var map = new d3_Map;
469   if (object instanceof d3_Map) {
470     object.forEach(function(key, value) { map.set(key, value); });
471   } else if (Array.isArray(object)) {
472     var i = -1,
473         n = object.length,
474         o;
475     if (arguments.length === 1) while (++i < n) map.set(i, object[i]);
476     else while (++i < n) map.set(f.call(object, o = object[i], i), o);
477   } else {
478     for (var key in object) map.set(key, object[key]);
479   }
480   return map;
481 };
482
483 function d3_Map() {
484   this._ = Object.create(null);
485 }
486
487 var d3_map_proto = "__proto__",
488     d3_map_zero = "\0";
489
490 d3_class(d3_Map, {
491   has: d3_map_has,
492   get: function(key) {
493     return this._[d3_map_escape(key)];
494   },
495   set: function(key, value) {
496     return this._[d3_map_escape(key)] = value;
497   },
498   remove: d3_map_remove,
499   keys: d3_map_keys,
500   values: function() {
501     var values = [];
502     for (var key in this._) values.push(this._[key]);
503     return values;
504   },
505   entries: function() {
506     var entries = [];
507     for (var key in this._) entries.push({key: d3_map_unescape(key), value: this._[key]});
508     return entries;
509   },
510   size: d3_map_size,
511   empty: d3_map_empty,
512   forEach: function(f) {
513     for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
514   }
515 });
516
517 function d3_map_escape(key) {
518   return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
519 }
520
521 function d3_map_unescape(key) {
522   return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
523 }
524
525 function d3_map_has(key) {
526   return d3_map_escape(key) in this._;
527 }
528
529 function d3_map_remove(key) {
530   return (key = d3_map_escape(key)) in this._ && delete this._[key];
531 }
532
533 function d3_map_keys() {
534   var keys = [];
535   for (var key in this._) keys.push(d3_map_unescape(key));
536   return keys;
537 }
538
539 function d3_map_size() {
540   var size = 0;
541   for (var key in this._) ++size;
542   return size;
543 }
544
545 function d3_map_empty() {
546   for (var key in this._) return false;
547   return true;
548 }
549
550 d3.nest = function() {
551   var nest = {},
552       keys = [],
553       sortKeys = [],
554       sortValues,
555       rollup;
556
557   function map(mapType, array, depth) {
558     if (depth >= keys.length) return rollup
559         ? rollup.call(nest, array) : (sortValues
560         ? array.sort(sortValues)
561         : array);
562
563     var i = -1,
564         n = array.length,
565         key = keys[depth++],
566         keyValue,
567         object,
568         setter,
569         valuesByKey = new d3_Map,
570         values;
571
572     while (++i < n) {
573       if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
574         values.push(object);
575       } else {
576         valuesByKey.set(keyValue, [object]);
577       }
578     }
579
580     if (mapType) {
581       object = mapType();
582       setter = function(keyValue, values) {
583         object.set(keyValue, map(mapType, values, depth));
584       };
585     } else {
586       object = {};
587       setter = function(keyValue, values) {
588         object[keyValue] = map(mapType, values, depth);
589       };
590     }
591
592     valuesByKey.forEach(setter);
593     return object;
594   }
595
596   function entries(map, depth) {
597     if (depth >= keys.length) return map;
598
599     var array = [],
600         sortKey = sortKeys[depth++];
601
602     map.forEach(function(key, keyMap) {
603       array.push({key: key, values: entries(keyMap, depth)});
604     });
605
606     return sortKey
607         ? array.sort(function(a, b) { return sortKey(a.key, b.key); })
608         : array;
609   }
610
611   nest.map = function(array, mapType) {
612     return map(mapType, array, 0);
613   };
614
615   nest.entries = function(array) {
616     return entries(map(d3.map, array, 0), 0);
617   };
618
619   nest.key = function(d) {
620     keys.push(d);
621     return nest;
622   };
623
624   // Specifies the order for the most-recently specified key.
625   // Note: only applies to entries. Map keys are unordered!
626   nest.sortKeys = function(order) {
627     sortKeys[keys.length - 1] = order;
628     return nest;
629   };
630
631   // Specifies the order for leaf values.
632   // Applies to both maps and entries array.
633   nest.sortValues = function(order) {
634     sortValues = order;
635     return nest;
636   };
637
638   nest.rollup = function(f) {
639     rollup = f;
640     return nest;
641   };
642
643   return nest;
644 };
645
646 d3.set = function(array) {
647   var set = new d3_Set;
648   if (array) for (var i = 0, n = array.length; i < n; ++i) set.add(array[i]);
649   return set;
650 };
651
652 function d3_Set() {
653   this._ = Object.create(null);
654 }
655
656 d3_class(d3_Set, {
657   has: d3_map_has,
658   add: function(key) {
659     this._[d3_map_escape(key += "")] = true;
660     return key;
661   },
662   remove: d3_map_remove,
663   values: d3_map_keys,
664   size: d3_map_size,
665   empty: d3_map_empty,
666   forEach: function(f) {
667     for (var key in this._) f.call(this, d3_map_unescape(key));
668   }
669 });
670 d3.behavior = {};
671 var d3_document = this.document;
672
673 function d3_documentElement(node) {
674   return node
675       && (node.ownerDocument // node is a Node
676       || node.document // node is a Window
677       || node).documentElement; // node is a Document
678 }
679
680 function d3_window(node) {
681   return node
682       && ((node.ownerDocument && node.ownerDocument.defaultView) // node is a Node
683         || (node.document && node) // node is a Window
684         || node.defaultView); // node is a Document
685 }
686 // Copies a variable number of methods from source to target.
687 d3.rebind = function(target, source) {
688   var i = 1, n = arguments.length, method;
689   while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
690   return target;
691 };
692
693 // Method is assumed to be a standard D3 getter-setter:
694 // If passed with no arguments, gets the value.
695 // If passed with arguments, sets the value and returns the target.
696 function d3_rebind(target, source, method) {
697   return function() {
698     var value = method.apply(source, arguments);
699     return value === source ? target : value;
700   };
701 }
702 function d3_vendorSymbol(object, name) {
703   if (name in object) return name;
704   name = name.charAt(0).toUpperCase() + name.slice(1);
705   for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) {
706     var prefixName = d3_vendorPrefixes[i] + name;
707     if (prefixName in object) return prefixName;
708   }
709 }
710
711 var d3_vendorPrefixes = ["webkit", "ms", "moz", "Moz", "o", "O"];
712 var d3_arraySlice = [].slice,
713     d3_array = function(list) { return d3_arraySlice.call(list); }; // conversion for NodeLists
714 function d3_noop() {}
715
716 d3.dispatch = function() {
717   var dispatch = new d3_dispatch,
718       i = -1,
719       n = arguments.length;
720   while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
721   return dispatch;
722 };
723
724 function d3_dispatch() {}
725
726 d3_dispatch.prototype.on = function(type, listener) {
727   var i = type.indexOf("."),
728       name = "";
729
730   // Extract optional namespace, e.g., "click.foo"
731   if (i >= 0) {
732     name = type.slice(i + 1);
733     type = type.slice(0, i);
734   }
735
736   if (type) return arguments.length < 2
737       ? this[type].on(name)
738       : this[type].on(name, listener);
739
740   if (arguments.length === 2) {
741     if (listener == null) for (type in this) {
742       if (this.hasOwnProperty(type)) this[type].on(name, null);
743     }
744     return this;
745   }
746 };
747
748 function d3_dispatch_event(dispatch) {
749   var listeners = [],
750       listenerByName = new d3_Map;
751
752   function event() {
753     var z = listeners, // defensive reference
754         i = -1,
755         n = z.length,
756         l;
757     while (++i < n) if (l = z[i].on) l.apply(this, arguments);
758     return dispatch;
759   }
760
761   event.on = function(name, listener) {
762     var l = listenerByName.get(name),
763         i;
764
765     // return the current listener, if any
766     if (arguments.length < 2) return l && l.on;
767
768     // remove the old listener, if any (with copy-on-write)
769     if (l) {
770       l.on = null;
771       listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
772       listenerByName.remove(name);
773     }
774
775     // add the new listener, if any
776     if (listener) listeners.push(listenerByName.set(name, {on: listener}));
777
778     return dispatch;
779   };
780
781   return event;
782 }
783
784 d3.event = null;
785
786 function d3_eventPreventDefault() {
787   d3.event.preventDefault();
788 }
789
790 function d3_eventCancel() {
791   d3.event.preventDefault();
792   d3.event.stopPropagation();
793 }
794
795 function d3_eventSource() {
796   var e = d3.event, s;
797   while (s = e.sourceEvent) e = s;
798   return e;
799 }
800
801 // Like d3.dispatch, but for custom events abstracting native UI events. These
802 // events have a target component (such as a brush), a target element (such as
803 // the svg:g element containing the brush) and the standard arguments `d` (the
804 // target element's data) and `i` (the selection index of the target element).
805 function d3_eventDispatch(target) {
806   var dispatch = new d3_dispatch,
807       i = 0,
808       n = arguments.length;
809
810   while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
811
812   // Creates a dispatch context for the specified `thiz` (typically, the target
813   // DOM element that received the source event) and `argumentz` (typically, the
814   // data `d` and index `i` of the target element). The returned function can be
815   // used to dispatch an event to any registered listeners; the function takes a
816   // single argument as input, being the event to dispatch. The event must have
817   // a "type" attribute which corresponds to a type registered in the
818   // constructor. This context will automatically populate the "sourceEvent" and
819   // "target" attributes of the event, as well as setting the `d3.event` global
820   // for the duration of the notification.
821   dispatch.of = function(thiz, argumentz) {
822     return function(e1) {
823       try {
824         var e0 =
825         e1.sourceEvent = d3.event;
826         e1.target = target;
827         d3.event = e1;
828         dispatch[e1.type].apply(thiz, argumentz);
829       } finally {
830         d3.event = e0;
831       }
832     };
833   };
834
835   return dispatch;
836 }
837 d3.requote = function(s) {
838   return s.replace(d3_requote_re, "\\$&");
839 };
840
841 var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
842 var d3_subclass = {}.__proto__?
843
844 // Until ECMAScript supports array subclassing, prototype injection works well.
845 function(object, prototype) {
846   object.__proto__ = prototype;
847 }:
848
849 // And if your browser doesn't support __proto__, we'll use direct extension.
850 function(object, prototype) {
851   for (var property in prototype) object[property] = prototype[property];
852 };
853
854 function d3_selection(groups) {
855   d3_subclass(groups, d3_selectionPrototype);
856   return groups;
857 }
858
859 var d3_select = function(s, n) { return n.querySelector(s); },
860     d3_selectAll = function(s, n) { return n.querySelectorAll(s); },
861     d3_selectMatches = function(n, s) {
862       var d3_selectMatcher = n.matches || n[d3_vendorSymbol(n, "matchesSelector")];
863       d3_selectMatches = function(n, s) {
864         return d3_selectMatcher.call(n, s);
865       };
866       return d3_selectMatches(n, s);
867     };
868
869 // Prefer Sizzle, if available.
870 if (typeof Sizzle === "function") {
871   d3_select = function(s, n) { return Sizzle(s, n)[0] || null; };
872   d3_selectAll = Sizzle;
873   d3_selectMatches = Sizzle.matchesSelector;
874 }
875
876 d3.selection = function() {
877   return d3.select(d3_document.documentElement);
878 };
879
880 var d3_selectionPrototype = d3.selection.prototype = [];
881
882
883 d3_selectionPrototype.select = function(selector) {
884   var subgroups = [],
885       subgroup,
886       subnode,
887       group,
888       node;
889
890   selector = d3_selection_selector(selector);
891
892   for (var j = -1, m = this.length; ++j < m;) {
893     subgroups.push(subgroup = []);
894     subgroup.parentNode = (group = this[j]).parentNode;
895     for (var i = -1, n = group.length; ++i < n;) {
896       if (node = group[i]) {
897         subgroup.push(subnode = selector.call(node, node.__data__, i, j));
898         if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
899       } else {
900         subgroup.push(null);
901       }
902     }
903   }
904
905   return d3_selection(subgroups);
906 };
907
908 function d3_selection_selector(selector) {
909   return typeof selector === "function" ? selector : function() {
910     return d3_select(selector, this);
911   };
912 }
913
914 d3_selectionPrototype.selectAll = function(selector) {
915   var subgroups = [],
916       subgroup,
917       node;
918
919   selector = d3_selection_selectorAll(selector);
920
921   for (var j = -1, m = this.length; ++j < m;) {
922     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
923       if (node = group[i]) {
924         subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
925         subgroup.parentNode = node;
926       }
927     }
928   }
929
930   return d3_selection(subgroups);
931 };
932
933 function d3_selection_selectorAll(selector) {
934   return typeof selector === "function" ? selector : function() {
935     return d3_selectAll(selector, this);
936   };
937 }
938 var d3_nsPrefix = {
939   svg: "http://www.w3.org/2000/svg",
940   xhtml: "http://www.w3.org/1999/xhtml",
941   xlink: "http://www.w3.org/1999/xlink",
942   xml: "http://www.w3.org/XML/1998/namespace",
943   xmlns: "http://www.w3.org/2000/xmlns/"
944 };
945
946 d3.ns = {
947   prefix: d3_nsPrefix,
948   qualify: function(name) {
949     var i = name.indexOf(":"),
950         prefix = name;
951     if (i >= 0) {
952       prefix = name.slice(0, i);
953       name = name.slice(i + 1);
954     }
955     return d3_nsPrefix.hasOwnProperty(prefix)
956         ? {space: d3_nsPrefix[prefix], local: name}
957         : name;
958   }
959 };
960
961 d3_selectionPrototype.attr = function(name, value) {
962   if (arguments.length < 2) {
963
964     // For attr(string), return the attribute value for the first node.
965     if (typeof name === "string") {
966       var node = this.node();
967       name = d3.ns.qualify(name);
968       return name.local
969           ? node.getAttributeNS(name.space, name.local)
970           : node.getAttribute(name);
971     }
972
973     // For attr(object), the object specifies the names and values of the
974     // attributes to set or remove. The values may be functions that are
975     // evaluated for each element.
976     for (value in name) this.each(d3_selection_attr(value, name[value]));
977     return this;
978   }
979
980   return this.each(d3_selection_attr(name, value));
981 };
982
983 function d3_selection_attr(name, value) {
984   name = d3.ns.qualify(name);
985
986   // For attr(string, null), remove the attribute with the specified name.
987   function attrNull() {
988     this.removeAttribute(name);
989   }
990   function attrNullNS() {
991     this.removeAttributeNS(name.space, name.local);
992   }
993
994   // For attr(string, string), set the attribute with the specified name.
995   function attrConstant() {
996     this.setAttribute(name, value);
997   }
998   function attrConstantNS() {
999     this.setAttributeNS(name.space, name.local, value);
1000   }
1001
1002   // For attr(string, function), evaluate the function for each element, and set
1003   // or remove the attribute as appropriate.
1004   function attrFunction() {
1005     var x = value.apply(this, arguments);
1006     if (x == null) this.removeAttribute(name);
1007     else this.setAttribute(name, x);
1008   }
1009   function attrFunctionNS() {
1010     var x = value.apply(this, arguments);
1011     if (x == null) this.removeAttributeNS(name.space, name.local);
1012     else this.setAttributeNS(name.space, name.local, x);
1013   }
1014
1015   return value == null
1016       ? (name.local ? attrNullNS : attrNull) : (typeof value === "function"
1017       ? (name.local ? attrFunctionNS : attrFunction)
1018       : (name.local ? attrConstantNS : attrConstant));
1019 }
1020 function d3_collapse(s) {
1021   return s.trim().replace(/\s+/g, " ");
1022 }
1023
1024 d3_selectionPrototype.classed = function(name, value) {
1025   if (arguments.length < 2) {
1026
1027     // For classed(string), return true only if the first node has the specified
1028     // class or classes. Note that even if the browser supports DOMTokenList, it
1029     // probably doesn't support it on SVG elements (which can be animated).
1030     if (typeof name === "string") {
1031       var node = this.node(),
1032           n = (name = d3_selection_classes(name)).length,
1033           i = -1;
1034       if (value = node.classList) {
1035         while (++i < n) if (!value.contains(name[i])) return false;
1036       } else {
1037         value = node.getAttribute("class");
1038         while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
1039       }
1040       return true;
1041     }
1042
1043     // For classed(object), the object specifies the names of classes to add or
1044     // remove. The values may be functions that are evaluated for each element.
1045     for (value in name) this.each(d3_selection_classed(value, name[value]));
1046     return this;
1047   }
1048
1049   // Otherwise, both a name and a value are specified, and are handled as below.
1050   return this.each(d3_selection_classed(name, value));
1051 };
1052
1053 function d3_selection_classedRe(name) {
1054   return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
1055 }
1056
1057 function d3_selection_classes(name) {
1058   return (name + "").trim().split(/^|\s+/);
1059 }
1060
1061 // Multiple class names are allowed (e.g., "foo bar").
1062 function d3_selection_classed(name, value) {
1063   name = d3_selection_classes(name).map(d3_selection_classedName);
1064   var n = name.length;
1065
1066   function classedConstant() {
1067     var i = -1;
1068     while (++i < n) name[i](this, value);
1069   }
1070
1071   // When the value is a function, the function is still evaluated only once per
1072   // element even if there are multiple class names.
1073   function classedFunction() {
1074     var i = -1, x = value.apply(this, arguments);
1075     while (++i < n) name[i](this, x);
1076   }
1077
1078   return typeof value === "function"
1079       ? classedFunction
1080       : classedConstant;
1081 }
1082
1083 function d3_selection_classedName(name) {
1084   var re = d3_selection_classedRe(name);
1085   return function(node, value) {
1086     if (c = node.classList) return value ? c.add(name) : c.remove(name);
1087     var c = node.getAttribute("class") || "";
1088     if (value) {
1089       re.lastIndex = 0;
1090       if (!re.test(c)) node.setAttribute("class", d3_collapse(c + " " + name));
1091     } else {
1092       node.setAttribute("class", d3_collapse(c.replace(re, " ")));
1093     }
1094   };
1095 }
1096
1097 d3_selectionPrototype.style = function(name, value, priority) {
1098   var n = arguments.length;
1099   if (n < 3) {
1100
1101     // For style(object) or style(object, string), the object specifies the
1102     // names and values of the attributes to set or remove. The values may be
1103     // functions that are evaluated for each element. The optional string
1104     // specifies the priority.
1105     if (typeof name !== "string") {
1106       if (n < 2) value = "";
1107       for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
1108       return this;
1109     }
1110
1111     // For style(string), return the computed style value for the first node.
1112     if (n < 2) {
1113       var node = this.node();
1114       return d3_window(node).getComputedStyle(node, null).getPropertyValue(name);
1115     }
1116
1117     // For style(string, string) or style(string, function), use the default
1118     // priority. The priority is ignored for style(string, null).
1119     priority = "";
1120   }
1121
1122   // Otherwise, a name, value and priority are specified, and handled as below.
1123   return this.each(d3_selection_style(name, value, priority));
1124 };
1125
1126 function d3_selection_style(name, value, priority) {
1127
1128   // For style(name, null) or style(name, null, priority), remove the style
1129   // property with the specified name. The priority is ignored.
1130   function styleNull() {
1131     this.style.removeProperty(name);
1132   }
1133
1134   // For style(name, string) or style(name, string, priority), set the style
1135   // property with the specified name, using the specified priority.
1136   function styleConstant() {
1137     this.style.setProperty(name, value, priority);
1138   }
1139
1140   // For style(name, function) or style(name, function, priority), evaluate the
1141   // function for each element, and set or remove the style property as
1142   // appropriate. When setting, use the specified priority.
1143   function styleFunction() {
1144     var x = value.apply(this, arguments);
1145     if (x == null) this.style.removeProperty(name);
1146     else this.style.setProperty(name, x, priority);
1147   }
1148
1149   return value == null
1150       ? styleNull : (typeof value === "function"
1151       ? styleFunction : styleConstant);
1152 }
1153
1154 d3_selectionPrototype.property = function(name, value) {
1155   if (arguments.length < 2) {
1156
1157     // For property(string), return the property value for the first node.
1158     if (typeof name === "string") return this.node()[name];
1159
1160     // For property(object), the object specifies the names and values of the
1161     // properties to set or remove. The values may be functions that are
1162     // evaluated for each element.
1163     for (value in name) this.each(d3_selection_property(value, name[value]));
1164     return this;
1165   }
1166
1167   // Otherwise, both a name and a value are specified, and are handled as below.
1168   return this.each(d3_selection_property(name, value));
1169 };
1170
1171 function d3_selection_property(name, value) {
1172
1173   // For property(name, null), remove the property with the specified name.
1174   function propertyNull() {
1175     delete this[name];
1176   }
1177
1178   // For property(name, string), set the property with the specified name.
1179   function propertyConstant() {
1180     this[name] = value;
1181   }
1182
1183   // For property(name, function), evaluate the function for each element, and
1184   // set or remove the property as appropriate.
1185   function propertyFunction() {
1186     var x = value.apply(this, arguments);
1187     if (x == null) delete this[name];
1188     else this[name] = x;
1189   }
1190
1191   return value == null
1192       ? propertyNull : (typeof value === "function"
1193       ? propertyFunction : propertyConstant);
1194 }
1195
1196 d3_selectionPrototype.text = function(value) {
1197   return arguments.length
1198       ? this.each(typeof value === "function"
1199       ? function() { var v = value.apply(this, arguments); this.textContent = v == null ? "" : v; } : value == null
1200       ? function() { if (this.textContent !== "") this.textContent = ""; }
1201       : function() { if (this.textContent !== value) this.textContent = value; })
1202       : this.node().textContent;
1203 };
1204
1205 d3_selectionPrototype.html = function(value) {
1206   return arguments.length
1207       ? this.each(typeof value === "function"
1208       ? function() { var v = value.apply(this, arguments); this.innerHTML = v == null ? "" : v; } : value == null
1209       ? function() { this.innerHTML = ""; }
1210       : function() { this.innerHTML = value; })
1211       : this.node().innerHTML;
1212 };
1213
1214 d3_selectionPrototype.append = function(name) {
1215   name = d3_selection_creator(name);
1216   return this.select(function() {
1217     return this.appendChild(name.apply(this, arguments));
1218   });
1219 };
1220
1221 function d3_selection_creator(name) {
1222
1223   function create() {
1224     var document = this.ownerDocument,
1225         namespace = this.namespaceURI;
1226     return namespace
1227         ? document.createElementNS(namespace, name)
1228         : document.createElement(name);
1229   }
1230
1231   function createNS() {
1232     return this.ownerDocument.createElementNS(name.space, name.local);
1233   }
1234
1235   return typeof name === "function" ? name
1236       : (name = d3.ns.qualify(name)).local ? createNS
1237       : create;
1238 }
1239
1240 d3_selectionPrototype.insert = function(name, before) {
1241   name = d3_selection_creator(name);
1242   before = d3_selection_selector(before);
1243   return this.select(function() {
1244     return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
1245   });
1246 };
1247
1248 // TODO remove(selector)?
1249 // TODO remove(node)?
1250 // TODO remove(function)?
1251 d3_selectionPrototype.remove = function() {
1252   return this.each(d3_selectionRemove);
1253 };
1254
1255 function d3_selectionRemove() {
1256   var parent = this.parentNode;
1257   if (parent) parent.removeChild(this);
1258 }
1259
1260 d3_selectionPrototype.data = function(value, key) {
1261   var i = -1,
1262       n = this.length,
1263       group,
1264       node;
1265
1266   // If no value is specified, return the first value.
1267   if (!arguments.length) {
1268     value = new Array(n = (group = this[0]).length);
1269     while (++i < n) {
1270       if (node = group[i]) {
1271         value[i] = node.__data__;
1272       }
1273     }
1274     return value;
1275   }
1276
1277   function bind(group, groupData) {
1278     var i,
1279         n = group.length,
1280         m = groupData.length,
1281         n0 = Math.min(n, m),
1282         updateNodes = new Array(m),
1283         enterNodes = new Array(m),
1284         exitNodes = new Array(n),
1285         node,
1286         nodeData;
1287
1288     if (key) {
1289       var nodeByKeyValue = new d3_Map,
1290           keyValues = new Array(n),
1291           keyValue;
1292
1293       for (i = -1; ++i < n;) {
1294         if (nodeByKeyValue.has(keyValue = key.call(node = group[i], node.__data__, i))) {
1295           exitNodes[i] = node; // duplicate selection key
1296         } else {
1297           nodeByKeyValue.set(keyValue, node);
1298         }
1299         keyValues[i] = keyValue;
1300       }
1301
1302       for (i = -1; ++i < m;) {
1303         if (!(node = nodeByKeyValue.get(keyValue = key.call(groupData, nodeData = groupData[i], i)))) {
1304           enterNodes[i] = d3_selection_dataNode(nodeData);
1305         } else if (node !== true) { // no duplicate data key
1306           updateNodes[i] = node;
1307           node.__data__ = nodeData;
1308         }
1309         nodeByKeyValue.set(keyValue, true);
1310       }
1311
1312       for (i = -1; ++i < n;) {
1313         if (nodeByKeyValue.get(keyValues[i]) !== true) {
1314           exitNodes[i] = group[i];
1315         }
1316       }
1317     } else {
1318       for (i = -1; ++i < n0;) {
1319         node = group[i];
1320         nodeData = groupData[i];
1321         if (node) {
1322           node.__data__ = nodeData;
1323           updateNodes[i] = node;
1324         } else {
1325           enterNodes[i] = d3_selection_dataNode(nodeData);
1326         }
1327       }
1328       for (; i < m; ++i) {
1329         enterNodes[i] = d3_selection_dataNode(groupData[i]);
1330       }
1331       for (; i < n; ++i) {
1332         exitNodes[i] = group[i];
1333       }
1334     }
1335
1336     enterNodes.update
1337         = updateNodes;
1338
1339     enterNodes.parentNode
1340         = updateNodes.parentNode
1341         = exitNodes.parentNode
1342         = group.parentNode;
1343
1344     enter.push(enterNodes);
1345     update.push(updateNodes);
1346     exit.push(exitNodes);
1347   }
1348
1349   var enter = d3_selection_enter([]),
1350       update = d3_selection([]),
1351       exit = d3_selection([]);
1352
1353   if (typeof value === "function") {
1354     while (++i < n) {
1355       bind(group = this[i], value.call(group, group.parentNode.__data__, i));
1356     }
1357   } else {
1358     while (++i < n) {
1359       bind(group = this[i], value);
1360     }
1361   }
1362
1363   update.enter = function() { return enter; };
1364   update.exit = function() { return exit; };
1365   return update;
1366 };
1367
1368 function d3_selection_dataNode(data) {
1369   return {__data__: data};
1370 }
1371
1372 d3_selectionPrototype.datum = function(value) {
1373   return arguments.length
1374       ? this.property("__data__", value)
1375       : this.property("__data__");
1376 };
1377
1378 d3_selectionPrototype.filter = function(filter) {
1379   var subgroups = [],
1380       subgroup,
1381       group,
1382       node;
1383
1384   if (typeof filter !== "function") filter = d3_selection_filter(filter);
1385
1386   for (var j = 0, m = this.length; j < m; j++) {
1387     subgroups.push(subgroup = []);
1388     subgroup.parentNode = (group = this[j]).parentNode;
1389     for (var i = 0, n = group.length; i < n; i++) {
1390       if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
1391         subgroup.push(node);
1392       }
1393     }
1394   }
1395
1396   return d3_selection(subgroups);
1397 };
1398
1399 function d3_selection_filter(selector) {
1400   return function() {
1401     return d3_selectMatches(this, selector);
1402   };
1403 }
1404
1405 d3_selectionPrototype.order = function() {
1406   for (var j = -1, m = this.length; ++j < m;) {
1407     for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0;) {
1408       if (node = group[i]) {
1409         if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
1410         next = node;
1411       }
1412     }
1413   }
1414   return this;
1415 };
1416
1417 d3_selectionPrototype.sort = function(comparator) {
1418   comparator = d3_selection_sortComparator.apply(this, arguments);
1419   for (var j = -1, m = this.length; ++j < m;) this[j].sort(comparator);
1420   return this.order();
1421 };
1422
1423 function d3_selection_sortComparator(comparator) {
1424   if (!arguments.length) comparator = d3_ascending;
1425   return function(a, b) {
1426     return a && b ? comparator(a.__data__, b.__data__) : !a - !b;
1427   };
1428 }
1429
1430 d3_selectionPrototype.each = function(callback) {
1431   return d3_selection_each(this, function(node, i, j) {
1432     callback.call(node, node.__data__, i, j);
1433   });
1434 };
1435
1436 function d3_selection_each(groups, callback) {
1437   for (var j = 0, m = groups.length; j < m; j++) {
1438     for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
1439       if (node = group[i]) callback(node, i, j);
1440     }
1441   }
1442   return groups;
1443 }
1444
1445 d3_selectionPrototype.call = function(callback) {
1446   var args = d3_array(arguments);
1447   callback.apply(args[0] = this, args);
1448   return this;
1449 };
1450
1451 d3_selectionPrototype.empty = function() {
1452   return !this.node();
1453 };
1454
1455 d3_selectionPrototype.node = function() {
1456   for (var j = 0, m = this.length; j < m; j++) {
1457     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
1458       var node = group[i];
1459       if (node) return node;
1460     }
1461   }
1462   return null;
1463 };
1464
1465 d3_selectionPrototype.size = function() {
1466   var n = 0;
1467   d3_selection_each(this, function() { ++n; });
1468   return n;
1469 };
1470
1471 function d3_selection_enter(selection) {
1472   d3_subclass(selection, d3_selection_enterPrototype);
1473   return selection;
1474 }
1475
1476 var d3_selection_enterPrototype = [];
1477
1478 d3.selection.enter = d3_selection_enter;
1479 d3.selection.enter.prototype = d3_selection_enterPrototype;
1480
1481 d3_selection_enterPrototype.append = d3_selectionPrototype.append;
1482 d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
1483 d3_selection_enterPrototype.node = d3_selectionPrototype.node;
1484 d3_selection_enterPrototype.call = d3_selectionPrototype.call;
1485 d3_selection_enterPrototype.size = d3_selectionPrototype.size;
1486
1487
1488 d3_selection_enterPrototype.select = function(selector) {
1489   var subgroups = [],
1490       subgroup,
1491       subnode,
1492       upgroup,
1493       group,
1494       node;
1495
1496   for (var j = -1, m = this.length; ++j < m;) {
1497     upgroup = (group = this[j]).update;
1498     subgroups.push(subgroup = []);
1499     subgroup.parentNode = group.parentNode;
1500     for (var i = -1, n = group.length; ++i < n;) {
1501       if (node = group[i]) {
1502         subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i, j));
1503         subnode.__data__ = node.__data__;
1504       } else {
1505         subgroup.push(null);
1506       }
1507     }
1508   }
1509
1510   return d3_selection(subgroups);
1511 };
1512
1513 d3_selection_enterPrototype.insert = function(name, before) {
1514   if (arguments.length < 2) before = d3_selection_enterInsertBefore(this);
1515   return d3_selectionPrototype.insert.call(this, name, before);
1516 };
1517
1518 function d3_selection_enterInsertBefore(enter) {
1519   var i0, j0;
1520   return function(d, i, j) {
1521     var group = enter[j].update,
1522         n = group.length,
1523         node;
1524     if (j != j0) j0 = j, i0 = 0;
1525     if (i >= i0) i0 = i + 1;
1526     while (!(node = group[i0]) && ++i0 < n);
1527     return node;
1528   };
1529 }
1530
1531 // TODO fast singleton implementation?
1532 d3.select = function(node) {
1533   var group;
1534   if (typeof node === "string") {
1535     group = [d3_select(node, d3_document)];
1536     group.parentNode = d3_document.documentElement;
1537   } else {
1538     group = [node];
1539     group.parentNode = d3_documentElement(node);
1540   }
1541   return d3_selection([group]);
1542 };
1543
1544 d3.selectAll = function(nodes) {
1545   var group;
1546   if (typeof nodes === "string") {
1547     group = d3_array(d3_selectAll(nodes, d3_document));
1548     group.parentNode = d3_document.documentElement;
1549   } else {
1550     group = nodes;
1551     group.parentNode = null;
1552   }
1553   return d3_selection([group]);
1554 };
1555
1556 d3_selectionPrototype.on = function(type, listener, capture) {
1557   var n = arguments.length;
1558   if (n < 3) {
1559
1560     // For on(object) or on(object, boolean), the object specifies the event
1561     // types and listeners to add or remove. The optional boolean specifies
1562     // whether the listener captures events.
1563     if (typeof type !== "string") {
1564       if (n < 2) listener = false;
1565       for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
1566       return this;
1567     }
1568
1569     // For on(string), return the listener for the first node.
1570     if (n < 2) return (n = this.node()["__on" + type]) && n._;
1571
1572     // For on(string, function), use the default capture.
1573     capture = false;
1574   }
1575
1576   // Otherwise, a type, listener and capture are specified, and handled as below.
1577   return this.each(d3_selection_on(type, listener, capture));
1578 };
1579
1580 function d3_selection_on(type, listener, capture) {
1581   var name = "__on" + type,
1582       i = type.indexOf("."),
1583       wrap = d3_selection_onListener;
1584
1585   if (i > 0) type = type.slice(0, i);
1586   var filter = d3_selection_onFilters.get(type);
1587   if (filter) type = filter, wrap = d3_selection_onFilter;
1588
1589   function onRemove() {
1590     var l = this[name];
1591     if (l) {
1592       this.removeEventListener(type, l, l.$);
1593       delete this[name];
1594     }
1595   }
1596
1597   function onAdd() {
1598     var l = wrap(listener, d3_array(arguments));
1599     if (typeof Raven !== 'undefined') l = Raven.wrap(l);
1600     onRemove.call(this);
1601     this.addEventListener(type, this[name] = l, l.$ = capture);
1602     l._ = listener;
1603   }
1604
1605   function removeAll() {
1606     var re = new RegExp("^__on([^.]+)" + d3.requote(type) + "$"),
1607         match;
1608     for (var name in this) {
1609       if (match = name.match(re)) {
1610         var l = this[name];
1611         this.removeEventListener(match[1], l, l.$);
1612         delete this[name];
1613       }
1614     }
1615   }
1616
1617   return i
1618       ? listener ? onAdd : onRemove
1619       : listener ? d3_noop : removeAll;
1620 }
1621
1622 var d3_selection_onFilters = d3.map({
1623   mouseenter: "mouseover",
1624   mouseleave: "mouseout"
1625 });
1626
1627 if (d3_document) {
1628   d3_selection_onFilters.forEach(function(k) {
1629     if ("on" + k in d3_document) d3_selection_onFilters.remove(k);
1630   });
1631 }
1632
1633 function d3_selection_onListener(listener, argumentz) {
1634   return function(e) {
1635     var o = d3.event; // Events can be reentrant (e.g., focus).
1636     d3.event = e;
1637     argumentz[0] = this.__data__;
1638     try {
1639       listener.apply(this, argumentz);
1640     } finally {
1641       d3.event = o;
1642     }
1643   };
1644 }
1645
1646 function d3_selection_onFilter(listener, argumentz) {
1647   var l = d3_selection_onListener(listener, argumentz);
1648   return function(e) {
1649     var target = this, related = e.relatedTarget;
1650     if (!related || (related !== target && !(related.compareDocumentPosition(target) & 8))) {
1651       l.call(target, e);
1652     }
1653   };
1654 }
1655
1656 var d3_event_dragSelect,
1657     d3_event_dragId = 0;
1658
1659 function d3_event_dragSuppress(node) {
1660   var name = ".dragsuppress-" + ++d3_event_dragId,
1661       click = "click" + name,
1662       w = d3.select(d3_window(node))
1663           .on("touchmove" + name, d3_eventPreventDefault)
1664           .on("dragstart" + name, d3_eventPreventDefault)
1665           .on("selectstart" + name, d3_eventPreventDefault);
1666
1667   if (d3_event_dragSelect == null) {
1668     d3_event_dragSelect = "onselectstart" in node ? false
1669         : d3_vendorSymbol(node.style, "userSelect");
1670   }
1671
1672   if (d3_event_dragSelect) {
1673     var style = d3_documentElement(node).style,
1674         select = style[d3_event_dragSelect];
1675     style[d3_event_dragSelect] = "none";
1676   }
1677
1678   return function(suppressClick) {
1679     w.on(name, null);
1680     if (d3_event_dragSelect) style[d3_event_dragSelect] = select;
1681     if (suppressClick) { // suppress the next click, but only if it’s immediate
1682       var off = function() { w.on(click, null); };
1683       w.on(click, function() { d3_eventCancel(); off(); }, true);
1684       setTimeout(off, 0);
1685     }
1686   };
1687 }
1688
1689 d3.mouse = function(container) {
1690   return d3_mousePoint(container, d3_eventSource());
1691 };
1692
1693 // https://bugs.webkit.org/show_bug.cgi?id=44083
1694 var d3_mouse_bug44083 = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
1695
1696 function d3_mousePoint(container, e) {
1697   if (e.changedTouches) e = e.changedTouches[0];
1698   var svg = container.ownerSVGElement || container;
1699   if (svg.createSVGPoint) {
1700     var point = svg.createSVGPoint();
1701     if (d3_mouse_bug44083 < 0) {
1702       var window = d3_window(container);
1703       if (window.scrollX || window.scrollY) {
1704         svg = d3.select("body").append("svg").style({
1705           position: "absolute",
1706           top: 0,
1707           left: 0,
1708           margin: 0,
1709           padding: 0,
1710           border: "none"
1711         }, "important");
1712         var ctm = svg[0][0].getScreenCTM();
1713         d3_mouse_bug44083 = !(ctm.f || ctm.e);
1714         svg.remove();
1715       }
1716     }
1717     if (d3_mouse_bug44083) point.x = e.pageX, point.y = e.pageY;
1718     else point.x = e.clientX, point.y = e.clientY;
1719     point = point.matrixTransform(container.getScreenCTM().inverse());
1720     return [point.x, point.y];
1721   }
1722   var rect = container.getBoundingClientRect();
1723   return [e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop];
1724 };
1725
1726 d3.touches = function(container, touches) {
1727   if (arguments.length < 2) touches = d3_eventSource().touches;
1728   return touches ? d3_array(touches).map(function(touch) {
1729     var point = d3_mousePoint(container, touch);
1730     point.identifier = touch.identifier;
1731     return point;
1732   }) : [];
1733 };
1734 var ε = 1e-6,
1735     ε2 = ε * ε,
1736     π = Math.PI,
1737     τ = 2 * π,
1738     τε = τ - ε,
1739     halfπ = π / 2,
1740     d3_radians = π / 180,
1741     d3_degrees = 180 / π;
1742
1743 function d3_sgn(x) {
1744   return x > 0 ? 1 : x < 0 ? -1 : 0;
1745 }
1746
1747 // Returns the 2D cross product of AB and AC vectors, i.e., the z-component of
1748 // the 3D cross product in a quadrant I Cartesian coordinate system (+x is
1749 // right, +y is up). Returns a positive value if ABC is counter-clockwise,
1750 // negative if clockwise, and zero if the points are collinear.
1751 function d3_cross2d(a, b, c) {
1752   return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);
1753 }
1754
1755 function d3_acos(x) {
1756   return x > 1 ? 0 : x < -1 ? π : Math.acos(x);
1757 }
1758
1759 function d3_asin(x) {
1760   return x > 1 ? halfπ : x < -1 ? -halfπ : Math.asin(x);
1761 }
1762
1763 function d3_sinh(x) {
1764   return ((x = Math.exp(x)) - 1 / x) / 2;
1765 }
1766
1767 function d3_cosh(x) {
1768   return ((x = Math.exp(x)) + 1 / x) / 2;
1769 }
1770
1771 function d3_tanh(x) {
1772   return ((x = Math.exp(2 * x)) - 1) / (x + 1);
1773 }
1774
1775 function d3_haversin(x) {
1776   return (x = Math.sin(x / 2)) * x;
1777 }
1778
1779 var ρ = Math.SQRT2,
1780     ρ2 = 2,
1781     ρ4 = 4;
1782
1783 // p0 = [ux0, uy0, w0]
1784 // p1 = [ux1, uy1, w1]
1785 d3.interpolateZoom = function(p0, p1) {
1786   var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],
1787       ux1 = p1[0], uy1 = p1[1], w1 = p1[2];
1788
1789   var dx = ux1 - ux0,
1790       dy = uy1 - uy0,
1791       d2 = dx * dx + dy * dy,
1792       d1 = Math.sqrt(d2),
1793       b0 = (w1 * w1 - w0 * w0 + ρ4 * d2) / (2 * w0 * ρ2 * d1),
1794       b1 = (w1 * w1 - w0 * w0 - ρ4 * d2) / (2 * w1 * ρ2 * d1),
1795       r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),
1796       r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1),
1797       dr = r1 - r0,
1798       S = (dr || Math.log(w1 / w0)) / ρ;
1799
1800   function interpolate(t) {
1801     var s = t * S;
1802     if (dr) {
1803       // General case.
1804       var coshr0 = d3_cosh(r0),
1805           u = w0 / (ρ2 * d1) * (coshr0 * d3_tanh(ρ * s + r0) - d3_sinh(r0));
1806       return [
1807         ux0 + u * dx,
1808         uy0 + u * dy,
1809         w0 * coshr0 / d3_cosh(ρ * s + r0)
1810       ];
1811     }
1812     // Special case for u0 ~= u1.
1813     return [
1814       ux0 + t * dx,
1815       uy0 + t * dy,
1816       w0 * Math.exp(ρ * s)
1817     ];
1818   }
1819
1820   interpolate.duration = S * 1000;
1821
1822   return interpolate;
1823 };
1824
1825 d3.behavior.zoom = function() {
1826   var view = {x: 0, y: 0, k: 1},
1827       translate0, // translate when we started zooming (to avoid drift)
1828       center0, // implicit desired position of translate0 after zooming
1829       center, // explicit desired position of translate0 after zooming
1830       size = [960, 500], // viewport size; required for zoom interpolation
1831       scaleExtent = d3_behavior_zoomInfinity,
1832       duration = 250,
1833       zooming = 0,
1834       mousedown = "mousedown.zoom",
1835       mousemove = "mousemove.zoom",
1836       mouseup = "mouseup.zoom",
1837       mousewheelTimer,
1838       touchstart = "touchstart.zoom",
1839       touchtime, // time of last touchstart (to detect double-tap)
1840       event = d3_eventDispatch(zoom, "zoomstart", "zoom", "zoomend"),
1841       x0,
1842       x1,
1843       y0,
1844       y1;
1845
1846   // Lazily determine the DOM’s support for Wheel events.
1847   // https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/wheel
1848   if (!d3_behavior_zoomWheel) {
1849     d3_behavior_zoomWheel = "onwheel" in d3_document ? (d3_behavior_zoomDelta = function() { return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1); }, "wheel")
1850         : "onmousewheel" in d3_document ? (d3_behavior_zoomDelta = function() { return d3.event.wheelDelta; }, "mousewheel")
1851         : (d3_behavior_zoomDelta = function() { return -d3.event.detail; }, "MozMousePixelScroll");
1852   }
1853
1854   function zoom(g) {
1855     g   .on(mousedown, mousedowned)
1856         .on(d3_behavior_zoomWheel + ".zoom", mousewheeled)
1857         .on("dblclick.zoom", dblclicked)
1858         .on(touchstart, touchstarted);
1859   }
1860
1861   zoom.event = function(g) {
1862     g.each(function() {
1863       var dispatch = event.of(this, arguments),
1864           view1 = view;
1865       if (d3_transitionInheritId) {
1866         d3.select(this).transition()
1867             .each("start.zoom", function() {
1868               view = this.__chart__ || {x: 0, y: 0, k: 1}; // pre-transition state
1869               zoomstarted(dispatch);
1870             })
1871             .tween("zoom:zoom", function() {
1872               var dx = size[0],
1873                   dy = size[1],
1874                   cx = center0 ? center0[0] : dx / 2,
1875                   cy = center0 ? center0[1] : dy / 2,
1876                   i = d3.interpolateZoom(
1877                     [(cx - view.x) / view.k, (cy - view.y) / view.k, dx / view.k],
1878                     [(cx - view1.x) / view1.k, (cy - view1.y) / view1.k, dx / view1.k]
1879                   );
1880               return function(t) {
1881                 var l = i(t), k = dx / l[2];
1882                 this.__chart__ = view = {x: cx - l[0] * k, y: cy - l[1] * k, k: k};
1883                 zoomed(dispatch);
1884               };
1885             })
1886             .each("interrupt.zoom", function() {
1887               zoomended(dispatch);
1888             })
1889             .each("end.zoom", function() {
1890               zoomended(dispatch);
1891             });
1892       } else {
1893         this.__chart__ = view;
1894         zoomstarted(dispatch);
1895         zoomed(dispatch);
1896         zoomended(dispatch);
1897       }
1898     });
1899   }
1900
1901   zoom.translate = function(_) {
1902     if (!arguments.length) return [view.x, view.y];
1903     view = {x: +_[0], y: +_[1], k: view.k}; // copy-on-write
1904     rescale();
1905     return zoom;
1906   };
1907
1908   zoom.scale = function(_) {
1909     if (!arguments.length) return view.k;
1910     view = {x: view.x, y: view.y, k: +_}; // copy-on-write
1911     rescale();
1912     return zoom;
1913   };
1914
1915   zoom.scaleExtent = function(_) {
1916     if (!arguments.length) return scaleExtent;
1917     scaleExtent = _ == null ? d3_behavior_zoomInfinity : [+_[0], +_[1]];
1918     return zoom;
1919   };
1920
1921   zoom.center = function(_) {
1922     if (!arguments.length) return center;
1923     center = _ && [+_[0], +_[1]];
1924     return zoom;
1925   };
1926
1927   zoom.size = function(_) {
1928     if (!arguments.length) return size;
1929     size = _ && [+_[0], +_[1]];
1930     return zoom;
1931   };
1932
1933   zoom.duration = function(_) {
1934     if (!arguments.length) return duration;
1935     duration = +_; // TODO function based on interpolateZoom distance?
1936     return zoom;
1937   };
1938
1939   zoom.x = function(z) {
1940     if (!arguments.length) return x1;
1941     x1 = z;
1942     x0 = z.copy();
1943     view = {x: 0, y: 0, k: 1}; // copy-on-write
1944     return zoom;
1945   };
1946
1947   zoom.y = function(z) {
1948     if (!arguments.length) return y1;
1949     y1 = z;
1950     y0 = z.copy();
1951     view = {x: 0, y: 0, k: 1}; // copy-on-write
1952     return zoom;
1953   };
1954
1955   function location(p) {
1956     return [(p[0] - view.x) / view.k, (p[1] - view.y) / view.k];
1957   }
1958
1959   function point(l) {
1960     return [l[0] * view.k + view.x, l[1] * view.k + view.y];
1961   }
1962
1963   function scaleTo(s) {
1964     view.k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
1965   }
1966
1967   function translateTo(p, l) {
1968     l = point(l);
1969     view.x += p[0] - l[0];
1970     view.y += p[1] - l[1];
1971   }
1972
1973   function zoomTo(that, p, l, k) {
1974     that.__chart__ = {x: view.x, y: view.y, k: view.k};
1975
1976     scaleTo(Math.pow(2, k));
1977     translateTo(center0 = p, l);
1978
1979     that = d3.select(that);
1980     if (duration > 0) that = that.transition().duration(duration);
1981     that.call(zoom.event);
1982   }
1983
1984   function rescale() {
1985     if (x1) x1.domain(x0.range().map(function(x) { return (x - view.x) / view.k; }).map(x0.invert));
1986     if (y1) y1.domain(y0.range().map(function(y) { return (y - view.y) / view.k; }).map(y0.invert));
1987   }
1988
1989   function zoomstarted(dispatch) {
1990     if (!zooming++) dispatch({type: "zoomstart"});
1991   }
1992
1993   function zoomed(dispatch) {
1994     rescale();
1995     dispatch({type: "zoom", scale: view.k, translate: [view.x, view.y]});
1996   }
1997
1998   function zoomended(dispatch) {
1999     if (!--zooming) dispatch({type: "zoomend"});
2000     center0 = null;
2001   }
2002
2003   function mousedowned() {
2004     var that = this,
2005         target = d3.event.target,
2006         dispatch = event.of(that, arguments),
2007         dragged = 0,
2008         subject = d3.select(d3_window(that)).on(mousemove, moved).on(mouseup, ended),
2009         location0 = location(d3.mouse(that)),
2010         dragRestore = d3_event_dragSuppress(that);
2011
2012     d3_selection_interrupt.call(that);
2013     zoomstarted(dispatch);
2014
2015     function moved() {
2016       dragged = 1;
2017       translateTo(d3.mouse(that), location0);
2018       zoomed(dispatch);
2019     }
2020
2021     function ended() {
2022       subject.on(mousemove, null).on(mouseup, null);
2023       dragRestore(dragged && d3.event.target === target);
2024       zoomended(dispatch);
2025     }
2026   }
2027
2028   // These closures persist for as long as at least one touch is active.
2029   function touchstarted() {
2030     var that = this,
2031         dispatch = event.of(that, arguments),
2032         locations0 = {}, // touchstart locations
2033         distance0 = 0, // distance² between initial touches
2034         scale0, // scale when we started touching
2035         zoomName = ".zoom-" + d3.event.changedTouches[0].identifier,
2036         touchmove = "touchmove" + zoomName,
2037         touchend = "touchend" + zoomName,
2038         targets = [],
2039         subject = d3.select(that),
2040         dragRestore = d3_event_dragSuppress(that);
2041
2042     started();
2043     zoomstarted(dispatch);
2044
2045     // Workaround for Chrome issue 412723: the touchstart listener must be set
2046     // after the touchmove listener.
2047     subject.on(mousedown, null).on(touchstart, started); // prevent duplicate events
2048
2049     // Updates locations of any touches in locations0.
2050     function relocate() {
2051       var touches = d3.touches(that);
2052       scale0 = view.k;
2053       touches.forEach(function(t) {
2054         if (t.identifier in locations0) locations0[t.identifier] = location(t);
2055       });
2056       return touches;
2057     }
2058
2059     // Temporarily override touchstart while gesture is active.
2060     function started() {
2061
2062       // Listen for touchmove and touchend on the target of touchstart.
2063       var target = d3.event.target;
2064       d3.select(target).on(touchmove, moved).on(touchend, ended);
2065       targets.push(target);
2066
2067       // Only track touches started on the same subject element.
2068       var changed = d3.event.changedTouches;
2069       for (var i = 0, n = changed.length; i < n; ++i) {
2070         locations0[changed[i].identifier] = null;
2071       }
2072
2073       var touches = relocate(),
2074           now = Date.now();
2075
2076       if (touches.length === 1) {
2077         if (now - touchtime < 500) { // dbltap
2078           var p = touches[0];
2079           zoomTo(that, p, locations0[p.identifier], Math.floor(Math.log(view.k) / Math.LN2) + 1);
2080           d3_eventPreventDefault();
2081         }
2082         touchtime = now;
2083       } else if (touches.length > 1) {
2084         var p = touches[0], q = touches[1],
2085             dx = p[0] - q[0], dy = p[1] - q[1];
2086         distance0 = dx * dx + dy * dy;
2087       }
2088     }
2089
2090     function moved() {
2091       var touches = d3.touches(that),
2092           p0, l0,
2093           p1, l1;
2094
2095       d3_selection_interrupt.call(that);
2096
2097       for (var i = 0, n = touches.length; i < n; ++i, l1 = null) {
2098         p1 = touches[i];
2099         if (l1 = locations0[p1.identifier]) {
2100           if (l0) break;
2101           p0 = p1, l0 = l1;
2102         }
2103       }
2104
2105       if (l1) {
2106         var distance1 = (distance1 = p1[0] - p0[0]) * distance1 + (distance1 = p1[1] - p0[1]) * distance1,
2107             scale1 = distance0 && Math.sqrt(distance1 / distance0);
2108         p0 = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];
2109         l0 = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];
2110         scaleTo(scale1 * scale0);
2111       }
2112
2113       touchtime = null;
2114       translateTo(p0, l0);
2115       zoomed(dispatch);
2116     }
2117
2118     function ended() {
2119       // If there are any globally-active touches remaining, remove the ended
2120       // touches from locations0.
2121       if (d3.event.touches.length) {
2122         var changed = d3.event.changedTouches;
2123         for (var i = 0, n = changed.length; i < n; ++i) {
2124           delete locations0[changed[i].identifier];
2125         }
2126         // If locations0 is not empty, then relocate and continue listening for
2127         // touchmove and touchend.
2128         for (var identifier in locations0) {
2129           return void relocate(); // locations may have detached due to rotation
2130         }
2131       }
2132       // Otherwise, remove touchmove and touchend listeners.
2133       d3.selectAll(targets).on(zoomName, null);
2134       subject.on(mousedown, mousedowned).on(touchstart, touchstarted);
2135       dragRestore();
2136       zoomended(dispatch);
2137     }
2138   }
2139
2140   function mousewheeled() {
2141     var dispatch = event.of(this, arguments);
2142     if (mousewheelTimer) clearTimeout(mousewheelTimer);
2143     else translate0 = location(center0 = center || d3.mouse(this)), d3_selection_interrupt.call(this), zoomstarted(dispatch);
2144     mousewheelTimer = setTimeout(function() { mousewheelTimer = null; zoomended(dispatch); }, 50);
2145     d3_eventPreventDefault();
2146     scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * view.k);
2147     translateTo(center0, translate0);
2148     zoomed(dispatch);
2149   }
2150
2151   function dblclicked() {
2152     var p = d3.mouse(this),
2153         k = Math.log(view.k) / Math.LN2;
2154
2155     zoomTo(this, p, location(p), d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1);
2156   }
2157
2158   return d3.rebind(zoom, event, "on");
2159 };
2160
2161 var d3_behavior_zoomInfinity = [0, Infinity], // default scale extent
2162     d3_behavior_zoomDelta, // initialized lazily
2163     d3_behavior_zoomWheel;
2164 function d3_functor(v) {
2165   return typeof v === "function" ? v : function() { return v; };
2166 }
2167
2168 d3.functor = d3_functor;
2169
2170 d3.touch = function(container, touches, identifier) {
2171   if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches;
2172   if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) {
2173     if ((touch = touches[i]).identifier === identifier) {
2174       return d3_mousePoint(container, touch);
2175     }
2176   }
2177 };
2178
2179 var d3_timer_queueHead,
2180     d3_timer_queueTail,
2181     d3_timer_interval, // is an interval (or frame) active?
2182     d3_timer_timeout, // is a timeout active?
2183     d3_timer_active, // active timer object
2184     d3_timer_frame = this[d3_vendorSymbol(this, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); };
2185
2186 // The timer will continue to fire until callback returns true.
2187 d3.timer = function(callback, delay, then) {
2188   var n = arguments.length;
2189   if (n < 2) delay = 0;
2190   if (n < 3) then = Date.now();
2191
2192   // Add the callback to the tail of the queue.
2193   var time = then + delay, timer = {c: callback, t: time, f: false, n: null};
2194   if (d3_timer_queueTail) d3_timer_queueTail.n = timer;
2195   else d3_timer_queueHead = timer;
2196   d3_timer_queueTail = timer;
2197
2198   // Start animatin'!
2199   if (!d3_timer_interval) {
2200     d3_timer_timeout = clearTimeout(d3_timer_timeout);
2201     d3_timer_interval = 1;
2202     d3_timer_frame(d3_timer_step);
2203   }
2204 };
2205
2206 function d3_timer_step() {
2207   var now = d3_timer_mark(),
2208       delay = d3_timer_sweep() - now;
2209   if (delay > 24) {
2210     if (isFinite(delay)) {
2211       clearTimeout(d3_timer_timeout);
2212       d3_timer_timeout = setTimeout(d3_timer_step, delay);
2213     }
2214     d3_timer_interval = 0;
2215   } else {
2216     d3_timer_interval = 1;
2217     d3_timer_frame(d3_timer_step);
2218   }
2219 }
2220
2221 d3.timer.flush = function() {
2222   d3_timer_mark();
2223   d3_timer_sweep();
2224 };
2225
2226 function d3_timer_mark() {
2227   var now = Date.now();
2228   d3_timer_active = d3_timer_queueHead;
2229   while (d3_timer_active) {
2230     if (now >= d3_timer_active.t) d3_timer_active.f = d3_timer_active.c(now - d3_timer_active.t);
2231     d3_timer_active = d3_timer_active.n;
2232   }
2233   return now;
2234 }
2235
2236 // Flush after callbacks to avoid concurrent queue modification.
2237 // Returns the time of the earliest active timer, post-sweep.
2238 function d3_timer_sweep() {
2239   var t0,
2240       t1 = d3_timer_queueHead,
2241       time = Infinity;
2242   while (t1) {
2243     if (t1.f) {
2244       t1 = t0 ? t0.n = t1.n : d3_timer_queueHead = t1.n;
2245     } else {
2246       if (t1.t < time) time = t1.t;
2247       t1 = (t0 = t1).n;
2248     }
2249   }
2250   d3_timer_queueTail = t0;
2251   return time;
2252 }
2253 d3.geo = {};
2254
2255 d3.geo.stream = function(object, listener) {
2256   if (object && d3_geo_streamObjectType.hasOwnProperty(object.type)) {
2257     d3_geo_streamObjectType[object.type](object, listener);
2258   } else {
2259     d3_geo_streamGeometry(object, listener);
2260   }
2261 };
2262
2263 function d3_geo_streamGeometry(geometry, listener) {
2264   if (geometry && d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
2265     d3_geo_streamGeometryType[geometry.type](geometry, listener);
2266   }
2267 }
2268
2269 var d3_geo_streamObjectType = {
2270   Feature: function(feature, listener) {
2271     d3_geo_streamGeometry(feature.geometry, listener);
2272   },
2273   FeatureCollection: function(object, listener) {
2274     var features = object.features, i = -1, n = features.length;
2275     while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
2276   }
2277 };
2278
2279 var d3_geo_streamGeometryType = {
2280   Sphere: function(object, listener) {
2281     listener.sphere();
2282   },
2283   Point: function(object, listener) {
2284     object = object.coordinates;
2285     listener.point(object[0], object[1], object[2]);
2286   },
2287   MultiPoint: function(object, listener) {
2288     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2289     while (++i < n) object = coordinates[i], listener.point(object[0], object[1], object[2]);
2290   },
2291   LineString: function(object, listener) {
2292     d3_geo_streamLine(object.coordinates, listener, 0);
2293   },
2294   MultiLineString: function(object, listener) {
2295     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2296     while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
2297   },
2298   Polygon: function(object, listener) {
2299     d3_geo_streamPolygon(object.coordinates, listener);
2300   },
2301   MultiPolygon: function(object, listener) {
2302     var coordinates = object.coordinates, i = -1, n = coordinates.length;
2303     while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
2304   },
2305   GeometryCollection: function(object, listener) {
2306     var geometries = object.geometries, i = -1, n = geometries.length;
2307     while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
2308   }
2309 };
2310
2311 function d3_geo_streamLine(coordinates, listener, closed) {
2312   var i = -1, n = coordinates.length - closed, coordinate;
2313   listener.lineStart();
2314   while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1], coordinate[2]);
2315   listener.lineEnd();
2316 }
2317
2318 function d3_geo_streamPolygon(coordinates, listener) {
2319   var i = -1, n = coordinates.length;
2320   listener.polygonStart();
2321   while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
2322   listener.polygonEnd();
2323 }
2324
2325 d3.geo.length = function(object) {
2326   d3_geo_lengthSum = 0;
2327   d3.geo.stream(object, d3_geo_length);
2328   return d3_geo_lengthSum;
2329 };
2330
2331 var d3_geo_lengthSum;
2332
2333 var d3_geo_length = {
2334   sphere: d3_noop,
2335   point: d3_noop,
2336   lineStart: d3_geo_lengthLineStart,
2337   lineEnd: d3_noop,
2338   polygonStart: d3_noop,
2339   polygonEnd: d3_noop
2340 };
2341
2342 function d3_geo_lengthLineStart() {
2343   var λ0, sinφ0, cosφ0;
2344
2345   d3_geo_length.point = function(λ, φ) {
2346     λ0 = λ * d3_radians, sinφ0 = Math.sin(φ *= d3_radians), cosφ0 = Math.cos(φ);
2347     d3_geo_length.point = nextPoint;
2348   };
2349
2350   d3_geo_length.lineEnd = function() {
2351     d3_geo_length.point = d3_geo_length.lineEnd = d3_noop;
2352   };
2353
2354   function nextPoint(λ, φ) {
2355     var sinφ = Math.sin(φ *= d3_radians),
2356         cosφ = Math.cos(φ),
2357         t = abs((λ *= d3_radians) - λ0),
2358         cosΔλ = Math.cos(t);
2359     d3_geo_lengthSum += Math.atan2(Math.sqrt((t = cosφ * Math.sin(t)) * t + (t = cosφ0 * sinφ - sinφ0 * cosφ * cosΔλ) * t), sinφ0 * sinφ + cosφ0 * cosφ * cosΔλ);
2360     λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ;
2361   }
2362 }
2363 function d3_identity(d) {
2364   return d;
2365 }
2366 function d3_true() {
2367   return true;
2368 }
2369
2370 function d3_geo_spherical(cartesian) {
2371   return [
2372     Math.atan2(cartesian[1], cartesian[0]),
2373     d3_asin(cartesian[2])
2374   ];
2375 }
2376
2377 function d3_geo_sphericalEqual(a, b) {
2378   return abs(a[0] - b[0]) < ε && abs(a[1] - b[1]) < ε;
2379 }
2380
2381 // General spherical polygon clipping algorithm: takes a polygon, cuts it into
2382 // visible line segments and rejoins the segments by interpolating along the
2383 // clip edge.
2384 function d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener) {
2385   var subject = [],
2386       clip = [];
2387
2388   segments.forEach(function(segment) {
2389     if ((n = segment.length - 1) <= 0) return;
2390     var n, p0 = segment[0], p1 = segment[n];
2391
2392     // If the first and last points of a segment are coincident, then treat as
2393     // a closed ring.
2394     // TODO if all rings are closed, then the winding order of the exterior
2395     // ring should be checked.
2396     if (d3_geo_sphericalEqual(p0, p1)) {
2397       listener.lineStart();
2398       for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
2399       listener.lineEnd();
2400       return;
2401     }
2402
2403     var a = new d3_geo_clipPolygonIntersection(p0, segment, null, true),
2404         b = new d3_geo_clipPolygonIntersection(p0, null, a, false);
2405     a.o = b;
2406     subject.push(a);
2407     clip.push(b);
2408     a = new d3_geo_clipPolygonIntersection(p1, segment, null, false);
2409     b = new d3_geo_clipPolygonIntersection(p1, null, a, true);
2410     a.o = b;
2411     subject.push(a);
2412     clip.push(b);
2413   });
2414   clip.sort(compare);
2415   d3_geo_clipPolygonLinkCircular(subject);
2416   d3_geo_clipPolygonLinkCircular(clip);
2417   if (!subject.length) return;
2418
2419   for (var i = 0, entry = clipStartInside, n = clip.length; i < n; ++i) {
2420     clip[i].e = entry = !entry;
2421   }
2422
2423   var start = subject[0],
2424       points,
2425       point;
2426   while (1) {
2427     // Find first unvisited intersection.
2428     var current = start,
2429         isSubject = true;
2430     while (current.v) if ((current = current.n) === start) return;
2431     points = current.z;
2432     listener.lineStart();
2433     do {
2434       current.v = current.o.v = true;
2435       if (current.e) {
2436         if (isSubject) {
2437           for (var i = 0, n = points.length; i < n; ++i) listener.point((point = points[i])[0], point[1]);
2438         } else {
2439           interpolate(current.x, current.n.x, 1, listener);
2440         }
2441         current = current.n;
2442       } else {
2443         if (isSubject) {
2444           points = current.p.z;
2445           for (var i = points.length - 1; i >= 0; --i) listener.point((point = points[i])[0], point[1]);
2446         } else {
2447           interpolate(current.x, current.p.x, -1, listener);
2448         }
2449         current = current.p;
2450       }
2451       current = current.o;
2452       points = current.z;
2453       isSubject = !isSubject;
2454     } while (!current.v);
2455     listener.lineEnd();
2456   }
2457 }
2458
2459 function d3_geo_clipPolygonLinkCircular(array) {
2460   if (!(n = array.length)) return;
2461   var n,
2462       i = 0,
2463       a = array[0],
2464       b;
2465   while (++i < n) {
2466     a.n = b = array[i];
2467     b.p = a;
2468     a = b;
2469   }
2470   a.n = b = array[0];
2471   b.p = a;
2472 }
2473
2474 function d3_geo_clipPolygonIntersection(point, points, other, entry) {
2475   this.x = point;
2476   this.z = points;
2477   this.o = other; // another intersection
2478   this.e = entry; // is an entry?
2479   this.v = false; // visited
2480   this.n = this.p = null; // next & previous
2481 }
2482
2483 function d3_geo_clip(pointVisible, clipLine, interpolate, clipStart) {
2484   return function(rotate, listener) {
2485     var line = clipLine(listener),
2486         rotatedClipStart = rotate.invert(clipStart[0], clipStart[1]);
2487
2488     var clip = {
2489       point: point,
2490       lineStart: lineStart,
2491       lineEnd: lineEnd,
2492       polygonStart: function() {
2493         clip.point = pointRing;
2494         clip.lineStart = ringStart;
2495         clip.lineEnd = ringEnd;
2496         segments = [];
2497         polygon = [];
2498       },
2499       polygonEnd: function() {
2500         clip.point = point;
2501         clip.lineStart = lineStart;
2502         clip.lineEnd = lineEnd;
2503
2504         segments = d3.merge(segments);
2505         var clipStartInside = d3_geo_pointInPolygon(rotatedClipStart, polygon);
2506         if (segments.length) {
2507           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2508           d3_geo_clipPolygon(segments, d3_geo_clipSort, clipStartInside, interpolate, listener);
2509         } else if (clipStartInside) {
2510           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2511           listener.lineStart();
2512           interpolate(null, null, 1, listener);
2513           listener.lineEnd();
2514         }
2515         if (polygonStarted) listener.polygonEnd(), polygonStarted = false;
2516         segments = polygon = null;
2517       },
2518       sphere: function() {
2519         listener.polygonStart();
2520         listener.lineStart();
2521         interpolate(null, null, 1, listener);
2522         listener.lineEnd();
2523         listener.polygonEnd();
2524       }
2525     };
2526
2527     function point(λ, φ) {
2528       var point = rotate(λ, φ);
2529       if (pointVisible(λ = point[0], φ = point[1])) listener.point(λ, φ);
2530     }
2531     function pointLine(λ, φ) {
2532       var point = rotate(λ, φ);
2533       line.point(point[0], point[1]);
2534     }
2535     function lineStart() { clip.point = pointLine; line.lineStart(); }
2536     function lineEnd() { clip.point = point; line.lineEnd(); }
2537
2538     var segments;
2539
2540     var buffer = d3_geo_clipBufferListener(),
2541         ringListener = clipLine(buffer),
2542         polygonStarted = false,
2543         polygon,
2544         ring;
2545
2546     function pointRing(λ, φ) {
2547       ring.push([λ, φ]);
2548       var point = rotate(λ, φ);
2549       ringListener.point(point[0], point[1]);
2550     }
2551
2552     function ringStart() {
2553       ringListener.lineStart();
2554       ring = [];
2555     }
2556
2557     function ringEnd() {
2558       pointRing(ring[0][0], ring[0][1]);
2559       ringListener.lineEnd();
2560
2561       var clean = ringListener.clean(),
2562           ringSegments = buffer.buffer(),
2563           segment,
2564           n = ringSegments.length;
2565
2566       ring.pop();
2567       polygon.push(ring);
2568       ring = null;
2569
2570       if (!n) return;
2571
2572       // No intersections.
2573       if (clean & 1) {
2574         segment = ringSegments[0];
2575         var n = segment.length - 1,
2576             i = -1,
2577             point;
2578         if (n > 0) {
2579           if (!polygonStarted) listener.polygonStart(), polygonStarted = true;
2580           listener.lineStart();
2581           while (++i < n) listener.point((point = segment[i])[0], point[1]);
2582           listener.lineEnd();
2583         }
2584         return;
2585       }
2586
2587       // Rejoin connected segments.
2588       // TODO reuse bufferListener.rejoin()?
2589       if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
2590
2591       segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
2592     }
2593
2594     return clip;
2595   };
2596 }
2597
2598 function d3_geo_clipSegmentLength1(segment) {
2599   return segment.length > 1;
2600 }
2601
2602 function d3_geo_clipBufferListener() {
2603   var lines = [],
2604       line;
2605   return {
2606     lineStart: function() { lines.push(line = []); },
2607     point: function(λ, φ) { line.push([λ, φ]); },
2608     lineEnd: d3_noop,
2609     buffer: function() {
2610       var buffer = lines;
2611       lines = [];
2612       line = null;
2613       return buffer;
2614     },
2615     rejoin: function() {
2616       if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
2617     }
2618   };
2619 }
2620
2621 // Intersection points are sorted along the clip edge. For both antimeridian
2622 // cutting and circle clipping, the same comparison is used.
2623 function d3_geo_clipSort(a, b) {
2624   return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1])
2625        - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]);
2626 }
2627
2628 var d3_geo_clipAntimeridian = d3_geo_clip(
2629     d3_true,
2630     d3_geo_clipAntimeridianLine,
2631     d3_geo_clipAntimeridianInterpolate,
2632     [-π, -π / 2]);
2633
2634 // Takes a line and cuts into visible segments. Return values:
2635 //   0: there were intersections or the line was empty.
2636 //   1: no intersections.
2637 //   2: there were intersections, and the first and last segments should be
2638 //      rejoined.
2639 function d3_geo_clipAntimeridianLine(listener) {
2640   var λ0 = NaN,
2641       φ0 = NaN,
2642       sλ0 = NaN,
2643       clean; // no intersections
2644
2645   return {
2646     lineStart: function() {
2647       listener.lineStart();
2648       clean = 1;
2649     },
2650     point: function(λ1, φ1) {
2651       var sλ1 = λ1 > 0 ? π : -π,
2652           dλ = abs(λ1 - λ0);
2653       if (abs(dλ - π) < ε) { // line crosses a pole
2654         listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? halfπ : -halfπ);
2655         listener.point(sλ0, φ0);
2656         listener.lineEnd();
2657         listener.lineStart();
2658         listener.point(sλ1, φ0);
2659         listener.point(λ1, φ0);
2660         clean = 0;
2661       } else if (sλ0 !== sλ1 && dλ >= π) { // line crosses antimeridian
2662         // handle degeneracies
2663         if (abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
2664         if (abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
2665         φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
2666         listener.point(sλ0, φ0);
2667         listener.lineEnd();
2668         listener.lineStart();
2669         listener.point(sλ1, φ0);
2670         clean = 0;
2671       }
2672       listener.point(λ0 = λ1, φ0 = φ1);
2673       sλ0 = sλ1;
2674     },
2675     lineEnd: function() {
2676       listener.lineEnd();
2677       λ0 = φ0 = NaN;
2678     },
2679     // if there are intersections, we always rejoin the first and last segments.
2680     clean: function() { return 2 - clean; }
2681   };
2682 }
2683
2684 function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
2685   var cosφ0,
2686       cosφ1,
2687       sinλ0_λ1 = Math.sin(λ0 - λ1);
2688   return abs(sinλ0_λ1) > ε
2689       ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1)
2690                  - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0))
2691                  / (cosφ0 * cosφ1 * sinλ0_λ1))
2692       : (φ0 + φ1) / 2;
2693 }
2694
2695 function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
2696   var φ;
2697   if (from == null) {
2698     φ = direction * halfπ;
2699     listener.point(-π,  φ);
2700     listener.point( 0,  φ);
2701     listener.point( π,  φ);
2702     listener.point( π,  0);
2703     listener.point( π, -φ);
2704     listener.point( 0, -φ);
2705     listener.point(-π, -φ);
2706     listener.point(-π,  0);
2707     listener.point(-π,  φ);
2708   } else if (abs(from[0] - to[0]) > ε) {
2709     var s = from[0] < to[0] ? π : -π;
2710     φ = direction * s / 2;
2711     listener.point(-s, φ);
2712     listener.point( 0, φ);
2713     listener.point( s, φ);
2714   } else {
2715     listener.point(to[0], to[1]);
2716   }
2717 }
2718 // TODO
2719 // cross and scale return new vectors,
2720 // whereas add and normalize operate in-place
2721
2722 function d3_geo_cartesian(spherical) {
2723   var λ = spherical[0],
2724       φ = spherical[1],
2725       cosφ = Math.cos(φ);
2726   return [
2727     cosφ * Math.cos(λ),
2728     cosφ * Math.sin(λ),
2729     Math.sin(φ)
2730   ];
2731 }
2732
2733 function d3_geo_cartesianDot(a, b) {
2734   return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
2735 }
2736
2737 function d3_geo_cartesianCross(a, b) {
2738   return [
2739     a[1] * b[2] - a[2] * b[1],
2740     a[2] * b[0] - a[0] * b[2],
2741     a[0] * b[1] - a[1] * b[0]
2742   ];
2743 }
2744
2745 function d3_geo_cartesianAdd(a, b) {
2746   a[0] += b[0];
2747   a[1] += b[1];
2748   a[2] += b[2];
2749 }
2750
2751 function d3_geo_cartesianScale(vector, k) {
2752   return [
2753     vector[0] * k,
2754     vector[1] * k,
2755     vector[2] * k
2756   ];
2757 }
2758
2759 function d3_geo_cartesianNormalize(d) {
2760   var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
2761   d[0] /= l;
2762   d[1] /= l;
2763   d[2] /= l;
2764 }
2765 function d3_geo_compose(a, b) {
2766
2767   function compose(x, y) {
2768     return x = a(x, y), b(x[0], x[1]);
2769   }
2770
2771   if (a.invert && b.invert) compose.invert = function(x, y) {
2772     return x = b.invert(x, y), x && a.invert(x[0], x[1]);
2773   };
2774
2775   return compose;
2776 }
2777
2778 function d3_geo_equirectangular(λ, φ) {
2779   return [λ, φ];
2780 }
2781
2782 (d3.geo.equirectangular = function() {
2783   return d3_geo_projection(d3_geo_equirectangular);
2784 }).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
2785
2786 d3.geo.rotation = function(rotate) {
2787   rotate = d3_geo_rotation(rotate[0] % 360 * d3_radians, rotate[1] * d3_radians, rotate.length > 2 ? rotate[2] * d3_radians : 0);
2788
2789   function forward(coordinates) {
2790     coordinates = rotate(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
2791     return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
2792   }
2793
2794   forward.invert = function(coordinates) {
2795     coordinates = rotate.invert(coordinates[0] * d3_radians, coordinates[1] * d3_radians);
2796     return coordinates[0] *= d3_degrees, coordinates[1] *= d3_degrees, coordinates;
2797   };
2798
2799   return forward;
2800 };
2801
2802 function d3_geo_identityRotation(λ, φ) {
2803   return [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];
2804 }
2805
2806 d3_geo_identityRotation.invert = d3_geo_equirectangular;
2807
2808 // Note: |δλ| must be < 2π
2809 function d3_geo_rotation(δλ, δφ, δγ) {
2810   return δλ ? (δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ))
2811     : d3_geo_rotationλ(δλ))
2812     : (δφ || δγ ? d3_geo_rotationφγ(δφ, δγ)
2813     : d3_geo_identityRotation);
2814 }
2815
2816 function d3_geo_forwardRotationλ(δλ) {
2817   return function(λ, φ) {
2818     return λ += δλ, [λ > π ? λ - τ : λ < -π ? λ + τ : λ, φ];
2819   };
2820 }
2821
2822 function d3_geo_rotationλ(δλ) {
2823   var rotation = d3_geo_forwardRotationλ(δλ);
2824   rotation.invert = d3_geo_forwardRotationλ(-δλ);
2825   return rotation;
2826 }
2827
2828 function d3_geo_rotationφγ(δφ, δγ) {
2829   var cosδφ = Math.cos(δφ),
2830       sinδφ = Math.sin(δφ),
2831       cosδγ = Math.cos(δγ),
2832       sinδγ = Math.sin(δγ);
2833
2834   function rotation(λ, φ) {
2835     var cosφ = Math.cos(φ),
2836         x = Math.cos(λ) * cosφ,
2837         y = Math.sin(λ) * cosφ,
2838         z = Math.sin(φ),
2839         k = z * cosδφ + x * sinδφ;
2840     return [
2841       Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ),
2842       d3_asin(k * cosδγ + y * sinδγ)
2843     ];
2844   }
2845
2846   rotation.invert = function(λ, φ) {
2847     var cosφ = Math.cos(φ),
2848         x = Math.cos(λ) * cosφ,
2849         y = Math.sin(λ) * cosφ,
2850         z = Math.sin(φ),
2851         k = z * cosδγ - y * sinδγ;
2852     return [
2853       Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ),
2854       d3_asin(k * cosδφ - x * sinδφ)
2855     ];
2856   };
2857
2858   return rotation;
2859 }
2860
2861 d3.geo.circle = function() {
2862   var origin = [0, 0],
2863       angle,
2864       precision = 6,
2865       interpolate;
2866
2867   function circle() {
2868     var center = typeof origin === "function" ? origin.apply(this, arguments) : origin,
2869         rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert,
2870         ring = [];
2871
2872     interpolate(null, null, 1, {
2873       point: function(x, y) {
2874         ring.push(x = rotate(x, y));
2875         x[0] *= d3_degrees, x[1] *= d3_degrees;
2876       }
2877     });
2878
2879     return {type: "Polygon", coordinates: [ring]};
2880   }
2881
2882   circle.origin = function(x) {
2883     if (!arguments.length) return origin;
2884     origin = x;
2885     return circle;
2886   };
2887
2888   circle.angle = function(x) {
2889     if (!arguments.length) return angle;
2890     interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
2891     return circle;
2892   };
2893
2894   circle.precision = function(_) {
2895     if (!arguments.length) return precision;
2896     interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
2897     return circle;
2898   };
2899
2900   return circle.angle(90);
2901 };
2902
2903 // Interpolates along a circle centered at [0°, 0°], with a given radius and
2904 // precision.
2905 function d3_geo_circleInterpolate(radius, precision) {
2906   var cr = Math.cos(radius),
2907       sr = Math.sin(radius);
2908   return function(from, to, direction, listener) {
2909     var step = direction * precision;
2910     if (from != null) {
2911       from = d3_geo_circleAngle(cr, from);
2912       to = d3_geo_circleAngle(cr, to);
2913       if (direction > 0 ? from < to: from > to) from += direction * τ;
2914     } else {
2915       from = radius + direction * τ;
2916       to = radius - .5 * step;
2917     }
2918     for (var point, t = from; direction > 0 ? t > to : t < to; t -= step) {
2919       listener.point((point = d3_geo_spherical([
2920         cr,
2921         -sr * Math.cos(t),
2922         -sr * Math.sin(t)
2923       ]))[0], point[1]);
2924     }
2925   };
2926 }
2927
2928 // Signed angle of a cartesian point relative to [cr, 0, 0].
2929 function d3_geo_circleAngle(cr, point) {
2930   var a = d3_geo_cartesian(point);
2931   a[0] -= cr;
2932   d3_geo_cartesianNormalize(a);
2933   var angle = d3_acos(-a[1]);
2934   return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
2935 }
2936 // Adds floating point numbers with twice the normal precision.
2937 // Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
2938 // Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
2939 // 305–363 (1997).
2940 // Code adapted from GeographicLib by Charles F. F. Karney,
2941 // http://geographiclib.sourceforge.net/
2942 // See lib/geographiclib/LICENSE for details.
2943
2944 function d3_adder() {}
2945
2946 d3_adder.prototype = {
2947   s: 0, // rounded value
2948   t: 0, // exact error
2949   add: function(y) {
2950     d3_adderSum(y, this.t, d3_adderTemp);
2951     d3_adderSum(d3_adderTemp.s, this.s, this);
2952     if (this.s) this.t += d3_adderTemp.t;
2953     else this.s = d3_adderTemp.t;
2954   },
2955   reset: function() {
2956     this.s = this.t = 0;
2957   },
2958   valueOf: function() {
2959     return this.s;
2960   }
2961 };
2962
2963 var d3_adderTemp = new d3_adder;
2964
2965 function d3_adderSum(a, b, o) {
2966   var x = o.s = a + b, // a + b
2967       bv = x - a, av = x - bv; // b_virtual & a_virtual
2968   o.t = (a - av) + (b - bv); // a_roundoff + b_roundoff
2969 }
2970
2971 d3.geo.area = function(object) {
2972   d3_geo_areaSum = 0;
2973   d3.geo.stream(object, d3_geo_area);
2974   return d3_geo_areaSum;
2975 };
2976
2977 var d3_geo_areaSum,
2978     d3_geo_areaRingSum = new d3_adder;
2979
2980 var d3_geo_area = {
2981   sphere: function() { d3_geo_areaSum += 4 * π; },
2982   point: d3_noop,
2983   lineStart: d3_noop,
2984   lineEnd: d3_noop,
2985
2986   // Only count area for polygon rings.
2987   polygonStart: function() {
2988     d3_geo_areaRingSum.reset();
2989     d3_geo_area.lineStart = d3_geo_areaRingStart;
2990   },
2991   polygonEnd: function() {
2992     var area = 2 * d3_geo_areaRingSum;
2993     d3_geo_areaSum += area < 0 ? 4 * π + area : area;
2994     d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
2995   }
2996 };
2997
2998 function d3_geo_areaRingStart() {
2999   var λ00, φ00, λ0, cosφ0, sinφ0; // start point and previous point
3000
3001   // For the first point, …
3002   d3_geo_area.point = function(λ, φ) {
3003     d3_geo_area.point = nextPoint;
3004     λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4), sinφ0 = Math.sin(φ);
3005   };
3006
3007   // For subsequent points, …
3008   function nextPoint(λ, φ) {
3009     λ *= d3_radians;
3010     φ = φ * d3_radians / 2 + π / 4; // half the angular distance from south pole
3011
3012     // Spherical excess E for a spherical triangle with vertices: south pole,
3013     // previous point, current point.  Uses a formula derived from Cagnoli’s
3014     // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
3015     var dλ = λ - λ0,
3016         sdλ = dλ >= 0 ? 1 : -1,
3017         adλ = sdλ * dλ,
3018         cosφ = Math.cos(φ),
3019         sinφ = Math.sin(φ),
3020         k = sinφ0 * sinφ,
3021         u = cosφ0 * cosφ + k * Math.cos(adλ),
3022         v = k * sdλ * Math.sin(adλ);
3023     d3_geo_areaRingSum.add(Math.atan2(v, u));
3024
3025     // Advance the previous points.
3026     λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
3027   }
3028
3029   // For the last point, return to the start.
3030   d3_geo_area.lineEnd = function() {
3031     nextPoint(λ00, φ00);
3032   };
3033 }
3034
3035 function d3_geo_pointInPolygon(point, polygon) {
3036   var meridian = point[0],
3037       parallel = point[1],
3038       meridianNormal = [Math.sin(meridian), -Math.cos(meridian), 0],
3039       polarAngle = 0,
3040       winding = 0;
3041   d3_geo_areaRingSum.reset();
3042
3043   for (var i = 0, n = polygon.length; i < n; ++i) {
3044     var ring = polygon[i],
3045         m = ring.length;
3046     if (!m) continue;
3047     var point0 = ring[0],
3048         λ0 = point0[0],
3049         φ0 = point0[1] / 2 + π / 4,
3050         sinφ0 = Math.sin(φ0),
3051         cosφ0 = Math.cos(φ0),
3052         j = 1;
3053
3054     while (true) {
3055       if (j === m) j = 0;
3056       point = ring[j];
3057       var λ = point[0],
3058           φ = point[1] / 2 + π / 4,
3059           sinφ = Math.sin(φ),
3060           cosφ = Math.cos(φ),
3061           dλ = λ - λ0,
3062           sdλ = dλ >= 0 ? 1 : -1,
3063           adλ = sdλ * dλ,
3064           antimeridian = adλ > π,
3065           k = sinφ0 * sinφ;
3066       d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ)));
3067
3068       polarAngle += antimeridian ? dλ + sdλ * τ : dλ;
3069
3070       // Are the longitudes either side of the point's meridian, and are the
3071       // latitudes smaller than the parallel?
3072       if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) {
3073         var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point));
3074         d3_geo_cartesianNormalize(arc);
3075         var intersection = d3_geo_cartesianCross(meridianNormal, arc);
3076         d3_geo_cartesianNormalize(intersection);
3077         var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]);
3078         if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) {
3079           winding += antimeridian ^ dλ >= 0 ? 1 : -1;
3080         }
3081       }
3082       if (!j++) break;
3083       λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point;
3084     }
3085   }
3086
3087   // First, determine whether the South pole is inside or outside:
3088   //
3089   // It is inside if:
3090   // * the polygon winds around it in a clockwise direction.
3091   // * the polygon does not (cumulatively) wind around it, but has a negative
3092   //   (counter-clockwise) area.
3093   //
3094   // Second, count the (signed) number of times a segment crosses a meridian
3095   // from the point to the South pole.  If it is zero, then the point is the
3096   // same side as the South pole.
3097
3098   return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ (winding & 1);
3099 }
3100
3101 // Clip features against a small circle centered at [0°, 0°].
3102 function d3_geo_clipCircle(radius) {
3103   var cr = Math.cos(radius),
3104       smallRadius = cr > 0,
3105       notHemisphere = abs(cr) > ε, // TODO optimise for this common case
3106       interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians);
3107
3108   return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-π, radius - π]);
3109
3110   function visible(λ, φ) {
3111     return Math.cos(λ) * Math.cos(φ) > cr;
3112   }
3113
3114   // Takes a line and cuts into visible segments. Return values used for
3115   // polygon clipping:
3116   //   0: there were intersections or the line was empty.
3117   //   1: no intersections.
3118   //   2: there were intersections, and the first and last segments should be
3119   //      rejoined.
3120   function clipLine(listener) {
3121     var point0, // previous point
3122         c0, // code for previous point
3123         v0, // visibility of previous point
3124         v00, // visibility of first point
3125         clean; // no intersections
3126     return {
3127       lineStart: function() {
3128         v00 = v0 = false;
3129         clean = 1;
3130       },
3131       point: function(λ, φ) {
3132         var point1 = [λ, φ],
3133             point2,
3134             v = visible(λ, φ),
3135             c = smallRadius
3136               ? v ? 0 : code(λ, φ)
3137               : v ? code(λ + (λ < 0 ? π : -π), φ) : 0;
3138         if (!point0 && (v00 = v0 = v)) listener.lineStart();
3139         // Handle degeneracies.
3140         // TODO ignore if not clipping polygons.
3141         if (v !== v0) {
3142           point2 = intersect(point0, point1);
3143           if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
3144             point1[0] += ε;
3145             point1[1] += ε;
3146             v = visible(point1[0], point1[1]);
3147           }
3148         }
3149         if (v !== v0) {
3150           clean = 0;
3151           if (v) {
3152             // outside going in
3153             listener.lineStart();
3154             point2 = intersect(point1, point0);
3155             listener.point(point2[0], point2[1]);
3156           } else {
3157             // inside going out
3158             point2 = intersect(point0, point1);
3159             listener.point(point2[0], point2[1]);
3160             listener.lineEnd();
3161           }
3162           point0 = point2;
3163         } else if (notHemisphere && point0 && smallRadius ^ v) {
3164           var t;
3165           // If the codes for two points are different, or are both zero,
3166           // and there this segment intersects with the small circle.
3167           if (!(c & c0) && (t = intersect(point1, point0, true))) {
3168             clean = 0;
3169             if (smallRadius) {
3170               listener.lineStart();
3171               listener.point(t[0][0], t[0][1]);
3172               listener.point(t[1][0], t[1][1]);
3173               listener.lineEnd();
3174             } else {
3175               listener.point(t[1][0], t[1][1]);
3176               listener.lineEnd();
3177               listener.lineStart();
3178               listener.point(t[0][0], t[0][1]);
3179             }
3180           }
3181         }
3182         if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) {
3183           listener.point(point1[0], point1[1]);
3184         }
3185         point0 = point1, v0 = v, c0 = c;
3186       },
3187       lineEnd: function() {
3188         if (v0) listener.lineEnd();
3189         point0 = null;
3190       },
3191       // Rejoin first and last segments if there were intersections and the first
3192       // and last points were visible.
3193       clean: function() { return clean | ((v00 && v0) << 1); }
3194     };
3195   }
3196
3197   // Intersects the great circle between a and b with the clip circle.
3198   function intersect(a, b, two) {
3199     var pa = d3_geo_cartesian(a),
3200         pb = d3_geo_cartesian(b);
3201
3202     // We have two planes, n1.p = d1 and n2.p = d2.
3203     // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
3204     var n1 = [1, 0, 0], // normal
3205         n2 = d3_geo_cartesianCross(pa, pb),
3206         n2n2 = d3_geo_cartesianDot(n2, n2),
3207         n1n2 = n2[0], // d3_geo_cartesianDot(n1, n2),
3208         determinant = n2n2 - n1n2 * n1n2;
3209
3210     // Two polar points.
3211     if (!determinant) return !two && a;
3212
3213     var c1 =  cr * n2n2 / determinant,
3214         c2 = -cr * n1n2 / determinant,
3215         n1xn2 = d3_geo_cartesianCross(n1, n2),
3216         A = d3_geo_cartesianScale(n1, c1),
3217         B = d3_geo_cartesianScale(n2, c2);
3218     d3_geo_cartesianAdd(A, B);
3219
3220     // Solve |p(t)|^2 = 1.
3221     var u = n1xn2,
3222         w = d3_geo_cartesianDot(A, u),
3223         uu = d3_geo_cartesianDot(u, u),
3224         t2 = w * w - uu * (d3_geo_cartesianDot(A, A) - 1);
3225
3226     if (t2 < 0) return;
3227
3228     var t = Math.sqrt(t2),
3229         q = d3_geo_cartesianScale(u, (-w - t) / uu);
3230     d3_geo_cartesianAdd(q, A);
3231     q = d3_geo_spherical(q);
3232     if (!two) return q;
3233
3234     // Two intersection points.
3235     var λ0 = a[0],
3236         λ1 = b[0],
3237         φ0 = a[1],
3238         φ1 = b[1],
3239         z;
3240     if (λ1 < λ0) z = λ0, λ0 = λ1, λ1 = z;
3241     var δλ = λ1 - λ0,
3242         polar = abs(δλ - π) < ε,
3243         meridian = polar || δλ < ε;
3244
3245     if (!polar && φ1 < φ0) z = φ0, φ0 = φ1, φ1 = z;
3246
3247     // Check that the first point is between a and b.
3248     if (meridian
3249         ? polar
3250           ? φ0 + φ1 > 0 ^ q[1] < (abs(q[0] - λ0) < ε ? φ0 : φ1)
3251           : φ0 <= q[1] && q[1] <= φ1
3252         : δλ > π ^ (λ0 <= q[0] && q[0] <= λ1)) {
3253       var q1 = d3_geo_cartesianScale(u, (-w + t) / uu);
3254       d3_geo_cartesianAdd(q1, A);
3255       return [q, d3_geo_spherical(q1)];
3256     }
3257   }
3258
3259   // Generates a 4-bit vector representing the location of a point relative to
3260   // the small circle's bounding box.
3261   function code(λ, φ) {
3262     var r = smallRadius ? radius : π - radius,
3263         code = 0;
3264     if (λ < -r) code |= 1; // left
3265     else if (λ > r) code |= 2; // right
3266     if (φ < -r) code |= 4; // below
3267     else if (φ > r) code |= 8; // above
3268     return code;
3269   }
3270 }
3271
3272 // Liang–Barsky line clipping.
3273 function d3_geom_clipLine(x0, y0, x1, y1) {
3274   return function(line) {
3275     var a = line.a,
3276         b = line.b,
3277         ax = a.x,
3278         ay = a.y,
3279         bx = b.x,
3280         by = b.y,
3281         t0 = 0,
3282         t1 = 1,
3283         dx = bx - ax,
3284         dy = by - ay,
3285         r;
3286
3287     r = x0 - ax;
3288     if (!dx && r > 0) return;
3289     r /= dx;
3290     if (dx < 0) {
3291       if (r < t0) return;
3292       if (r < t1) t1 = r;
3293     } else if (dx > 0) {
3294       if (r > t1) return;
3295       if (r > t0) t0 = r;
3296     }
3297
3298     r = x1 - ax;
3299     if (!dx && r < 0) return;
3300     r /= dx;
3301     if (dx < 0) {
3302       if (r > t1) return;
3303       if (r > t0) t0 = r;
3304     } else if (dx > 0) {
3305       if (r < t0) return;
3306       if (r < t1) t1 = r;
3307     }
3308
3309     r = y0 - ay;
3310     if (!dy && r > 0) return;
3311     r /= dy;
3312     if (dy < 0) {
3313       if (r < t0) return;
3314       if (r < t1) t1 = r;
3315     } else if (dy > 0) {
3316       if (r > t1) return;
3317       if (r > t0) t0 = r;
3318     }
3319
3320     r = y1 - ay;
3321     if (!dy && r < 0) return;
3322     r /= dy;
3323     if (dy < 0) {
3324       if (r > t1) return;
3325       if (r > t0) t0 = r;
3326     } else if (dy > 0) {
3327       if (r < t0) return;
3328       if (r < t1) t1 = r;
3329     }
3330
3331     if (t0 > 0) line.a = {x: ax + t0 * dx, y: ay + t0 * dy};
3332     if (t1 < 1) line.b = {x: ax + t1 * dx, y: ay + t1 * dy};
3333     return line;
3334   };
3335 }
3336
3337 var d3_geo_clipExtentMAX = 1e9;
3338
3339 d3.geo.clipExtent = function() {
3340   var x0, y0, x1, y1,
3341       stream,
3342       clip,
3343       clipExtent = {
3344         stream: function(output) {
3345           if (stream) stream.valid = false;
3346           stream = clip(output);
3347           stream.valid = true; // allow caching by d3.geo.path
3348           return stream;
3349         },
3350         extent: function(_) {
3351           if (!arguments.length) return [[x0, y0], [x1, y1]];
3352           clip = d3_geo_clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]);
3353           if (stream) stream.valid = false, stream = null;
3354           return clipExtent;
3355         }
3356       };
3357   return clipExtent.extent([[0, 0], [960, 500]]);
3358 };
3359
3360 function d3_geo_clipExtent(x0, y0, x1, y1) {
3361   return function(listener) {
3362     var listener_ = listener,
3363         bufferListener = d3_geo_clipBufferListener(),
3364         clipLine = d3_geom_clipLine(x0, y0, x1, y1),
3365         segments,
3366         polygon,
3367         ring;
3368
3369     var clip = {
3370       point: point,
3371       lineStart: lineStart,
3372       lineEnd: lineEnd,
3373       polygonStart: function() {
3374         listener = bufferListener;
3375         segments = [];
3376         polygon = [];
3377         clean = true;
3378       },
3379       polygonEnd: function() {
3380         listener = listener_;
3381         segments = d3.merge(segments);
3382         var clipStartInside = insidePolygon([x0, y1]),
3383             inside = clean && clipStartInside,
3384             visible = segments.length;
3385         if (inside || visible) {
3386           listener.polygonStart();
3387           if (inside) {
3388             listener.lineStart();
3389             interpolate(null, null, 1, listener);
3390             listener.lineEnd();
3391           }
3392           if (visible) {
3393             d3_geo_clipPolygon(segments, compare, clipStartInside, interpolate, listener);
3394           }
3395           listener.polygonEnd();
3396         }
3397         segments = polygon = ring = null;
3398       }
3399     };
3400
3401     function insidePolygon(p) {
3402       var wn = 0, // the winding number counter
3403           n = polygon.length,
3404           y = p[1];
3405
3406       for (var i = 0; i < n; ++i) {
3407         for (var j = 1, v = polygon[i], m = v.length, a = v[0], b; j < m; ++j) {
3408           b = v[j];
3409           if (a[1] <= y) {
3410             if (b[1] >  y && d3_cross2d(a, b, p) > 0) ++wn;
3411           } else {
3412             if (b[1] <= y && d3_cross2d(a, b, p) < 0) --wn;
3413           }
3414           a = b;
3415         }
3416       }
3417       return wn !== 0;
3418     }
3419
3420     function interpolate(from, to, direction, listener) {
3421       var a = 0, a1 = 0;
3422       if (from == null ||
3423           (a = corner(from, direction)) !== (a1 = corner(to, direction)) ||
3424           comparePoints(from, to) < 0 ^ direction > 0) {
3425         do {
3426           listener.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
3427         } while ((a = (a + direction + 4) % 4) !== a1);
3428       } else {
3429         listener.point(to[0], to[1]);
3430       }
3431     }
3432
3433     function pointVisible(x, y) {
3434       return x0 <= x && x <= x1 && y0 <= y && y <= y1;
3435     }
3436
3437     function point(x, y) {
3438       if (pointVisible(x, y)) listener.point(x, y);
3439     }
3440
3441     var x__, y__, v__, // first point
3442         x_, y_, v_, // previous point
3443         first,
3444         clean;
3445
3446     function lineStart() {
3447       clip.point = linePoint;
3448       if (polygon) polygon.push(ring = []);
3449       first = true;
3450       v_ = false;
3451       x_ = y_ = NaN;
3452     }
3453
3454     function lineEnd() {
3455       // TODO rather than special-case polygons, simply handle them separately.
3456       // Ideally, coincident intersection points should be jittered to avoid
3457       // clipping issues.
3458       if (segments) {
3459         linePoint(x__, y__);
3460         if (v__ && v_) bufferListener.rejoin();
3461         segments.push(bufferListener.buffer());
3462       }
3463       clip.point = point;
3464       if (v_) listener.lineEnd();
3465     }
3466
3467     function linePoint(x, y) {
3468       x = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, x));
3469       y = Math.max(-d3_geo_clipExtentMAX, Math.min(d3_geo_clipExtentMAX, y));
3470       var v = pointVisible(x, y);
3471       if (polygon) ring.push([x, y]);
3472       if (first) {
3473         x__ = x, y__ = y, v__ = v;
3474         first = false;
3475         if (v) {
3476           listener.lineStart();
3477           listener.point(x, y);
3478         }
3479       } else {
3480         if (v && v_) listener.point(x, y);
3481         else {
3482           var l = {a: {x: x_, y: y_}, b: {x: x, y: y}};
3483           if (clipLine(l)) {
3484             if (!v_) {
3485               listener.lineStart();
3486               listener.point(l.a.x, l.a.y);
3487             }
3488             listener.point(l.b.x, l.b.y);
3489             if (!v) listener.lineEnd();
3490             clean = false;
3491           } else if (v) {
3492             listener.lineStart();
3493             listener.point(x, y);
3494             clean = false;
3495           }
3496         }
3497       }
3498       x_ = x, y_ = y, v_ = v;
3499     }
3500
3501     return clip;
3502   };
3503
3504   function corner(p, direction) {
3505     return abs(p[0] - x0) < ε ? direction > 0 ? 0 : 3
3506         : abs(p[0] - x1) < ε ? direction > 0 ? 2 : 1
3507         : abs(p[1] - y0) < ε ? direction > 0 ? 1 : 0
3508         : direction > 0 ? 3 : 2; // abs(p[1] - y1) < ε
3509   }
3510
3511   function compare(a, b) {
3512     return comparePoints(a.x, b.x);
3513   }
3514
3515   function comparePoints(a, b) {
3516     var ca = corner(a, 1),
3517         cb = corner(b, 1);
3518     return ca !== cb ? ca - cb
3519         : ca === 0 ? b[1] - a[1]
3520         : ca === 1 ? a[0] - b[0]
3521         : ca === 2 ? a[1] - b[1]
3522         : b[0] - a[0];
3523   }
3524 }
3525
3526 function d3_geo_conic(projectAt) {
3527   var φ0 = 0,
3528       φ1 = π / 3,
3529       m = d3_geo_projectionMutator(projectAt),
3530       p = m(φ0, φ1);
3531
3532   p.parallels = function(_) {
3533     if (!arguments.length) return [φ0 / π * 180, φ1 / π * 180];
3534     return m(φ0 = _[0] * π / 180, φ1 = _[1] * π / 180);
3535   };
3536
3537   return p;
3538 }
3539
3540 function d3_geo_conicEqualArea(φ0, φ1) {
3541   var sinφ0 = Math.sin(φ0),
3542       n = (sinφ0 + Math.sin(φ1)) / 2,
3543       C = 1 + sinφ0 * (2 * n - sinφ0),
3544       ρ0 = Math.sqrt(C) / n;
3545
3546   function forward(λ, φ) {
3547     var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
3548     return [
3549       ρ * Math.sin(λ *= n),
3550       ρ0 - ρ * Math.cos(λ)
3551     ];
3552   }
3553
3554   forward.invert = function(x, y) {
3555     var ρ0_y = ρ0 - y;
3556     return [
3557       Math.atan2(x, ρ0_y) / n,
3558       d3_asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n))
3559     ];
3560   };
3561
3562   return forward;
3563 }
3564
3565 (d3.geo.conicEqualArea = function() {
3566   return d3_geo_conic(d3_geo_conicEqualArea);
3567 }).raw = d3_geo_conicEqualArea;
3568
3569 // ESRI:102003
3570 d3.geo.albers = function() {
3571   return d3.geo.conicEqualArea()
3572       .rotate([96, 0])
3573       .center([-.6, 38.7])
3574       .parallels([29.5, 45.5])
3575       .scale(1070);
3576 };
3577
3578 // A composite projection for the United States, configured by default for
3579 // 960×500. Also works quite well at 960×600 with scale 1285. The set of
3580 // standard parallels for each region comes from USGS, which is published here:
3581 // http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
3582 d3.geo.albersUsa = function() {
3583   var lower48 = d3.geo.albers();
3584
3585   // EPSG:3338
3586   var alaska = d3.geo.conicEqualArea()
3587       .rotate([154, 0])
3588       .center([-2, 58.5])
3589       .parallels([55, 65]);
3590
3591   // ESRI:102007
3592   var hawaii = d3.geo.conicEqualArea()
3593       .rotate([157, 0])
3594       .center([-3, 19.9])
3595       .parallels([8, 18]);
3596
3597   var point,
3598       pointStream = {point: function(x, y) { point = [x, y]; }},
3599       lower48Point,
3600       alaskaPoint,
3601       hawaiiPoint;
3602
3603   function albersUsa(coordinates) {
3604     var x = coordinates[0], y = coordinates[1];
3605     point = null;
3606     (lower48Point(x, y), point)
3607         || (alaskaPoint(x, y), point)
3608         || hawaiiPoint(x, y);
3609     return point;
3610   }
3611
3612   albersUsa.invert = function(coordinates) {
3613     var k = lower48.scale(),
3614         t = lower48.translate(),
3615         x = (coordinates[0] - t[0]) / k,
3616         y = (coordinates[1] - t[1]) / k;
3617     return (y >= .120 && y < .234 && x >= -.425 && x < -.214 ? alaska
3618         : y >= .166 && y < .234 && x >= -.214 && x < -.115 ? hawaii
3619         : lower48).invert(coordinates);
3620   };
3621
3622   // A naïve multi-projection stream.
3623   // The projections must have mutually exclusive clip regions on the sphere,
3624   // as this will avoid emitting interleaving lines and polygons.
3625   albersUsa.stream = function(stream) {
3626     var lower48Stream = lower48.stream(stream),
3627         alaskaStream = alaska.stream(stream),
3628         hawaiiStream = hawaii.stream(stream);
3629     return {
3630       point: function(x, y) {
3631         lower48Stream.point(x, y);
3632         alaskaStream.point(x, y);
3633         hawaiiStream.point(x, y);
3634       },
3635       sphere: function() {
3636         lower48Stream.sphere();
3637         alaskaStream.sphere();
3638         hawaiiStream.sphere();
3639       },
3640       lineStart: function() {
3641         lower48Stream.lineStart();
3642         alaskaStream.lineStart();
3643         hawaiiStream.lineStart();
3644       },
3645       lineEnd: function() {
3646         lower48Stream.lineEnd();
3647         alaskaStream.lineEnd();
3648         hawaiiStream.lineEnd();
3649       },
3650       polygonStart: function() {
3651         lower48Stream.polygonStart();
3652         alaskaStream.polygonStart();
3653         hawaiiStream.polygonStart();
3654       },
3655       polygonEnd: function() {
3656         lower48Stream.polygonEnd();
3657         alaskaStream.polygonEnd();
3658         hawaiiStream.polygonEnd();
3659       }
3660     };
3661   };
3662
3663   albersUsa.precision = function(_) {
3664     if (!arguments.length) return lower48.precision();
3665     lower48.precision(_);
3666     alaska.precision(_);
3667     hawaii.precision(_);
3668     return albersUsa;
3669   };
3670
3671   albersUsa.scale = function(_) {
3672     if (!arguments.length) return lower48.scale();
3673     lower48.scale(_);
3674     alaska.scale(_ * .35);
3675     hawaii.scale(_);
3676     return albersUsa.translate(lower48.translate());
3677   };
3678
3679   albersUsa.translate = function(_) {
3680     if (!arguments.length) return lower48.translate();
3681     var k = lower48.scale(), x = +_[0], y = +_[1];
3682
3683     lower48Point = lower48
3684         .translate(_)
3685         .clipExtent([[x - .455 * k, y - .238 * k], [x + .455 * k, y + .238 * k]])
3686         .stream(pointStream).point;
3687
3688     alaskaPoint = alaska
3689         .translate([x - .307 * k, y + .201 * k])
3690         .clipExtent([[x - .425 * k + ε, y + .120 * k + ε], [x - .214 * k - ε, y + .234 * k - ε]])
3691         .stream(pointStream).point;
3692
3693     hawaiiPoint = hawaii
3694         .translate([x - .205 * k, y + .212 * k])
3695         .clipExtent([[x - .214 * k + ε, y + .166 * k + ε], [x - .115 * k - ε, y + .234 * k - ε]])
3696         .stream(pointStream).point;
3697
3698     return albersUsa;
3699   };
3700
3701   return albersUsa.scale(1070);
3702 };
3703
3704 d3.geo.bounds = (function() {
3705   var λ0, φ0, λ1, φ1, // bounds
3706       λ_, // previous λ-coordinate
3707       λ__, φ__, // first point
3708       p0, // previous 3D point
3709       dλSum,
3710       ranges,
3711       range;
3712
3713   var bound = {
3714     point: point,
3715     lineStart: lineStart,
3716     lineEnd: lineEnd,
3717
3718     polygonStart: function() {
3719       bound.point = ringPoint;
3720       bound.lineStart = ringStart;
3721       bound.lineEnd = ringEnd;
3722       dλSum = 0;
3723       d3_geo_area.polygonStart();
3724     },
3725     polygonEnd: function() {
3726       d3_geo_area.polygonEnd();
3727       bound.point = point;
3728       bound.lineStart = lineStart;
3729       bound.lineEnd = lineEnd;
3730       if (d3_geo_areaRingSum < 0) λ0 = -(λ1 = 180), φ0 = -(φ1 = 90);
3731       else if (dλSum > ε) φ1 = 90;
3732       else if (dλSum < -ε) φ0 = -90;
3733       range[0] = λ0, range[1] = λ1;
3734     }
3735   };
3736
3737   function point(λ, φ) {
3738     ranges.push(range = [λ0 = λ, λ1 = λ]);
3739     if (φ < φ0) φ0 = φ;
3740     if (φ > φ1) φ1 = φ;
3741   }
3742
3743   function linePoint(λ, φ) {
3744     var p = d3_geo_cartesian([λ * d3_radians, φ * d3_radians]);
3745     if (p0) {
3746       var normal = d3_geo_cartesianCross(p0, p),
3747           equatorial = [normal[1], -normal[0], 0],
3748           inflection = d3_geo_cartesianCross(equatorial, normal);
3749       d3_geo_cartesianNormalize(inflection);
3750       inflection = d3_geo_spherical(inflection);
3751       var dλ = λ - λ_,
3752           s = dλ > 0 ? 1 : -1,
3753           λi = inflection[0] * d3_degrees * s,
3754           antimeridian = abs(dλ) > 180;
3755       if (antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
3756         var φi = inflection[1] * d3_degrees;
3757         if (φi > φ1) φ1 = φi;
3758       } else if (λi = (λi + 360) % 360 - 180, antimeridian ^ (s * λ_ < λi && λi < s * λ)) {
3759         var φi = -inflection[1] * d3_degrees;
3760         if (φi < φ0) φ0 = φi;
3761       } else {
3762         if (φ < φ0) φ0 = φ;
3763         if (φ > φ1) φ1 = φ;
3764       }
3765       if (antimeridian) {
3766         if (λ < λ_) {
3767           if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
3768         } else {
3769           if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
3770         }
3771       } else {
3772         if (λ1 >= λ0) {
3773           if (λ < λ0) λ0 = λ;
3774           if (λ > λ1) λ1 = λ;
3775         } else {
3776           if (λ > λ_) {
3777             if (angle(λ0, λ) > angle(λ0, λ1)) λ1 = λ;
3778           } else {
3779             if (angle(λ, λ1) > angle(λ0, λ1)) λ0 = λ;
3780           }
3781         }
3782       }
3783     } else {
3784       point(λ, φ);
3785     }
3786     p0 = p, λ_ = λ;
3787   }
3788
3789   function lineStart() { bound.point = linePoint; }
3790   function lineEnd() {
3791     range[0] = λ0, range[1] = λ1;
3792     bound.point = point;
3793     p0 = null;
3794   }
3795
3796   function ringPoint(λ, φ) {
3797     if (p0) {
3798       var dλ = λ - λ_;
3799       dλSum += abs(dλ) > 180 ? dλ + (dλ > 0 ? 360 : -360) : dλ;
3800     } else λ__ = λ, φ__ = φ;
3801     d3_geo_area.point(λ, φ);
3802     linePoint(λ, φ);
3803   }
3804
3805   function ringStart() {
3806     d3_geo_area.lineStart();
3807   }
3808
3809   function ringEnd() {
3810     ringPoint(λ__, φ__);
3811     d3_geo_area.lineEnd();
3812     if (abs(dλSum) > ε) λ0 = -(λ1 = 180);
3813     range[0] = λ0, range[1] = λ1;
3814     p0 = null;
3815   }
3816
3817   // Finds the left-right distance between two longitudes.
3818   // This is almost the same as (λ1 - λ0 + 360°) % 360°, except that we want
3819   // the distance between ±180° to be 360°.
3820   function angle(λ0, λ1) { return (λ1 -= λ0) < 0 ? λ1 + 360 : λ1; }
3821
3822   function compareRanges(a, b) { return a[0] - b[0]; }
3823
3824   function withinRange(x, range) {
3825     return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;
3826   }
3827
3828   return function(feature) {
3829     φ1 = λ1 = -(λ0 = φ0 = Infinity);
3830     ranges = [];
3831
3832     d3.geo.stream(feature, bound);
3833
3834     var n = ranges.length;
3835     if (n) {
3836       // First, sort ranges by their minimum longitudes.
3837       ranges.sort(compareRanges);
3838
3839       // Then, merge any ranges that overlap.
3840       for (var i = 1, a = ranges[0], b, merged = [a]; i < n; ++i) {
3841         b = ranges[i];
3842         if (withinRange(b[0], a) || withinRange(b[1], a)) {
3843           if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
3844           if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
3845         } else {
3846           merged.push(a = b);
3847         }
3848       }
3849
3850       // Finally, find the largest gap between the merged ranges.
3851       // The final bounding box will be the inverse of this gap.
3852       var best = -Infinity, dλ;
3853       for (var n = merged.length - 1, i = 0, a = merged[n], b; i <= n; a = b, ++i) {
3854         b = merged[i];
3855         if ((dλ = angle(a[1], b[0])) > best) best = dλ, λ0 = b[0], λ1 = a[1];
3856       }
3857     }
3858     ranges = range = null;
3859
3860     return λ0 === Infinity || φ0 === Infinity
3861         ? [[NaN, NaN], [NaN, NaN]]
3862         : [[λ0, φ0], [λ1, φ1]];
3863   };
3864 })();
3865
3866 d3.geo.centroid = function(object) {
3867   d3_geo_centroidW0 = d3_geo_centroidW1 =
3868   d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 =
3869   d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
3870   d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
3871   d3.geo.stream(object, d3_geo_centroid);
3872
3873   var x = d3_geo_centroidX2,
3874       y = d3_geo_centroidY2,
3875       z = d3_geo_centroidZ2,
3876       m = x * x + y * y + z * z;
3877
3878   // If the area-weighted centroid is undefined, fall back to length-weighted centroid.
3879   if (m < ε2) {
3880     x = d3_geo_centroidX1, y = d3_geo_centroidY1, z = d3_geo_centroidZ1;
3881     // If the feature has zero length, fall back to arithmetic mean of point vectors.
3882     if (d3_geo_centroidW1 < ε) x = d3_geo_centroidX0, y = d3_geo_centroidY0, z = d3_geo_centroidZ0;
3883     m = x * x + y * y + z * z;
3884     // If the feature still has an undefined centroid, then return.
3885     if (m < ε2) return [NaN, NaN];
3886   }
3887
3888   return [Math.atan2(y, x) * d3_degrees, d3_asin(z / Math.sqrt(m)) * d3_degrees];
3889 };
3890
3891 var d3_geo_centroidW0,
3892     d3_geo_centroidW1,
3893     d3_geo_centroidX0,
3894     d3_geo_centroidY0,
3895     d3_geo_centroidZ0,
3896     d3_geo_centroidX1,
3897     d3_geo_centroidY1,
3898     d3_geo_centroidZ1,
3899     d3_geo_centroidX2,
3900     d3_geo_centroidY2,
3901     d3_geo_centroidZ2;
3902
3903 var d3_geo_centroid = {
3904   sphere: d3_noop,
3905   point: d3_geo_centroidPoint,
3906   lineStart: d3_geo_centroidLineStart,
3907   lineEnd: d3_geo_centroidLineEnd,
3908   polygonStart: function() {
3909     d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
3910   },
3911   polygonEnd: function() {
3912     d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
3913   }
3914 };
3915
3916 // Arithmetic mean of Cartesian vectors.
3917 function d3_geo_centroidPoint(λ, φ) {
3918   λ *= d3_radians;
3919   var cosφ = Math.cos(φ *= d3_radians);
3920   d3_geo_centroidPointXYZ(cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ));
3921 }
3922
3923 function d3_geo_centroidPointXYZ(x, y, z) {
3924   ++d3_geo_centroidW0;
3925   d3_geo_centroidX0 += (x - d3_geo_centroidX0) / d3_geo_centroidW0;
3926   d3_geo_centroidY0 += (y - d3_geo_centroidY0) / d3_geo_centroidW0;
3927   d3_geo_centroidZ0 += (z - d3_geo_centroidZ0) / d3_geo_centroidW0;
3928 }
3929
3930 function d3_geo_centroidLineStart() {
3931   var x0, y0, z0; // previous point
3932
3933   d3_geo_centroid.point = function(λ, φ) {
3934     λ *= d3_radians;
3935     var cosφ = Math.cos(φ *= d3_radians);
3936     x0 = cosφ * Math.cos(λ);
3937     y0 = cosφ * Math.sin(λ);
3938     z0 = Math.sin(φ);
3939     d3_geo_centroid.point = nextPoint;
3940     d3_geo_centroidPointXYZ(x0, y0, z0);
3941   };
3942
3943   function nextPoint(λ, φ) {
3944     λ *= d3_radians;
3945     var cosφ = Math.cos(φ *= d3_radians),
3946         x = cosφ * Math.cos(λ),
3947         y = cosφ * Math.sin(λ),
3948         z = Math.sin(φ),
3949         w = Math.atan2(
3950           Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w),
3951           x0 * x + y0 * y + z0 * z);
3952     d3_geo_centroidW1 += w;
3953     d3_geo_centroidX1 += w * (x0 + (x0 = x));
3954     d3_geo_centroidY1 += w * (y0 + (y0 = y));
3955     d3_geo_centroidZ1 += w * (z0 + (z0 = z));
3956     d3_geo_centroidPointXYZ(x0, y0, z0);
3957   }
3958 }
3959
3960 function d3_geo_centroidLineEnd() {
3961   d3_geo_centroid.point = d3_geo_centroidPoint;
3962 }
3963
3964 // See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
3965 // J. Applied Mechanics 42, 239 (1975).
3966 function d3_geo_centroidRingStart() {
3967   var λ00, φ00, // first point
3968       x0, y0, z0; // previous point
3969
3970   d3_geo_centroid.point = function(λ, φ) {
3971     λ00 = λ, φ00 = φ;
3972     d3_geo_centroid.point = nextPoint;
3973     λ *= d3_radians;
3974     var cosφ = Math.cos(φ *= d3_radians);
3975     x0 = cosφ * Math.cos(λ);
3976     y0 = cosφ * Math.sin(λ);
3977     z0 = Math.sin(φ);
3978     d3_geo_centroidPointXYZ(x0, y0, z0);
3979   };
3980
3981   d3_geo_centroid.lineEnd = function() {
3982     nextPoint(λ00, φ00);
3983     d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
3984     d3_geo_centroid.point = d3_geo_centroidPoint;
3985   };
3986
3987   function nextPoint(λ, φ) {
3988     λ *= d3_radians;
3989     var cosφ = Math.cos(φ *= d3_radians),
3990         x = cosφ * Math.cos(λ),
3991         y = cosφ * Math.sin(λ),
3992         z = Math.sin(φ),
3993         cx = y0 * z - z0 * y,
3994         cy = z0 * x - x0 * z,
3995         cz = x0 * y - y0 * x,
3996         m = Math.sqrt(cx * cx + cy * cy + cz * cz),
3997         u = x0 * x + y0 * y + z0 * z,
3998         v = m && -d3_acos(u) / m, // area weight
3999         w = Math.atan2(m, u); // line weight
4000     d3_geo_centroidX2 += v * cx;
4001     d3_geo_centroidY2 += v * cy;
4002     d3_geo_centroidZ2 += v * cz;
4003     d3_geo_centroidW1 += w;
4004     d3_geo_centroidX1 += w * (x0 + (x0 = x));
4005     d3_geo_centroidY1 += w * (y0 + (y0 = y));
4006     d3_geo_centroidZ1 += w * (z0 + (z0 = z));
4007     d3_geo_centroidPointXYZ(x0, y0, z0);
4008   }
4009 }
4010
4011 // TODO Unify this code with d3.geom.polygon area?
4012
4013 var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
4014   point: d3_noop,
4015   lineStart: d3_noop,
4016   lineEnd: d3_noop,
4017
4018   // Only count area for polygon rings.
4019   polygonStart: function() {
4020     d3_geo_pathAreaPolygon = 0;
4021     d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
4022   },
4023   polygonEnd: function() {
4024     d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
4025     d3_geo_pathAreaSum += abs(d3_geo_pathAreaPolygon / 2);
4026   }
4027 };
4028
4029 function d3_geo_pathAreaRingStart() {
4030   var x00, y00, x0, y0;
4031
4032   // For the first point, …
4033   d3_geo_pathArea.point = function(x, y) {
4034     d3_geo_pathArea.point = nextPoint;
4035     x00 = x0 = x, y00 = y0 = y;
4036   };
4037
4038   // For subsequent points, …
4039   function nextPoint(x, y) {
4040     d3_geo_pathAreaPolygon += y0 * x - x0 * y;
4041     x0 = x, y0 = y;
4042   }
4043
4044   // For the last point, return to the start.
4045   d3_geo_pathArea.lineEnd = function() {
4046     nextPoint(x00, y00);
4047   };
4048 }
4049
4050 var d3_geo_pathBoundsX0,
4051     d3_geo_pathBoundsY0,
4052     d3_geo_pathBoundsX1,
4053     d3_geo_pathBoundsY1;
4054
4055 var d3_geo_pathBounds = {
4056   point: d3_geo_pathBoundsPoint,
4057   lineStart: d3_noop,
4058   lineEnd: d3_noop,
4059   polygonStart: d3_noop,
4060   polygonEnd: d3_noop
4061 };
4062
4063 function d3_geo_pathBoundsPoint(x, y) {
4064   if (x < d3_geo_pathBoundsX0) d3_geo_pathBoundsX0 = x;
4065   if (x > d3_geo_pathBoundsX1) d3_geo_pathBoundsX1 = x;
4066   if (y < d3_geo_pathBoundsY0) d3_geo_pathBoundsY0 = y;
4067   if (y > d3_geo_pathBoundsY1) d3_geo_pathBoundsY1 = y;
4068 }
4069 function d3_geo_pathBuffer() {
4070   var pointCircle = d3_geo_pathBufferCircle(4.5),
4071       buffer = [];
4072
4073   var stream = {
4074     point: point,
4075
4076     // While inside a line, override point to moveTo then lineTo.
4077     lineStart: function() { stream.point = pointLineStart; },
4078     lineEnd: lineEnd,
4079
4080     // While inside a polygon, override lineEnd to closePath.
4081     polygonStart: function() { stream.lineEnd = lineEndPolygon; },
4082     polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },
4083
4084     pointRadius: function(_) {
4085       pointCircle = d3_geo_pathBufferCircle(_);
4086       return stream;
4087     },
4088
4089     result: function() {
4090       if (buffer.length) {
4091         var result = buffer.join("");
4092         buffer = [];
4093         return result;
4094       }
4095     }
4096   };
4097
4098   function point(x, y) {
4099     buffer.push("M", x, ",", y, pointCircle);
4100   }
4101
4102   function pointLineStart(x, y) {
4103     buffer.push("M", x, ",", y);
4104     stream.point = pointLine;
4105   }
4106
4107   function pointLine(x, y) {
4108     buffer.push("L", x, ",", y);
4109   }
4110
4111   function lineEnd() {
4112     stream.point = point;
4113   }
4114
4115   function lineEndPolygon() {
4116     buffer.push("Z");
4117   }
4118
4119   return stream;
4120 }
4121
4122 function d3_geo_pathBufferCircle(radius) {
4123   return "m0," + radius
4124       + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
4125       + "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
4126       + "z";
4127 }
4128
4129 // TODO Unify this code with d3.geom.polygon centroid?
4130 // TODO Enforce positive area for exterior, negative area for interior?
4131
4132 var d3_geo_pathCentroid = {
4133   point: d3_geo_pathCentroidPoint,
4134
4135   // For lines, weight by length.
4136   lineStart: d3_geo_pathCentroidLineStart,
4137   lineEnd: d3_geo_pathCentroidLineEnd,
4138
4139   // For polygons, weight by area.
4140   polygonStart: function() {
4141     d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
4142   },
4143   polygonEnd: function() {
4144     d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
4145     d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
4146     d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
4147   }
4148 };
4149
4150 function d3_geo_pathCentroidPoint(x, y) {
4151   d3_geo_centroidX0 += x;
4152   d3_geo_centroidY0 += y;
4153   ++d3_geo_centroidZ0;
4154 }
4155
4156 function d3_geo_pathCentroidLineStart() {
4157   var x0, y0;
4158
4159   d3_geo_pathCentroid.point = function(x, y) {
4160     d3_geo_pathCentroid.point = nextPoint;
4161     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4162   };
4163
4164   function nextPoint(x, y) {
4165     var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
4166     d3_geo_centroidX1 += z * (x0 + x) / 2;
4167     d3_geo_centroidY1 += z * (y0 + y) / 2;
4168     d3_geo_centroidZ1 += z;
4169     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4170   }
4171 }
4172
4173 function d3_geo_pathCentroidLineEnd() {
4174   d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
4175 }
4176
4177 function d3_geo_pathCentroidRingStart() {
4178   var x00, y00, x0, y0;
4179
4180   // For the first point, …
4181   d3_geo_pathCentroid.point = function(x, y) {
4182     d3_geo_pathCentroid.point = nextPoint;
4183     d3_geo_pathCentroidPoint(x00 = x0 = x, y00 = y0 = y);
4184   };
4185
4186   // For subsequent points, …
4187   function nextPoint(x, y) {
4188     var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
4189     d3_geo_centroidX1 += z * (x0 + x) / 2;
4190     d3_geo_centroidY1 += z * (y0 + y) / 2;
4191     d3_geo_centroidZ1 += z;
4192
4193     z = y0 * x - x0 * y;
4194     d3_geo_centroidX2 += z * (x0 + x);
4195     d3_geo_centroidY2 += z * (y0 + y);
4196     d3_geo_centroidZ2 += z * 3;
4197     d3_geo_pathCentroidPoint(x0 = x, y0 = y);
4198   }
4199
4200   // For the last point, return to the start.
4201   d3_geo_pathCentroid.lineEnd = function() {
4202     nextPoint(x00, y00);
4203   };
4204 }
4205
4206 function d3_geo_pathContext(context) {
4207   var pointRadius = 4.5;
4208
4209   var stream = {
4210     point: point,
4211
4212     // While inside a line, override point to moveTo then lineTo.
4213     lineStart: function() { stream.point = pointLineStart; },
4214     lineEnd: lineEnd,
4215
4216     // While inside a polygon, override lineEnd to closePath.
4217     polygonStart: function() { stream.lineEnd = lineEndPolygon; },
4218     polygonEnd: function() { stream.lineEnd = lineEnd; stream.point = point; },
4219
4220     pointRadius: function(_) {
4221       pointRadius = _;
4222       return stream;
4223     },
4224
4225     result: d3_noop
4226   };
4227
4228   function point(x, y) {
4229     context.moveTo(x + pointRadius, y);
4230     context.arc(x, y, pointRadius, 0, τ);
4231   }
4232
4233   function pointLineStart(x, y) {
4234     context.moveTo(x, y);
4235     stream.point = pointLine;
4236   }
4237
4238   function pointLine(x, y) {
4239     context.lineTo(x, y);
4240   }
4241
4242   function lineEnd() {
4243     stream.point = point;
4244   }
4245
4246   function lineEndPolygon() {
4247     context.closePath();
4248   }
4249
4250   return stream;
4251 }
4252
4253 function d3_geo_resample(project) {
4254   var δ2 = .5, // precision, px²
4255       cosMinDistance = Math.cos(30 * d3_radians), // cos(minimum angular distance)
4256       maxDepth = 16;
4257
4258   function resample(stream) {
4259     return (maxDepth ? resampleRecursive : resampleNone)(stream);
4260   }
4261
4262   function resampleNone(stream) {
4263     return d3_geo_transformPoint(stream, function(x, y) {
4264       x = project(x, y);
4265       stream.point(x[0], x[1]);
4266     });
4267   }
4268
4269   function resampleRecursive(stream) {
4270     var λ00, φ00, x00, y00, a00, b00, c00, // first point
4271         λ0, x0, y0, a0, b0, c0; // previous point
4272
4273     var resample = {
4274       point: point,
4275       lineStart: lineStart,
4276       lineEnd: lineEnd,
4277       polygonStart: function() { stream.polygonStart(); resample.lineStart = ringStart; },
4278       polygonEnd: function() { stream.polygonEnd(); resample.lineStart = lineStart; }
4279     };
4280
4281     function point(x, y) {
4282       x = project(x, y);
4283       stream.point(x[0], x[1]);
4284     }
4285
4286     function lineStart() {
4287       x0 = NaN;
4288       resample.point = linePoint;
4289       stream.lineStart();
4290     }
4291
4292     function linePoint(λ, φ) {
4293       var c = d3_geo_cartesian([λ, φ]), p = project(λ, φ);
4294       resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
4295       stream.point(x0, y0);
4296     }
4297
4298     function lineEnd() {
4299       resample.point = point;
4300       stream.lineEnd();
4301     }
4302
4303     function ringStart() {
4304       lineStart();
4305       resample.point = ringPoint;
4306       resample.lineEnd = ringEnd;
4307     }
4308
4309     function ringPoint(λ, φ) {
4310       linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
4311       resample.point = linePoint;
4312     }
4313
4314     function ringEnd() {
4315       resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
4316       resample.lineEnd = lineEnd;
4317       lineEnd();
4318     }
4319
4320     return resample;
4321   }
4322
4323   function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
4324     var dx = x1 - x0,
4325         dy = y1 - y0,
4326         d2 = dx * dx + dy * dy;
4327     if (d2 > 4 * δ2 && depth--) {
4328       var a = a0 + a1,
4329           b = b0 + b1,
4330           c = c0 + c1,
4331           m = Math.sqrt(a * a + b * b + c * c),
4332           φ2 = Math.asin(c /= m),
4333           λ2 = abs(abs(c) - 1) < ε || abs(λ0 - λ1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a),
4334           p = project(λ2, φ2),
4335           x2 = p[0],
4336           y2 = p[1],
4337           dx2 = x2 - x0,
4338           dy2 = y2 - y0,
4339           dz = dy * dx2 - dx * dy2;
4340       if (dz * dz / d2 > δ2 // perpendicular projected distance
4341           || abs((dx * dx2 + dy * dy2) / d2 - .5) > .3 // midpoint close to an end
4342           || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
4343         resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
4344         stream.point(x2, y2);
4345         resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
4346       }
4347     }
4348   }
4349
4350   resample.precision = function(_) {
4351     if (!arguments.length) return Math.sqrt(δ2);
4352     maxDepth = (δ2 = _ * _) > 0 && 16;
4353     return resample;
4354   };
4355
4356   return resample;
4357 }
4358
4359 d3.geo.path = function() {
4360   var pointRadius = 4.5,
4361       projection,
4362       context,
4363       projectStream,
4364       contextStream,
4365       cacheStream;
4366
4367   function path(object) {
4368     if (object) {
4369       if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
4370       if (!cacheStream || !cacheStream.valid) cacheStream = projectStream(contextStream);
4371       d3.geo.stream(object, cacheStream);
4372     }
4373     return contextStream.result();
4374   }
4375
4376   path.area = function(object) {
4377     d3_geo_pathAreaSum = 0;
4378     d3.geo.stream(object, projectStream(d3_geo_pathArea));
4379     return d3_geo_pathAreaSum;
4380   };
4381
4382   path.centroid = function(object) {
4383     d3_geo_centroidX0 = d3_geo_centroidY0 = d3_geo_centroidZ0 =
4384     d3_geo_centroidX1 = d3_geo_centroidY1 = d3_geo_centroidZ1 =
4385     d3_geo_centroidX2 = d3_geo_centroidY2 = d3_geo_centroidZ2 = 0;
4386     d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
4387     return d3_geo_centroidZ2 ? [d3_geo_centroidX2 / d3_geo_centroidZ2, d3_geo_centroidY2 / d3_geo_centroidZ2]
4388         : d3_geo_centroidZ1 ? [d3_geo_centroidX1 / d3_geo_centroidZ1, d3_geo_centroidY1 / d3_geo_centroidZ1]
4389         : d3_geo_centroidZ0 ? [d3_geo_centroidX0 / d3_geo_centroidZ0, d3_geo_centroidY0 / d3_geo_centroidZ0]
4390         : [NaN, NaN];
4391   };
4392
4393   path.bounds = function(object) {
4394     d3_geo_pathBoundsX1 = d3_geo_pathBoundsY1 = -(d3_geo_pathBoundsX0 = d3_geo_pathBoundsY0 = Infinity);
4395     d3.geo.stream(object, projectStream(d3_geo_pathBounds));
4396     return [[d3_geo_pathBoundsX0, d3_geo_pathBoundsY0], [d3_geo_pathBoundsX1, d3_geo_pathBoundsY1]];
4397   };
4398
4399   path.projection = function(_) {
4400     if (!arguments.length) return projection;
4401     projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
4402     return reset();
4403   };
4404
4405   path.context = function(_) {
4406     if (!arguments.length) return context;
4407     contextStream = (context = _) == null ? new d3_geo_pathBuffer : new d3_geo_pathContext(_);
4408     if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
4409     return reset();
4410   };
4411
4412   path.pointRadius = function(_) {
4413     if (!arguments.length) return pointRadius;
4414     pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
4415     return path;
4416   };
4417
4418   function reset() {
4419     cacheStream = null;
4420     return path;
4421   }
4422
4423   return path.projection(d3.geo.albersUsa()).context(null);
4424 };
4425
4426 function d3_geo_pathProjectStream(project) {
4427   var resample = d3_geo_resample(function(x, y) { return project([x * d3_degrees, y * d3_degrees]); });
4428   return function(stream) { return d3_geo_projectionRadians(resample(stream)); };
4429 }
4430
4431 d3.geo.transform = function(methods) {
4432   return {
4433     stream: function(stream) {
4434       var transform = new d3_geo_transform(stream);
4435       for (var k in methods) transform[k] = methods[k];
4436       return transform;
4437     }
4438   };
4439 };
4440
4441 function d3_geo_transform(stream) {
4442   this.stream = stream;
4443 }
4444
4445 d3_geo_transform.prototype = {
4446   point: function(x, y) { this.stream.point(x, y); },
4447   sphere: function() { this.stream.sphere(); },
4448   lineStart: function() { this.stream.lineStart(); },
4449   lineEnd: function() { this.stream.lineEnd(); },
4450   polygonStart: function() { this.stream.polygonStart(); },
4451   polygonEnd: function() { this.stream.polygonEnd(); }
4452 };
4453
4454 function d3_geo_transformPoint(stream, point) {
4455   return {
4456     point: point,
4457     sphere: function() { stream.sphere(); },
4458     lineStart: function() { stream.lineStart(); },
4459     lineEnd: function() { stream.lineEnd(); },
4460     polygonStart: function() { stream.polygonStart(); },
4461     polygonEnd: function() { stream.polygonEnd(); },
4462   };
4463 }
4464
4465 d3.geo.projection = d3_geo_projection;
4466 d3.geo.projectionMutator = d3_geo_projectionMutator;
4467
4468 function d3_geo_projection(project) {
4469   return d3_geo_projectionMutator(function() { return project; })();
4470 }
4471
4472 function d3_geo_projectionMutator(projectAt) {
4473   var project,
4474       rotate,
4475       projectRotate,
4476       projectResample = d3_geo_resample(function(x, y) { x = project(x, y); return [x[0] * k + δx, δy - x[1] * k]; }),
4477       k = 150, // scale
4478       x = 480, y = 250, // translate
4479       λ = 0, φ = 0, // center
4480       δλ = 0, δφ = 0, δγ = 0, // rotate
4481       δx, δy, // center
4482       preclip = d3_geo_clipAntimeridian,
4483       postclip = d3_identity,
4484       clipAngle = null,
4485       clipExtent = null,
4486       stream;
4487
4488   function projection(point) {
4489     point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
4490     return [point[0] * k + δx, δy - point[1] * k];
4491   }
4492
4493   function invert(point) {
4494     point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
4495     return point && [point[0] * d3_degrees, point[1] * d3_degrees];
4496   }
4497
4498   projection.stream = function(output) {
4499     if (stream) stream.valid = false;
4500     stream = d3_geo_projectionRadians(preclip(rotate, projectResample(postclip(output))));
4501     stream.valid = true; // allow caching by d3.geo.path
4502     return stream;
4503   };
4504
4505   projection.clipAngle = function(_) {
4506     if (!arguments.length) return clipAngle;
4507     preclip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle((clipAngle = +_) * d3_radians);
4508     return invalidate();
4509   };
4510
4511   projection.clipExtent = function(_) {
4512     if (!arguments.length) return clipExtent;
4513     clipExtent = _;
4514     postclip = _ ? d3_geo_clipExtent(_[0][0], _[0][1], _[1][0], _[1][1]) : d3_identity;
4515     return invalidate();
4516   };
4517
4518   projection.scale = function(_) {
4519     if (!arguments.length) return k;
4520     k = +_;
4521     return reset();
4522   };
4523
4524   projection.translate = function(_) {
4525     if (!arguments.length) return [x, y];
4526     x = +_[0];
4527     y = +_[1];
4528     return reset();
4529   };
4530
4531   projection.center = function(_) {
4532     if (!arguments.length) return [λ * d3_degrees, φ * d3_degrees];
4533     λ = _[0] % 360 * d3_radians;
4534     φ = _[1] % 360 * d3_radians;
4535     return reset();
4536   };
4537
4538   projection.rotate = function(_) {
4539     if (!arguments.length) return [δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees];
4540     δλ = _[0] % 360 * d3_radians;
4541     δφ = _[1] % 360 * d3_radians;
4542     δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
4543     return reset();
4544   };
4545
4546   d3.rebind(projection, projectResample, "precision");
4547
4548   function reset() {
4549     projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
4550     var center = project(λ, φ);
4551     δx = x - center[0] * k;
4552     δy = y + center[1] * k;
4553     return invalidate();
4554   }
4555
4556   function invalidate() {
4557     if (stream) stream.valid = false, stream = null;
4558     return projection;
4559   }
4560
4561   return function() {
4562     project = projectAt.apply(this, arguments);
4563     projection.invert = project.invert && invert;
4564     return reset();
4565   };
4566 }
4567
4568 function d3_geo_projectionRadians(stream) {
4569   return d3_geo_transformPoint(stream, function(x, y) {
4570     stream.point(x * d3_radians, y * d3_radians);
4571   });
4572 }
4573
4574 function d3_geo_mercator(λ, φ) {
4575   return [λ, Math.log(Math.tan(π / 4 + φ / 2))];
4576 }
4577
4578 d3_geo_mercator.invert = function(x, y) {
4579   return [x, 2 * Math.atan(Math.exp(y)) - halfπ];
4580 };
4581
4582 function d3_geo_mercatorProjection(project) {
4583   var m = d3_geo_projection(project),
4584       scale = m.scale,
4585       translate = m.translate,
4586       clipExtent = m.clipExtent,
4587       clipAuto;
4588
4589   m.scale = function() {
4590     var v = scale.apply(m, arguments);
4591     return v === m ? (clipAuto ? m.clipExtent(null) : m) : v;
4592   };
4593
4594   m.translate = function() {
4595     var v = translate.apply(m, arguments);
4596     return v === m ? (clipAuto ? m.clipExtent(null) : m) : v;
4597   };
4598
4599   m.clipExtent = function(_) {
4600     var v = clipExtent.apply(m, arguments);
4601     if (v === m) {
4602       if (clipAuto = _ == null) {
4603         var k = π * scale(), t = translate();
4604         clipExtent([[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]]);
4605       }
4606     } else if (clipAuto) {
4607       v = null;
4608     }
4609     return v;
4610   };
4611
4612   return m.clipExtent(null);
4613 }
4614
4615 (d3.geo.mercator = function() {
4616   return d3_geo_mercatorProjection(d3_geo_mercator);
4617 }).raw = d3_geo_mercator;
4618 d3.geom = {};
4619
4620 d3.geom.polygon = function(coordinates) {
4621   d3_subclass(coordinates, d3_geom_polygonPrototype);
4622   return coordinates;
4623 };
4624
4625 var d3_geom_polygonPrototype = d3.geom.polygon.prototype = [];
4626
4627 d3_geom_polygonPrototype.area = function() {
4628   var i = -1,
4629       n = this.length,
4630       a,
4631       b = this[n - 1],
4632       area = 0;
4633
4634   while (++i < n) {
4635     a = b;
4636     b = this[i];
4637     area += a[1] * b[0] - a[0] * b[1];
4638   }
4639
4640   return area * .5;
4641 };
4642
4643 d3_geom_polygonPrototype.centroid = function(k) {
4644   var i = -1,
4645       n = this.length,
4646       x = 0,
4647       y = 0,
4648       a,
4649       b = this[n - 1],
4650       c;
4651
4652   if (!arguments.length) k = -1 / (6 * this.area());
4653
4654   while (++i < n) {
4655     a = b;
4656     b = this[i];
4657     c = a[0] * b[1] - b[0] * a[1];
4658     x += (a[0] + b[0]) * c;
4659     y += (a[1] + b[1]) * c;
4660   }
4661
4662   return [x * k, y * k];
4663 };
4664
4665 // The Sutherland-Hodgman clipping algorithm.
4666 // Note: requires the clip polygon to be counterclockwise and convex.
4667 d3_geom_polygonPrototype.clip = function(subject) {
4668   var input,
4669       closed = d3_geom_polygonClosed(subject),
4670       i = -1,
4671       n = this.length - d3_geom_polygonClosed(this),
4672       j,
4673       m,
4674       a = this[n - 1],
4675       b,
4676       c,
4677       d;
4678
4679   while (++i < n) {
4680     input = subject.slice();
4681     subject.length = 0;
4682     b = this[i];
4683     c = input[(m = input.length - closed) - 1];
4684     j = -1;
4685     while (++j < m) {
4686       d = input[j];
4687       if (d3_geom_polygonInside(d, a, b)) {
4688         if (!d3_geom_polygonInside(c, a, b)) {
4689           subject.push(d3_geom_polygonIntersect(c, d, a, b));
4690         }
4691         subject.push(d);
4692       } else if (d3_geom_polygonInside(c, a, b)) {
4693         subject.push(d3_geom_polygonIntersect(c, d, a, b));
4694       }
4695       c = d;
4696     }
4697     if (closed) subject.push(subject[0]);
4698     a = b;
4699   }
4700
4701   return subject;
4702 };
4703
4704 function d3_geom_polygonInside(p, a, b) {
4705   return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
4706 }
4707
4708 // Intersect two infinite lines cd and ab.
4709 function d3_geom_polygonIntersect(c, d, a, b) {
4710   var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3,
4711       y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3,
4712       ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
4713   return [x1 + ua * x21, y1 + ua * y21];
4714 }
4715
4716 // Returns true if the polygon is closed.
4717 function d3_geom_polygonClosed(coordinates) {
4718   var a = coordinates[0],
4719       b = coordinates[coordinates.length - 1];
4720   return !(a[0] - b[0] || a[1] - b[1]);
4721 }
4722 function d3_geom_pointX(d) {
4723   return d[0];
4724 }
4725
4726 function d3_geom_pointY(d) {
4727   return d[1];
4728 }
4729
4730 /**
4731  * Computes the 2D convex hull of a set of points using the monotone chain
4732  * algorithm:
4733  * http://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain)
4734  *
4735  * The runtime of this algorithm is O(n log n), where n is the number of input
4736  * points. However in practice it outperforms other O(n log n) hulls.
4737  *
4738  * @param vertices [[x1, y1], [x2, y2], ...]
4739  * @returns polygon [[x1, y1], [x2, y2], ...]
4740  */
4741 d3.geom.hull = function(vertices) {
4742   var x = d3_geom_pointX,
4743       y = d3_geom_pointY;
4744
4745   if (arguments.length) return hull(vertices);
4746
4747   function hull(data) {
4748     // Hull of < 3 points is not well-defined
4749     if (data.length < 3) return [];
4750
4751     var fx = d3_functor(x),
4752         fy = d3_functor(y),
4753         i,
4754         n = data.length,
4755         points = [], // of the form [[x0, y0, 0], ..., [xn, yn, n]]
4756         flippedPoints = [];
4757
4758     for (i = 0 ; i < n; i++) {
4759       points.push([+fx.call(this, data[i], i), +fy.call(this, data[i], i), i]);
4760     }
4761
4762     // sort ascending by x-coord first, y-coord second
4763     points.sort(d3_geom_hullOrder);
4764
4765     // we flip bottommost points across y axis so we can use the upper hull routine on both
4766     for (i = 0; i < n; i++) flippedPoints.push([points[i][0], -points[i][1]]);
4767
4768     var upper = d3_geom_hullUpper(points),
4769         lower = d3_geom_hullUpper(flippedPoints);
4770
4771     // construct the polygon, removing possible duplicate endpoints
4772     var skipLeft = lower[0] === upper[0],
4773         skipRight  = lower[lower.length - 1] === upper[upper.length - 1],
4774         polygon = [];
4775
4776     // add upper hull in r->l order
4777     // then add lower hull in l->r order
4778     for (i = upper.length - 1; i >= 0; --i) polygon.push(data[points[upper[i]][2]]);
4779     for (i = +skipLeft; i < lower.length - skipRight; ++i) polygon.push(data[points[lower[i]][2]]);
4780
4781     return polygon;
4782   }
4783
4784   hull.x = function(_) {
4785     return arguments.length ? (x = _, hull) : x;
4786   };
4787
4788   hull.y = function(_) {
4789     return arguments.length ? (y = _, hull) : y;
4790   };
4791
4792   return hull;
4793 };
4794
4795 // finds the 'upper convex hull' (see wiki link above)
4796 // assumes points arg has >=3 elements, is sorted by x, unique in y
4797 // returns array of indices into points in left to right order
4798 function d3_geom_hullUpper(points) {
4799   var n = points.length,
4800       hull = [0, 1],
4801       hs = 2; // hull size
4802
4803   for (var i = 2; i < n; i++) {
4804     while (hs > 1 && d3_cross2d(points[hull[hs-2]], points[hull[hs-1]], points[i]) <= 0) --hs;
4805     hull[hs++] = i;
4806   }
4807
4808   // we slice to make sure that the points we 'popped' from hull don't stay behind
4809   return hull.slice(0, hs);
4810 }
4811
4812 // comparator for ascending sort by x-coord first, y-coord second
4813 function d3_geom_hullOrder(a, b) {
4814   return a[0] - b[0] || a[1] - b[1];
4815 }
4816 // import "../transition/transition";
4817
4818 d3_selectionPrototype.transition = function(name) {
4819   var id = d3_transitionInheritId || ++d3_transitionId,
4820       ns = d3_transitionNamespace(name),
4821       subgroups = [],
4822       subgroup,
4823       node,
4824       transition = d3_transitionInherit || {time: Date.now(), ease: d3_ease_cubicInOut, delay: 0, duration: 250};
4825
4826   for (var j = -1, m = this.length; ++j < m;) {
4827     subgroups.push(subgroup = []);
4828     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4829       if (node = group[i]) d3_transitionNode(node, i, ns, id, transition);
4830       subgroup.push(node);
4831     }
4832   }
4833
4834   return d3_transition(subgroups, ns, id);
4835 };
4836 // import "../transition/transition";
4837
4838 // TODO Interrupt transitions for all namespaces?
4839 d3_selectionPrototype.interrupt = function(name) {
4840   return this.each(name == null
4841       ? d3_selection_interrupt
4842       : d3_selection_interruptNS(d3_transitionNamespace(name)));
4843 };
4844
4845 var d3_selection_interrupt = d3_selection_interruptNS(d3_transitionNamespace());
4846
4847 function d3_selection_interruptNS(ns) {
4848   return function() {
4849     var lock, active;
4850     if ((lock = this[ns]) && (active = lock[lock.active])) {
4851       if (--lock.count) delete lock[lock.active];
4852       else delete this[ns];
4853       lock.active += .5;
4854       active.event && active.event.interrupt.call(this, this.__data__, active.index);
4855     }
4856   };
4857 }
4858
4859 function d3_transition(groups, ns, id) {
4860   d3_subclass(groups, d3_transitionPrototype);
4861
4862   // Note: read-only!
4863   groups.namespace = ns;
4864   groups.id = id;
4865
4866   return groups;
4867 }
4868
4869 var d3_transitionPrototype = [],
4870     d3_transitionId = 0,
4871     d3_transitionInheritId,
4872     d3_transitionInherit;
4873
4874 d3_transitionPrototype.call = d3_selectionPrototype.call;
4875 d3_transitionPrototype.empty = d3_selectionPrototype.empty;
4876 d3_transitionPrototype.node = d3_selectionPrototype.node;
4877 d3_transitionPrototype.size = d3_selectionPrototype.size;
4878
4879 d3.transition = function(selection, name) {
4880   return selection && selection.transition
4881       ? (d3_transitionInheritId ? selection.transition(name) : selection)
4882       : d3.selection().transition(selection);
4883 };
4884
4885 d3.transition.prototype = d3_transitionPrototype;
4886
4887
4888 d3_transitionPrototype.select = function(selector) {
4889   var id = this.id,
4890       ns = this.namespace,
4891       subgroups = [],
4892       subgroup,
4893       subnode,
4894       node;
4895
4896   selector = d3_selection_selector(selector);
4897
4898   for (var j = -1, m = this.length; ++j < m;) {
4899     subgroups.push(subgroup = []);
4900     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4901       if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i, j))) {
4902         if ("__data__" in node) subnode.__data__ = node.__data__;
4903         d3_transitionNode(subnode, i, ns, id, node[ns][id]);
4904         subgroup.push(subnode);
4905       } else {
4906         subgroup.push(null);
4907       }
4908     }
4909   }
4910
4911   return d3_transition(subgroups, ns, id);
4912 };
4913
4914 d3_transitionPrototype.selectAll = function(selector) {
4915   var id = this.id,
4916       ns = this.namespace,
4917       subgroups = [],
4918       subgroup,
4919       subnodes,
4920       node,
4921       subnode,
4922       transition;
4923
4924   selector = d3_selection_selectorAll(selector);
4925
4926   for (var j = -1, m = this.length; ++j < m;) {
4927     for (var group = this[j], i = -1, n = group.length; ++i < n;) {
4928       if (node = group[i]) {
4929         transition = node[ns][id];
4930         subnodes = selector.call(node, node.__data__, i, j);
4931         subgroups.push(subgroup = []);
4932         for (var k = -1, o = subnodes.length; ++k < o;) {
4933           if (subnode = subnodes[k]) d3_transitionNode(subnode, k, ns, id, transition);
4934           subgroup.push(subnode);
4935         }
4936       }
4937     }
4938   }
4939
4940   return d3_transition(subgroups, ns, id);
4941 };
4942
4943 d3_transitionPrototype.filter = function(filter) {
4944   var subgroups = [],
4945       subgroup,
4946       group,
4947       node;
4948
4949   if (typeof filter !== "function") filter = d3_selection_filter(filter);
4950
4951   for (var j = 0, m = this.length; j < m; j++) {
4952     subgroups.push(subgroup = []);
4953     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
4954       if ((node = group[i]) && filter.call(node, node.__data__, i, j)) {
4955         subgroup.push(node);
4956       }
4957     }
4958   }
4959
4960   return d3_transition(subgroups, this.namespace, this.id);
4961 };
4962 d3.color = d3_color;
4963
4964 function d3_color() {}
4965
4966 d3_color.prototype.toString = function() {
4967   return this.rgb() + "";
4968 };
4969
4970 d3.hsl = d3_hsl;
4971
4972 function d3_hsl(h, s, l) {
4973   return this instanceof d3_hsl ? void (this.h = +h, this.s = +s, this.l = +l)
4974       : arguments.length < 2 ? (h instanceof d3_hsl ? new d3_hsl(h.h, h.s, h.l)
4975       : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl))
4976       : new d3_hsl(h, s, l);
4977 }
4978
4979 var d3_hslPrototype = d3_hsl.prototype = new d3_color;
4980
4981 d3_hslPrototype.brighter = function(k) {
4982   k = Math.pow(0.7, arguments.length ? k : 1);
4983   return new d3_hsl(this.h, this.s, this.l / k);
4984 };
4985
4986 d3_hslPrototype.darker = function(k) {
4987   k = Math.pow(0.7, arguments.length ? k : 1);
4988   return new d3_hsl(this.h, this.s, k * this.l);
4989 };
4990
4991 d3_hslPrototype.rgb = function() {
4992   return d3_hsl_rgb(this.h, this.s, this.l);
4993 };
4994
4995 function d3_hsl_rgb(h, s, l) {
4996   var m1,
4997       m2;
4998
4999   /* Some simple corrections for h, s and l. */
5000   h = isNaN(h) ? 0 : (h %= 360) < 0 ? h + 360 : h;
5001   s = isNaN(s) ? 0 : s < 0 ? 0 : s > 1 ? 1 : s;
5002   l = l < 0 ? 0 : l > 1 ? 1 : l;
5003
5004   /* From FvD 13.37, CSS Color Module Level 3 */
5005   m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
5006   m1 = 2 * l - m2;
5007
5008   function v(h) {
5009     if (h > 360) h -= 360;
5010     else if (h < 0) h += 360;
5011     if (h < 60) return m1 + (m2 - m1) * h / 60;
5012     if (h < 180) return m2;
5013     if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
5014     return m1;
5015   }
5016
5017   function vv(h) {
5018     return Math.round(v(h) * 255);
5019   }
5020
5021   return new d3_rgb(vv(h + 120), vv(h), vv(h - 120));
5022 }
5023
5024 d3.hcl = d3_hcl;
5025
5026 function d3_hcl(h, c, l) {
5027   return this instanceof d3_hcl ? void (this.h = +h, this.c = +c, this.l = +l)
5028       : arguments.length < 2 ? (h instanceof d3_hcl ? new d3_hcl(h.h, h.c, h.l)
5029       : (h instanceof d3_lab ? d3_lab_hcl(h.l, h.a, h.b)
5030       : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b)))
5031       : new d3_hcl(h, c, l);
5032 }
5033
5034 var d3_hclPrototype = d3_hcl.prototype = new d3_color;
5035
5036 d3_hclPrototype.brighter = function(k) {
5037   return new d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
5038 };
5039
5040 d3_hclPrototype.darker = function(k) {
5041   return new d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
5042 };
5043
5044 d3_hclPrototype.rgb = function() {
5045   return d3_hcl_lab(this.h, this.c, this.l).rgb();
5046 };
5047
5048 function d3_hcl_lab(h, c, l) {
5049   if (isNaN(h)) h = 0;
5050   if (isNaN(c)) c = 0;
5051   return new d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
5052 }
5053
5054 d3.lab = d3_lab;
5055
5056 function d3_lab(l, a, b) {
5057   return this instanceof d3_lab ? void (this.l = +l, this.a = +a, this.b = +b)
5058       : arguments.length < 2 ? (l instanceof d3_lab ? new d3_lab(l.l, l.a, l.b)
5059       : (l instanceof d3_hcl ? d3_hcl_lab(l.h, l.c, l.l)
5060       : d3_rgb_lab((l = d3_rgb(l)).r, l.g, l.b)))
5061       : new d3_lab(l, a, b);
5062 }
5063
5064 // Corresponds roughly to RGB brighter/darker
5065 var d3_lab_K = 18;
5066
5067 // D65 standard referent
5068 var d3_lab_X = 0.950470,
5069     d3_lab_Y = 1,
5070     d3_lab_Z = 1.088830;
5071
5072 var d3_labPrototype = d3_lab.prototype = new d3_color;
5073
5074 d3_labPrototype.brighter = function(k) {
5075   return new d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
5076 };
5077
5078 d3_labPrototype.darker = function(k) {
5079   return new d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
5080 };
5081
5082 d3_labPrototype.rgb = function() {
5083   return d3_lab_rgb(this.l, this.a, this.b);
5084 };
5085
5086 function d3_lab_rgb(l, a, b) {
5087   var y = (l + 16) / 116,
5088       x = y + a / 500,
5089       z = y - b / 200;
5090   x = d3_lab_xyz(x) * d3_lab_X;
5091   y = d3_lab_xyz(y) * d3_lab_Y;
5092   z = d3_lab_xyz(z) * d3_lab_Z;
5093   return new d3_rgb(
5094     d3_xyz_rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z),
5095     d3_xyz_rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),
5096     d3_xyz_rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z)
5097   );
5098 }
5099
5100 function d3_lab_hcl(l, a, b) {
5101   return l > 0
5102       ? new d3_hcl(Math.atan2(b, a) * d3_degrees, Math.sqrt(a * a + b * b), l)
5103       : new d3_hcl(NaN, NaN, l);
5104 }
5105
5106 function d3_lab_xyz(x) {
5107   return x > 0.206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
5108 }
5109 function d3_xyz_lab(x) {
5110   return x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
5111 }
5112
5113 function d3_xyz_rgb(r) {
5114   return Math.round(255 * (r <= 0.00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055));
5115 }
5116
5117 d3.rgb = d3_rgb;
5118
5119 function d3_rgb(r, g, b) {
5120   return this instanceof d3_rgb ? void (this.r = ~~r, this.g = ~~g, this.b = ~~b)
5121       : arguments.length < 2 ? (r instanceof d3_rgb ? new d3_rgb(r.r, r.g, r.b)
5122       : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb))
5123       : new d3_rgb(r, g, b);
5124 }
5125
5126 function d3_rgbNumber(value) {
5127   return new d3_rgb(value >> 16, value >> 8 & 0xff, value & 0xff);
5128 }
5129
5130 function d3_rgbString(value) {
5131   return d3_rgbNumber(value) + "";
5132 }
5133
5134 var d3_rgbPrototype = d3_rgb.prototype = new d3_color;
5135
5136 d3_rgbPrototype.brighter = function(k) {
5137   k = Math.pow(0.7, arguments.length ? k : 1);
5138   var r = this.r,
5139       g = this.g,
5140       b = this.b,
5141       i = 30;
5142   if (!r && !g && !b) return new d3_rgb(i, i, i);
5143   if (r && r < i) r = i;
5144   if (g && g < i) g = i;
5145   if (b && b < i) b = i;
5146   return new d3_rgb(Math.min(255, r / k), Math.min(255, g / k), Math.min(255, b / k));
5147 };
5148
5149 d3_rgbPrototype.darker = function(k) {
5150   k = Math.pow(0.7, arguments.length ? k : 1);
5151   return new d3_rgb(k * this.r, k * this.g, k * this.b);
5152 };
5153
5154 d3_rgbPrototype.hsl = function() {
5155   return d3_rgb_hsl(this.r, this.g, this.b);
5156 };
5157
5158 d3_rgbPrototype.toString = function() {
5159   return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
5160 };
5161
5162 function d3_rgb_hex(v) {
5163   return v < 0x10
5164       ? "0" + Math.max(0, v).toString(16)
5165       : Math.min(255, v).toString(16);
5166 }
5167
5168 function d3_rgb_parse(format, rgb, hsl) {
5169   var r = 0, // red channel; int in [0, 255]
5170       g = 0, // green channel; int in [0, 255]
5171       b = 0, // blue channel; int in [0, 255]
5172       m1, // CSS color specification match
5173       m2, // CSS color specification type (e.g., rgb)
5174       color;
5175
5176   /* Handle hsl, rgb. */
5177   m1 = /([a-z]+)\((.*)\)/i.exec(format);
5178   if (m1) {
5179     m2 = m1[2].split(",");
5180     switch (m1[1]) {
5181       case "hsl": {
5182         return hsl(
5183           parseFloat(m2[0]), // degrees
5184           parseFloat(m2[1]) / 100, // percentage
5185           parseFloat(m2[2]) / 100 // percentage
5186         );
5187       }
5188       case "rgb": {
5189         return rgb(
5190           d3_rgb_parseNumber(m2[0]),
5191           d3_rgb_parseNumber(m2[1]),
5192           d3_rgb_parseNumber(m2[2])
5193         );
5194       }
5195     }
5196   }
5197
5198   /* Named colors. */
5199   if (color = d3_rgb_names.get(format.toLowerCase())) {
5200     return rgb(color.r, color.g, color.b);
5201   }
5202
5203   /* Hexadecimal colors: #rgb and #rrggbb. */
5204   if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) {
5205     if (format.length === 4) {
5206       r = (color & 0xf00) >> 4; r = (r >> 4) | r;
5207       g = (color & 0xf0); g = (g >> 4) | g;
5208       b = (color & 0xf); b = (b << 4) | b;
5209     } else if (format.length === 7) {
5210       r = (color & 0xff0000) >> 16;
5211       g = (color & 0xff00) >> 8;
5212       b = (color & 0xff);
5213     }
5214   }
5215
5216   return rgb(r, g, b);
5217 }
5218
5219 function d3_rgb_hsl(r, g, b) {
5220   var min = Math.min(r /= 255, g /= 255, b /= 255),
5221       max = Math.max(r, g, b),
5222       d = max - min,
5223       h,
5224       s,
5225       l = (max + min) / 2;
5226   if (d) {
5227     s = l < .5 ? d / (max + min) : d / (2 - max - min);
5228     if (r == max) h = (g - b) / d + (g < b ? 6 : 0);
5229     else if (g == max) h = (b - r) / d + 2;
5230     else h = (r - g) / d + 4;
5231     h *= 60;
5232   } else {
5233     h = NaN;
5234     s = l > 0 && l < 1 ? 0 : h;
5235   }
5236   return new d3_hsl(h, s, l);
5237 }
5238
5239 function d3_rgb_lab(r, g, b) {
5240   r = d3_rgb_xyz(r);
5241   g = d3_rgb_xyz(g);
5242   b = d3_rgb_xyz(b);
5243   var x = d3_xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / d3_lab_X),
5244       y = d3_xyz_lab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / d3_lab_Y),
5245       z = d3_xyz_lab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / d3_lab_Z);
5246   return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
5247 }
5248
5249 function d3_rgb_xyz(r) {
5250   return (r /= 255) <= 0.04045 ? r / 12.92 : Math.pow((r + 0.055) / 1.055, 2.4);
5251 }
5252
5253 function d3_rgb_parseNumber(c) { // either integer or percentage
5254   var f = parseFloat(c);
5255   return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
5256 }
5257
5258 var d3_rgb_names = d3.map({
5259   aliceblue: 0xf0f8ff,
5260   antiquewhite: 0xfaebd7,
5261   aqua: 0x00ffff,
5262   aquamarine: 0x7fffd4,
5263   azure: 0xf0ffff,
5264   beige: 0xf5f5dc,
5265   bisque: 0xffe4c4,
5266   black: 0x000000,
5267   blanchedalmond: 0xffebcd,
5268   blue: 0x0000ff,
5269   blueviolet: 0x8a2be2,
5270   brown: 0xa52a2a,
5271   burlywood: 0xdeb887,
5272   cadetblue: 0x5f9ea0,
5273   chartreuse: 0x7fff00,
5274   chocolate: 0xd2691e,
5275   coral: 0xff7f50,
5276   cornflowerblue: 0x6495ed,
5277   cornsilk: 0xfff8dc,
5278   crimson: 0xdc143c,
5279   cyan: 0x00ffff,
5280   darkblue: 0x00008b,
5281   darkcyan: 0x008b8b,
5282   darkgoldenrod: 0xb8860b,
5283   darkgray: 0xa9a9a9,
5284   darkgreen: 0x006400,
5285   darkgrey: 0xa9a9a9,
5286   darkkhaki: 0xbdb76b,
5287   darkmagenta: 0x8b008b,
5288   darkolivegreen: 0x556b2f,
5289   darkorange: 0xff8c00,
5290   darkorchid: 0x9932cc,
5291   darkred: 0x8b0000,
5292   darksalmon: 0xe9967a,
5293   darkseagreen: 0x8fbc8f,
5294   darkslateblue: 0x483d8b,
5295   darkslategray: 0x2f4f4f,
5296   darkslategrey: 0x2f4f4f,
5297   darkturquoise: 0x00ced1,
5298   darkviolet: 0x9400d3,
5299   deeppink: 0xff1493,
5300   deepskyblue: 0x00bfff,
5301   dimgray: 0x696969,
5302   dimgrey: 0x696969,
5303   dodgerblue: 0x1e90ff,
5304   firebrick: 0xb22222,
5305   floralwhite: 0xfffaf0,
5306   forestgreen: 0x228b22,
5307   fuchsia: 0xff00ff,
5308   gainsboro: 0xdcdcdc,
5309   ghostwhite: 0xf8f8ff,
5310   gold: 0xffd700,
5311   goldenrod: 0xdaa520,
5312   gray: 0x808080,
5313   green: 0x008000,
5314   greenyellow: 0xadff2f,
5315   grey: 0x808080,
5316   honeydew: 0xf0fff0,
5317   hotpink: 0xff69b4,
5318   indianred: 0xcd5c5c,
5319   indigo: 0x4b0082,
5320   ivory: 0xfffff0,
5321   khaki: 0xf0e68c,
5322   lavender: 0xe6e6fa,
5323   lavenderblush: 0xfff0f5,
5324   lawngreen: 0x7cfc00,
5325   lemonchiffon: 0xfffacd,
5326   lightblue: 0xadd8e6,
5327   lightcoral: 0xf08080,
5328   lightcyan: 0xe0ffff,
5329   lightgoldenrodyellow: 0xfafad2,
5330   lightgray: 0xd3d3d3,
5331   lightgreen: 0x90ee90,
5332   lightgrey: 0xd3d3d3,
5333   lightpink: 0xffb6c1,
5334   lightsalmon: 0xffa07a,
5335   lightseagreen: 0x20b2aa,
5336   lightskyblue: 0x87cefa,
5337   lightslategray: 0x778899,
5338   lightslategrey: 0x778899,
5339   lightsteelblue: 0xb0c4de,
5340   lightyellow: 0xffffe0,
5341   lime: 0x00ff00,
5342   limegreen: 0x32cd32,
5343   linen: 0xfaf0e6,
5344   magenta: 0xff00ff,
5345   maroon: 0x800000,
5346   mediumaquamarine: 0x66cdaa,
5347   mediumblue: 0x0000cd,
5348   mediumorchid: 0xba55d3,
5349   mediumpurple: 0x9370db,
5350   mediumseagreen: 0x3cb371,
5351   mediumslateblue: 0x7b68ee,
5352   mediumspringgreen: 0x00fa9a,
5353   mediumturquoise: 0x48d1cc,
5354   mediumvioletred: 0xc71585,
5355   midnightblue: 0x191970,
5356   mintcream: 0xf5fffa,
5357   mistyrose: 0xffe4e1,
5358   moccasin: 0xffe4b5,
5359   navajowhite: 0xffdead,
5360   navy: 0x000080,
5361   oldlace: 0xfdf5e6,
5362   olive: 0x808000,
5363   olivedrab: 0x6b8e23,
5364   orange: 0xffa500,
5365   orangered: 0xff4500,
5366   orchid: 0xda70d6,
5367   palegoldenrod: 0xeee8aa,
5368   palegreen: 0x98fb98,
5369   paleturquoise: 0xafeeee,
5370   palevioletred: 0xdb7093,
5371   papayawhip: 0xffefd5,
5372   peachpuff: 0xffdab9,
5373   peru: 0xcd853f,
5374   pink: 0xffc0cb,
5375   plum: 0xdda0dd,
5376   powderblue: 0xb0e0e6,
5377   purple: 0x800080,
5378   rebeccapurple: 0x663399,
5379   red: 0xff0000,
5380   rosybrown: 0xbc8f8f,
5381   royalblue: 0x4169e1,
5382   saddlebrown: 0x8b4513,
5383   salmon: 0xfa8072,
5384   sandybrown: 0xf4a460,
5385   seagreen: 0x2e8b57,
5386   seashell: 0xfff5ee,
5387   sienna: 0xa0522d,
5388   silver: 0xc0c0c0,
5389   skyblue: 0x87ceeb,
5390   slateblue: 0x6a5acd,
5391   slategray: 0x708090,
5392   slategrey: 0x708090,
5393   snow: 0xfffafa,
5394   springgreen: 0x00ff7f,
5395   steelblue: 0x4682b4,
5396   tan: 0xd2b48c,
5397   teal: 0x008080,
5398   thistle: 0xd8bfd8,
5399   tomato: 0xff6347,
5400   turquoise: 0x40e0d0,
5401   violet: 0xee82ee,
5402   wheat: 0xf5deb3,
5403   white: 0xffffff,
5404   whitesmoke: 0xf5f5f5,
5405   yellow: 0xffff00,
5406   yellowgreen: 0x9acd32
5407 });
5408
5409 d3_rgb_names.forEach(function(key, value) {
5410   d3_rgb_names.set(key, d3_rgbNumber(value));
5411 });
5412
5413 d3.interpolateRgb = d3_interpolateRgb;
5414
5415 function d3_interpolateRgb(a, b) {
5416   a = d3.rgb(a);
5417   b = d3.rgb(b);
5418   var ar = a.r,
5419       ag = a.g,
5420       ab = a.b,
5421       br = b.r - ar,
5422       bg = b.g - ag,
5423       bb = b.b - ab;
5424   return function(t) {
5425     return "#"
5426         + d3_rgb_hex(Math.round(ar + br * t))
5427         + d3_rgb_hex(Math.round(ag + bg * t))
5428         + d3_rgb_hex(Math.round(ab + bb * t));
5429   };
5430 }
5431
5432 d3.interpolateObject = d3_interpolateObject;
5433
5434 function d3_interpolateObject(a, b) {
5435   var i = {},
5436       c = {},
5437       k;
5438   for (k in a) {
5439     if (k in b) {
5440       i[k] = d3_interpolate(a[k], b[k]);
5441     } else {
5442       c[k] = a[k];
5443     }
5444   }
5445   for (k in b) {
5446     if (!(k in a)) {
5447       c[k] = b[k];
5448     }
5449   }
5450   return function(t) {
5451     for (k in i) c[k] = i[k](t);
5452     return c;
5453   };
5454 }
5455
5456 d3.interpolateArray = d3_interpolateArray;
5457
5458 function d3_interpolateArray(a, b) {
5459   var x = [],
5460       c = [],
5461       na = a.length,
5462       nb = b.length,
5463       n0 = Math.min(a.length, b.length),
5464       i;
5465   for (i = 0; i < n0; ++i) x.push(d3_interpolate(a[i], b[i]));
5466   for (; i < na; ++i) c[i] = a[i];
5467   for (; i < nb; ++i) c[i] = b[i];
5468   return function(t) {
5469     for (i = 0; i < n0; ++i) c[i] = x[i](t);
5470     return c;
5471   };
5472 }
5473 d3.interpolateNumber = d3_interpolateNumber;
5474
5475 function d3_interpolateNumber(a, b) {
5476   a = +a, b = +b;
5477   return function(t) { return a * (1 - t) + b * t; };
5478 }
5479
5480 d3.interpolateString = d3_interpolateString;
5481
5482 function d3_interpolateString(a, b) {
5483   var bi = d3_interpolate_numberA.lastIndex = d3_interpolate_numberB.lastIndex = 0, // scan index for next number in b
5484       am, // current match in a
5485       bm, // current match in b
5486       bs, // string preceding current number in b, if any
5487       i = -1, // index in s
5488       s = [], // string constants and placeholders
5489       q = []; // number interpolators
5490
5491   // Coerce inputs to strings.
5492   a = a + "", b = b + "";
5493
5494   // Interpolate pairs of numbers in a & b.
5495   while ((am = d3_interpolate_numberA.exec(a))
5496       && (bm = d3_interpolate_numberB.exec(b))) {
5497     if ((bs = bm.index) > bi) { // a string precedes the next number in b
5498       bs = b.slice(bi, bs);
5499       if (s[i]) s[i] += bs; // coalesce with previous string
5500       else s[++i] = bs;
5501     }
5502     if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match
5503       if (s[i]) s[i] += bm; // coalesce with previous string
5504       else s[++i] = bm;
5505     } else { // interpolate non-matching numbers
5506       s[++i] = null;
5507       q.push({i: i, x: d3_interpolateNumber(am, bm)});
5508     }
5509     bi = d3_interpolate_numberB.lastIndex;
5510   }
5511
5512   // Add remains of b.
5513   if (bi < b.length) {
5514     bs = b.slice(bi);
5515     if (s[i]) s[i] += bs; // coalesce with previous string
5516     else s[++i] = bs;
5517   }
5518
5519   // Special optimization for only a single match.
5520   // Otherwise, interpolate each of the numbers and rejoin the string.
5521   return s.length < 2
5522       ? (q[0] ? (b = q[0].x, function(t) { return b(t) + ""; })
5523       : function() { return b; })
5524       : (b = q.length, function(t) {
5525           for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);
5526           return s.join("");
5527         });
5528 }
5529
5530 var d3_interpolate_numberA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
5531     d3_interpolate_numberB = new RegExp(d3_interpolate_numberA.source, "g");
5532
5533 d3.interpolate = d3_interpolate;
5534
5535 function d3_interpolate(a, b) {
5536   var i = d3.interpolators.length, f;
5537   while (--i >= 0 && !(f = d3.interpolators[i](a, b)));
5538   return f;
5539 }
5540
5541 d3.interpolators = [
5542   function(a, b) {
5543     var t = typeof b;
5544     return (t === "string" ? (d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) ? d3_interpolateRgb : d3_interpolateString)
5545         : b instanceof d3_color ? d3_interpolateRgb
5546         : Array.isArray(b) ? d3_interpolateArray
5547         : t === "object" && isNaN(b) ? d3_interpolateObject
5548         : d3_interpolateNumber)(a, b);
5549   }
5550 ];
5551
5552 d3.transform = function(string) {
5553   var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
5554   return (d3.transform = function(string) {
5555     if (string != null) {
5556       g.setAttribute("transform", string);
5557       var t = g.transform.baseVal.consolidate();
5558     }
5559     return new d3_transform(t ? t.matrix : d3_transformIdentity);
5560   })(string);
5561 };
5562
5563 // Compute x-scale and normalize the first row.
5564 // Compute shear and make second row orthogonal to first.
5565 // Compute y-scale and normalize the second row.
5566 // Finally, compute the rotation.
5567 function d3_transform(m) {
5568   var r0 = [m.a, m.b],
5569       r1 = [m.c, m.d],
5570       kx = d3_transformNormalize(r0),
5571       kz = d3_transformDot(r0, r1),
5572       ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
5573   if (r0[0] * r1[1] < r1[0] * r0[1]) {
5574     r0[0] *= -1;
5575     r0[1] *= -1;
5576     kx *= -1;
5577     kz *= -1;
5578   }
5579   this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
5580   this.translate = [m.e, m.f];
5581   this.scale = [kx, ky];
5582   this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
5583 };
5584
5585 d3_transform.prototype.toString = function() {
5586   return "translate(" + this.translate
5587       + ")rotate(" + this.rotate
5588       + ")skewX(" + this.skew
5589       + ")scale(" + this.scale
5590       + ")";
5591 };
5592
5593 function d3_transformDot(a, b) {
5594   return a[0] * b[0] + a[1] * b[1];
5595 }
5596
5597 function d3_transformNormalize(a) {
5598   var k = Math.sqrt(d3_transformDot(a, a));
5599   if (k) {
5600     a[0] /= k;
5601     a[1] /= k;
5602   }
5603   return k;
5604 }
5605
5606 function d3_transformCombine(a, b, k) {
5607   a[0] += k * b[0];
5608   a[1] += k * b[1];
5609   return a;
5610 }
5611
5612 var d3_transformIdentity = {a: 1, b: 0, c: 0, d: 1, e: 0, f: 0};
5613
5614 d3.interpolateTransform = d3_interpolateTransform;
5615
5616 function d3_interpolateTransform(a, b) {
5617   var s = [], // string constants and placeholders
5618       q = [], // number interpolators
5619       n,
5620       A = d3.transform(a),
5621       B = d3.transform(b),
5622       ta = A.translate,
5623       tb = B.translate,
5624       ra = A.rotate,
5625       rb = B.rotate,
5626       wa = A.skew,
5627       wb = B.skew,
5628       ka = A.scale,
5629       kb = B.scale;
5630
5631   if (ta[0] != tb[0] || ta[1] != tb[1]) {
5632     s.push("translate(", null, ",", null, ")");
5633     q.push({i: 1, x: d3_interpolateNumber(ta[0], tb[0])}, {i: 3, x: d3_interpolateNumber(ta[1], tb[1])});
5634   } else if (tb[0] || tb[1]) {
5635     s.push("translate(" + tb + ")");
5636   } else {
5637     s.push("");
5638   }
5639
5640   if (ra != rb) {
5641     if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360; // shortest path
5642     q.push({i: s.push(s.pop() + "rotate(", null, ")") - 2, x: d3_interpolateNumber(ra, rb)});
5643   } else if (rb) {
5644     s.push(s.pop() + "rotate(" + rb + ")");
5645   }
5646
5647   if (wa != wb) {
5648     q.push({i: s.push(s.pop() + "skewX(", null, ")") - 2, x: d3_interpolateNumber(wa, wb)});
5649   } else if (wb) {
5650     s.push(s.pop() + "skewX(" + wb + ")");
5651   }
5652
5653   if (ka[0] != kb[0] || ka[1] != kb[1]) {
5654     n = s.push(s.pop() + "scale(", null, ",", null, ")");
5655     q.push({i: n - 4, x: d3_interpolateNumber(ka[0], kb[0])}, {i: n - 2, x: d3_interpolateNumber(ka[1], kb[1])});
5656   } else if (kb[0] != 1 || kb[1] != 1) {
5657     s.push(s.pop() + "scale(" + kb + ")");
5658   }
5659
5660   n = q.length;
5661   return function(t) {
5662     var i = -1, o;
5663     while (++i < n) s[(o = q[i]).i] = o.x(t);
5664     return s.join("");
5665   };
5666 }
5667
5668 d3_transitionPrototype.tween = function(name, tween) {
5669   var id = this.id, ns = this.namespace;
5670   if (arguments.length < 2) return this.node()[ns][id].tween.get(name);
5671   return d3_selection_each(this, tween == null
5672         ? function(node) { node[ns][id].tween.remove(name); }
5673         : function(node) { node[ns][id].tween.set(name, tween); });
5674 };
5675
5676 function d3_transition_tween(groups, name, value, tween) {
5677   var id = groups.id, ns = groups.namespace;
5678   return d3_selection_each(groups, typeof value === "function"
5679       ? function(node, i, j) { node[ns][id].tween.set(name, tween(value.call(node, node.__data__, i, j))); }
5680       : (value = tween(value), function(node) { node[ns][id].tween.set(name, value); }));
5681 }
5682
5683 d3_transitionPrototype.attr = function(nameNS, value) {
5684   if (arguments.length < 2) {
5685
5686     // For attr(object), the object specifies the names and values of the
5687     // attributes to transition. The values may be functions that are
5688     // evaluated for each element.
5689     for (value in nameNS) this.attr(value, nameNS[value]);
5690     return this;
5691   }
5692
5693   var interpolate = nameNS == "transform" ? d3_interpolateTransform : d3_interpolate,
5694       name = d3.ns.qualify(nameNS);
5695
5696   // For attr(string, null), remove the attribute with the specified name.
5697   function attrNull() {
5698     this.removeAttribute(name);
5699   }
5700   function attrNullNS() {
5701     this.removeAttributeNS(name.space, name.local);
5702   }
5703
5704   // For attr(string, string), set the attribute with the specified name.
5705   function attrTween(b) {
5706     return b == null ? attrNull : (b += "", function() {
5707       var a = this.getAttribute(name), i;
5708       return a !== b && (i = interpolate(a, b), function(t) { this.setAttribute(name, i(t)); });
5709     });
5710   }
5711   function attrTweenNS(b) {
5712     return b == null ? attrNullNS : (b += "", function() {
5713       var a = this.getAttributeNS(name.space, name.local), i;
5714       return a !== b && (i = interpolate(a, b), function(t) { this.setAttributeNS(name.space, name.local, i(t)); });
5715     });
5716   }
5717
5718   return d3_transition_tween(this, "attr." + nameNS, value, name.local ? attrTweenNS : attrTween);
5719 };
5720
5721 d3_transitionPrototype.attrTween = function(nameNS, tween) {
5722   var name = d3.ns.qualify(nameNS);
5723
5724   function attrTween(d, i) {
5725     var f = tween.call(this, d, i, this.getAttribute(name));
5726     return f && function(t) { this.setAttribute(name, f(t)); };
5727   }
5728   function attrTweenNS(d, i) {
5729     var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
5730     return f && function(t) { this.setAttributeNS(name.space, name.local, f(t)); };
5731   }
5732
5733   return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
5734 };
5735
5736 d3_transitionPrototype.style = function(name, value, priority) {
5737   var n = arguments.length;
5738   if (n < 3) {
5739
5740     // For style(object) or style(object, string), the object specifies the
5741     // names and values of the attributes to set or remove. The values may be
5742     // functions that are evaluated for each element. The optional string
5743     // specifies the priority.
5744     if (typeof name !== "string") {
5745       if (n < 2) value = "";
5746       for (priority in name) this.style(priority, name[priority], value);
5747       return this;
5748     }
5749
5750     // For style(string, string) or style(string, function), use the default
5751     // priority. The priority is ignored for style(string, null).
5752     priority = "";
5753   }
5754
5755   // For style(name, null) or style(name, null, priority), remove the style
5756   // property with the specified name. The priority is ignored.
5757   function styleNull() {
5758     this.style.removeProperty(name);
5759   }
5760
5761   // For style(name, string) or style(name, string, priority), set the style
5762   // property with the specified name, using the specified priority.
5763   // Otherwise, a name, value and priority are specified, and handled as below.
5764   function styleString(b) {
5765     return b == null ? styleNull : (b += "", function() {
5766       var a = d3_window(this).getComputedStyle(this, null).getPropertyValue(name), i;
5767       return a !== b && (i = d3_interpolate(a, b), function(t) { this.style.setProperty(name, i(t), priority); });
5768     });
5769   }
5770
5771   return d3_transition_tween(this, "style." + name, value, styleString);
5772 };
5773
5774 d3_transitionPrototype.styleTween = function(name, tween, priority) {
5775   if (arguments.length < 3) priority = "";
5776
5777   function styleTween(d, i) {
5778     var f = tween.call(this, d, i, d3_window(this).getComputedStyle(this, null).getPropertyValue(name));
5779     return f && function(t) { this.style.setProperty(name, f(t), priority); };
5780   }
5781
5782   return this.tween("style." + name, styleTween);
5783 };
5784
5785 d3_transitionPrototype.text = function(value) {
5786   return d3_transition_tween(this, "text", value, d3_transition_text);
5787 };
5788
5789 function d3_transition_text(b) {
5790   if (b == null) b = "";
5791   return function() { this.textContent = b; };
5792 }
5793
5794 d3_transitionPrototype.remove = function() {
5795   var ns = this.namespace;
5796   return this.each("end.transition", function() {
5797     var p;
5798     if (this[ns].count < 2 && (p = this.parentNode)) p.removeChild(this);
5799   });
5800 };
5801
5802 var d3_ease_default = function() { return d3_identity; };
5803
5804 var d3_ease = d3.map({
5805   linear: d3_ease_default,
5806   poly: d3_ease_poly,
5807   quad: function() { return d3_ease_quad; },
5808   cubic: function() { return d3_ease_cubic; },
5809   sin: function() { return d3_ease_sin; },
5810   exp: function() { return d3_ease_exp; },
5811   circle: function() { return d3_ease_circle; },
5812   elastic: d3_ease_elastic,
5813   back: d3_ease_back,
5814   bounce: function() { return d3_ease_bounce; }
5815 });
5816
5817 var d3_ease_mode = d3.map({
5818   "in": d3_identity,
5819   "out": d3_ease_reverse,
5820   "in-out": d3_ease_reflect,
5821   "out-in": function(f) { return d3_ease_reflect(d3_ease_reverse(f)); }
5822 });
5823
5824 d3.ease = function(name) {
5825   var i = name.indexOf("-"),
5826       t = i >= 0 ? name.slice(0, i) : name,
5827       m = i >= 0 ? name.slice(i + 1) : "in";
5828   t = d3_ease.get(t) || d3_ease_default;
5829   m = d3_ease_mode.get(m) || d3_identity;
5830   return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1))));
5831 };
5832
5833 function d3_ease_clamp(f) {
5834   return function(t) {
5835     return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
5836   };
5837 }
5838
5839 function d3_ease_reverse(f) {
5840   return function(t) {
5841     return 1 - f(1 - t);
5842   };
5843 }
5844
5845 function d3_ease_reflect(f) {
5846   return function(t) {
5847     return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
5848   };
5849 }
5850
5851 function d3_ease_quad(t) {
5852   return t * t;
5853 }
5854
5855 function d3_ease_cubic(t) {
5856   return t * t * t;
5857 }
5858
5859 // Optimized clamp(reflect(poly(3))).
5860 function d3_ease_cubicInOut(t) {
5861   if (t <= 0) return 0;
5862   if (t >= 1) return 1;
5863   var t2 = t * t, t3 = t2 * t;
5864   return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
5865 }
5866
5867 function d3_ease_poly(e) {
5868   return function(t) {
5869     return Math.pow(t, e);
5870   };
5871 }
5872
5873 function d3_ease_sin(t) {
5874   return 1 - Math.cos(t * halfπ);
5875 }
5876
5877 function d3_ease_exp(t) {
5878   return Math.pow(2, 10 * (t - 1));
5879 }
5880
5881 function d3_ease_circle(t) {
5882   return 1 - Math.sqrt(1 - t * t);
5883 }
5884
5885 function d3_ease_elastic(a, p) {
5886   var s;
5887   if (arguments.length < 2) p = 0.45;
5888   if (arguments.length) s = p / τ * Math.asin(1 / a);
5889   else a = 1, s = p / 4;
5890   return function(t) {
5891     return 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * τ / p);
5892   };
5893 }
5894
5895 function d3_ease_back(s) {
5896   if (!s) s = 1.70158;
5897   return function(t) {
5898     return t * t * ((s + 1) * t - s);
5899   };
5900 }
5901
5902 function d3_ease_bounce(t) {
5903   return t < 1 / 2.75 ? 7.5625 * t * t
5904       : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
5905       : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
5906       : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
5907 }
5908
5909 d3_transitionPrototype.ease = function(value) {
5910   var id = this.id, ns = this.namespace;
5911   if (arguments.length < 1) return this.node()[ns][id].ease;
5912   if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
5913   return d3_selection_each(this, function(node) { node[ns][id].ease = value; });
5914 };
5915
5916 d3_transitionPrototype.delay = function(value) {
5917   var id = this.id, ns = this.namespace;
5918   if (arguments.length < 1) return this.node()[ns][id].delay;
5919   return d3_selection_each(this, typeof value === "function"
5920       ? function(node, i, j) { node[ns][id].delay = +value.call(node, node.__data__, i, j); }
5921       : (value = +value, function(node) { node[ns][id].delay = value; }));
5922 };
5923
5924 d3_transitionPrototype.duration = function(value) {
5925   var id = this.id, ns = this.namespace;
5926   if (arguments.length < 1) return this.node()[ns][id].duration;
5927   return d3_selection_each(this, typeof value === "function"
5928       ? function(node, i, j) { node[ns][id].duration = Math.max(1, value.call(node, node.__data__, i, j)); }
5929       : (value = Math.max(1, value), function(node) { node[ns][id].duration = value; }));
5930 };
5931
5932 d3_transitionPrototype.each = function(type, listener) {
5933   var id = this.id, ns = this.namespace;
5934   if (arguments.length < 2) {
5935     var inherit = d3_transitionInherit,
5936         inheritId = d3_transitionInheritId;
5937     try {
5938       d3_transitionInheritId = id;
5939       d3_selection_each(this, function(node, i, j) {
5940         d3_transitionInherit = node[ns][id];
5941         type.call(node, node.__data__, i, j);
5942       });
5943     } finally {
5944       d3_transitionInherit = inherit;
5945       d3_transitionInheritId = inheritId;
5946     }
5947   } else {
5948     d3_selection_each(this, function(node) {
5949       var transition = node[ns][id];
5950       (transition.event || (transition.event = d3.dispatch("start", "end", "interrupt"))).on(type, listener);
5951     });
5952   }
5953   return this;
5954 };
5955
5956 d3_transitionPrototype.transition = function() {
5957   var id0 = this.id,
5958       id1 = ++d3_transitionId,
5959       ns = this.namespace,
5960       subgroups = [],
5961       subgroup,
5962       group,
5963       node,
5964       transition;
5965
5966   for (var j = 0, m = this.length; j < m; j++) {
5967     subgroups.push(subgroup = []);
5968     for (var group = this[j], i = 0, n = group.length; i < n; i++) {
5969       if (node = group[i]) {
5970         transition = node[ns][id0];
5971         d3_transitionNode(node, i, ns, id1, {time: transition.time, ease: transition.ease, delay: transition.delay + transition.duration, duration: transition.duration});
5972       }
5973       subgroup.push(node);
5974     }
5975   }
5976
5977   return d3_transition(subgroups, ns, id1);
5978 };
5979
5980 function d3_transitionNamespace(name) {
5981   return name == null ? "__transition__" : "__transition_" + name + "__";
5982 }
5983
5984 function d3_transitionNode(node, i, ns, id, inherit) {
5985   var lock = node[ns] || (node[ns] = {active: 0, count: 0}),
5986       transition = lock[id];
5987
5988   if (!transition) {
5989     var time = inherit.time;
5990
5991     transition = lock[id] = {
5992       tween: new d3_Map,
5993       time: time,
5994       delay: inherit.delay,
5995       duration: inherit.duration,
5996       ease: inherit.ease,
5997       index: i
5998     };
5999
6000     inherit = null; // allow gc
6001
6002     ++lock.count;
6003
6004     d3.timer(function(elapsed) {
6005       var delay = transition.delay,
6006           duration,
6007           ease,
6008           timer = d3_timer_active,
6009           tweened = [];
6010
6011       timer.t = delay + time;
6012       if (delay <= elapsed) return start(elapsed - delay);
6013       timer.c = start;
6014
6015       function start(elapsed) {
6016         if (lock.active > id) return stop();
6017
6018         var active = lock[lock.active];
6019         if (active) {
6020           --lock.count;
6021           delete lock[lock.active];
6022           active.event && active.event.interrupt.call(node, node.__data__, active.index);
6023         }
6024
6025         lock.active = id;
6026
6027         transition.event && transition.event.start.call(node, node.__data__, i);
6028
6029         transition.tween.forEach(function(key, value) {
6030           if (value = value.call(node, node.__data__, i)) {
6031             tweened.push(value);
6032           }
6033         });
6034
6035         // Deferred capture to allow tweens to initialize ease & duration.
6036         ease = transition.ease;
6037         duration = transition.duration;
6038
6039         d3.timer(function() { // defer to end of current frame
6040           timer.c = tick(elapsed || 1) ? d3_true : tick;
6041           return 1;
6042         }, 0, time);
6043       }
6044
6045       function tick(elapsed) {
6046         if (lock.active !== id) return 1;
6047
6048         var t = elapsed / duration,
6049             e = ease(t),
6050             n = tweened.length;
6051
6052         while (n > 0) {
6053           tweened[--n].call(node, e);
6054         }
6055
6056         if (t >= 1) {
6057           transition.event && transition.event.end.call(node, node.__data__, i);
6058           return stop();
6059         }
6060       }
6061
6062       function stop() {
6063         if (--lock.count) delete lock[id];
6064         else delete node[ns];
6065         return 1;
6066       }
6067     }, 0, time);
6068   }
6069 }
6070
6071 d3.xhr = d3_xhrType(d3_identity);
6072
6073 function d3_xhrType(response) {
6074   return function(url, mimeType, callback) {
6075     if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType, mimeType = null;
6076     return d3_xhr(url, mimeType, response, callback);
6077   };
6078 }
6079
6080 function d3_xhr(url, mimeType, response, callback) {
6081   var xhr = {},
6082       dispatch = d3.dispatch("beforesend", "progress", "load", "error"),
6083       headers = {},
6084       request = new XMLHttpRequest,
6085       responseType = null;
6086
6087   // If IE does not support CORS, use XDomainRequest.
6088   if (this.XDomainRequest
6089       && !("withCredentials" in request)
6090       && /^(http(s)?:)?\/\//.test(url)) request = new XDomainRequest;
6091
6092   "onload" in request
6093       ? request.onload = request.onerror = respond
6094       : request.onreadystatechange = function() { request.readyState > 3 && respond(); };
6095
6096   function respond() {
6097     var status = request.status, result;
6098     if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
6099       try {
6100         result = response.call(xhr, request);
6101       } catch (e) {
6102         dispatch.error.call(xhr, e);
6103         return;
6104       }
6105       dispatch.load.call(xhr, result);
6106     } else {
6107       dispatch.error.call(xhr, request);
6108     }
6109   }
6110
6111   request.onprogress = function(event) {
6112     var o = d3.event;
6113     d3.event = event;
6114     try { dispatch.progress.call(xhr, request); }
6115     finally { d3.event = o; }
6116   };
6117
6118   xhr.header = function(name, value) {
6119     name = (name + "").toLowerCase();
6120     if (arguments.length < 2) return headers[name];
6121     if (value == null) delete headers[name];
6122     else headers[name] = value + "";
6123     return xhr;
6124   };
6125
6126   // If mimeType is non-null and no Accept header is set, a default is used.
6127   xhr.mimeType = function(value) {
6128     if (!arguments.length) return mimeType;
6129     mimeType = value == null ? null : value + "";
6130     return xhr;
6131   };
6132
6133   // Specifies what type the response value should take;
6134   // for instance, arraybuffer, blob, document, or text.
6135   xhr.responseType = function(value) {
6136     if (!arguments.length) return responseType;
6137     responseType = value;
6138     return xhr;
6139   };
6140
6141   // Specify how to convert the response content to a specific type;
6142   // changes the callback value on "load" events.
6143   xhr.response = function(value) {
6144     response = value;
6145     return xhr;
6146   };
6147
6148   // Convenience methods.
6149   ["get", "post"].forEach(function(method) {
6150     xhr[method] = function() {
6151       return xhr.send.apply(xhr, [method].concat(d3_array(arguments)));
6152     };
6153   });
6154
6155   // If callback is non-null, it will be used for error and load events.
6156   xhr.send = function(method, data, callback) {
6157     if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
6158     request.open(method, url, true);
6159     if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
6160     if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
6161     if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
6162     if (responseType != null) request.responseType = responseType;
6163     if (callback != null) xhr.on("error", callback).on("load", function(request) { callback(null, request); });
6164     dispatch.beforesend.call(xhr, request);
6165     request.send(data == null ? null : data);
6166     return xhr;
6167   };
6168
6169   xhr.abort = function() {
6170     request.abort();
6171     return xhr;
6172   };
6173
6174   d3.rebind(xhr, dispatch, "on");
6175
6176   return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
6177 };
6178
6179 function d3_xhr_fixCallback(callback) {
6180   return callback.length === 1
6181       ? function(error, request) { callback(error == null ? request : null); }
6182       : callback;
6183 }
6184
6185 function d3_xhrHasResponse(request) {
6186   var type = request.responseType;
6187   return type && type !== "text"
6188       ? request.response // null on error
6189       : request.responseText; // "" on error
6190 }
6191
6192 d3.text = d3_xhrType(function(request) {
6193   return request.responseText;
6194 });
6195
6196 d3.json = function(url, callback) {
6197   return d3_xhr(url, "application/json", d3_json, callback);
6198 };
6199
6200 function d3_json(request) {
6201   return JSON.parse(request.responseText);
6202 }
6203
6204 d3.html = function(url, callback) {
6205   return d3_xhr(url, "text/html", d3_html, callback);
6206 };
6207
6208 function d3_html(request) {
6209   var range = d3_document.createRange();
6210   range.selectNode(d3_document.body);
6211   return range.createContextualFragment(request.responseText);
6212 }
6213
6214 d3.xml = d3_xhrType(function(request) {
6215   return request.responseXML;
6216 });
6217   if (typeof define === "function" && define.amd) define(d3);
6218   else if (typeof module === "object" && module.exports) module.exports = d3;
6219   this.d3 = d3;
6220 }();
6221 d3.combobox = function() {
6222     var event = d3.dispatch('accept'),
6223         data = [],
6224         suggestions = [],
6225         minItems = 2;
6226
6227     var fetcher = function(val, cb) {
6228         cb(data.filter(function(d) {
6229             return d.value
6230                 .toString()
6231                 .toLowerCase()
6232                 .indexOf(val.toLowerCase()) !== -1;
6233         }));
6234     };
6235
6236     var combobox = function(input) {
6237         var idx = -1,
6238             container = d3.select(document.body)
6239                 .selectAll('div.combobox')
6240                 .filter(function(d) { return d === input.node(); }),
6241             shown = !container.empty();
6242
6243         input
6244             .classed('combobox-input', true)
6245             .on('focus.typeahead', focus)
6246             .on('blur.typeahead', blur)
6247             .on('keydown.typeahead', keydown)
6248             .on('keyup.typeahead', keyup)
6249             .on('input.typeahead', change)
6250             .each(function() {
6251                 var parent = this.parentNode,
6252                     sibling = this.nextSibling;
6253
6254                 var caret = d3.select(parent).selectAll('.combobox-caret')
6255                     .filter(function(d) { return d === input.node(); })
6256                     .data([input.node()]);
6257
6258                 caret.enter().insert('div', function() { return sibling; })
6259                     .attr('class', 'combobox-caret');
6260
6261                 caret
6262                     .on('mousedown', function () {
6263                         // prevent the form element from blurring. it blurs
6264                         // on mousedown
6265                         d3.event.stopPropagation();
6266                         d3.event.preventDefault();
6267                         if (!shown) {
6268                             input.node().focus();
6269                             fetch('', render);
6270                         } else {
6271                             hide();
6272                         }
6273                     });
6274             });
6275
6276         function focus() {
6277             fetch(value(), render);
6278         }
6279
6280         function blur() {
6281             window.setTimeout(hide, 150);
6282         }
6283
6284         function show() {
6285             if (!shown) {
6286                 container = d3.select(document.body)
6287                     .insert('div', ':first-child')
6288                     .datum(input.node())
6289                     .attr('class', 'combobox')
6290                     .style({
6291                         position: 'absolute',
6292                         display: 'block',
6293                         left: '0px'
6294                     })
6295                     .on('mousedown', function () {
6296                         // prevent moving focus out of the text field
6297                         d3.event.preventDefault();
6298                     });
6299
6300                 d3.select(document.body)
6301                     .on('scroll.combobox', render, true);
6302
6303                 shown = true;
6304             }
6305         }
6306
6307         function hide() {
6308             if (shown) {
6309                 idx = -1;
6310                 container.remove();
6311
6312                 d3.select(document.body)
6313                     .on('scroll.combobox', null);
6314
6315                 shown = false;
6316             }
6317         }
6318
6319         function keydown() {
6320            switch (d3.event.keyCode) {
6321                // backspace, delete
6322                case 8:
6323                case 46:
6324                    input.on('input.typeahead', function() {
6325                        idx = -1;
6326                        render();
6327                        var start = input.property('selectionStart');
6328                        input.node().setSelectionRange(start, start);
6329                        input.on('input.typeahead', change);
6330                    });
6331                    break;
6332                // tab
6333                case 9:
6334                    container.selectAll('a.selected').each(event.accept);
6335                    break;
6336                // return
6337                case 13:
6338                    d3.event.preventDefault();
6339                    break;
6340                // up arrow
6341                case 38:
6342                    nav(-1);
6343                    d3.event.preventDefault();
6344                    break;
6345                // down arrow
6346                case 40:
6347                    nav(+1);
6348                    d3.event.preventDefault();
6349                    break;
6350            }
6351            d3.event.stopPropagation();
6352         }
6353
6354         function keyup() {
6355             switch (d3.event.keyCode) {
6356                 // escape
6357                 case 27:
6358                     hide();
6359                     break;
6360                 // return
6361                 case 13:
6362                     container.selectAll('a.selected').each(event.accept);
6363                     hide();
6364                     break;
6365             }
6366         }
6367
6368         function change() {
6369             fetch(value(), function() {
6370                 autocomplete();
6371                 render();
6372             });
6373         }
6374
6375         function nav(dir) {
6376             idx = Math.max(Math.min(idx + dir, suggestions.length - 1), 0);
6377             input.property('value', suggestions[idx].value);
6378             render();
6379             ensureVisible();
6380         }
6381
6382         function value() {
6383             var value = input.property('value'),
6384                 start = input.property('selectionStart'),
6385                 end = input.property('selectionEnd');
6386
6387             if (start && end) {
6388                 value = value.substring(0, start);
6389             }
6390
6391             return value;
6392         }
6393
6394         function fetch(v, cb) {
6395             fetcher.call(input, v, function(_) {
6396                 suggestions = _;
6397                 cb();
6398             });
6399         }
6400
6401         function autocomplete() {
6402             var v = value();
6403
6404             idx = -1;
6405
6406             if (!v) return;
6407
6408             for (var i = 0; i < suggestions.length; i++) {
6409                 if (suggestions[i].value.toLowerCase().indexOf(v.toLowerCase()) === 0) {
6410                     var completion = v + suggestions[i].value.substr(v.length);
6411                     idx = i;
6412                     input.property('value', completion);
6413                     input.node().setSelectionRange(v.length, completion.length);
6414                     return;
6415                 }
6416             }
6417         }
6418
6419         function render() {
6420             if (suggestions.length >= minItems && document.activeElement === input.node()) {
6421                 show();
6422             } else {
6423                 hide();
6424                 return;
6425             }
6426
6427             var options = container
6428                 .selectAll('a.combobox-option')
6429                 .data(suggestions, function(d) { return d.value; });
6430
6431             options.enter().append('a')
6432                 .attr('class', 'combobox-option')
6433                 .text(function(d) { return d.value; });
6434
6435             options
6436                 .attr('title', function(d) { return d.title; })
6437                 .classed('selected', function(d, i) { return i == idx; })
6438                 .on('mouseover', select)
6439                 .on('click', accept)
6440                 .order();
6441
6442             options.exit()
6443                 .remove();
6444
6445             var rect = input.node().getBoundingClientRect();
6446
6447             container.style({
6448                 'left': rect.left + 'px',
6449                 'width': rect.width + 'px',
6450                 'top': rect.height + rect.top + 'px'
6451             });
6452         }
6453
6454         function select(d, i) {
6455             idx = i;
6456             render();
6457         }
6458
6459         function ensureVisible() {
6460             var node = container.selectAll('a.selected').node();
6461             if (node) node.scrollIntoView();
6462         }
6463
6464         function accept(d) {
6465             if (!shown) return;
6466             input
6467                 .property('value', d.value)
6468                 .trigger('change');
6469             event.accept(d);
6470             hide();
6471         }
6472     };
6473
6474     combobox.fetcher = function(_) {
6475         if (!arguments.length) return fetcher;
6476         fetcher = _;
6477         return combobox;
6478     };
6479
6480     combobox.data = function(_) {
6481         if (!arguments.length) return data;
6482         data = _;
6483         return combobox;
6484     };
6485
6486     combobox.minItems = function(_) {
6487         if (!arguments.length) return minItems;
6488         minItems = _;
6489         return combobox;
6490     };
6491
6492     return d3.rebind(combobox, event, 'on');
6493 };
6494 d3.geo.tile = function() {
6495   var size = [960, 500],
6496       scale = 256,
6497       scaleExtent = [0, 20],
6498       translate = [size[0] / 2, size[1] / 2],
6499       zoomDelta = 0;
6500
6501   function bound(_) {
6502       return Math.min(scaleExtent[1], Math.max(scaleExtent[0], _));
6503   }
6504
6505   function tile() {
6506     var z = Math.max(Math.log(scale) / Math.LN2 - 8, 0),
6507         z0 = bound(Math.round(z + zoomDelta)),
6508         k = Math.pow(2, z - z0 + 8),
6509         origin = [(translate[0] - scale / 2) / k, (translate[1] - scale / 2) / k],
6510         tiles = [],
6511         cols = d3.range(Math.max(0, Math.floor(-origin[0])), Math.max(0, Math.ceil(size[0] / k - origin[0]))),
6512         rows = d3.range(Math.max(0, Math.floor(-origin[1])), Math.max(0, Math.ceil(size[1] / k - origin[1])));
6513
6514     rows.forEach(function(y) {
6515       cols.forEach(function(x) {
6516         tiles.push([x, y, z0]);
6517       });
6518     });
6519
6520     tiles.translate = origin;
6521     tiles.scale = k;
6522
6523     return tiles;
6524   }
6525
6526   tile.scaleExtent = function(_) {
6527     if (!arguments.length) return scaleExtent;
6528     scaleExtent = _;
6529     return tile;
6530   };
6531
6532   tile.size = function(_) {
6533     if (!arguments.length) return size;
6534     size = _;
6535     return tile;
6536   };
6537
6538   tile.scale = function(_) {
6539     if (!arguments.length) return scale;
6540     scale = _;
6541     return tile;
6542   };
6543
6544   tile.translate = function(_) {
6545     if (!arguments.length) return translate;
6546     translate = _;
6547     return tile;
6548   };
6549
6550   tile.zoomDelta = function(_) {
6551     if (!arguments.length) return zoomDelta;
6552     zoomDelta = +_;
6553     return tile;
6554   };
6555
6556   return tile;
6557 };
6558 d3.jsonp = function (url, callback) {
6559   function rand() {
6560     var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
6561       c = '', i = -1;
6562     while (++i < 15) c += chars.charAt(Math.floor(Math.random() * 52));
6563     return c;
6564   }
6565
6566   function create(url) {
6567     var e = url.match(/callback=d3.jsonp.(\w+)/),
6568       c = e ? e[1] : rand();
6569     d3.jsonp[c] = function(data) {
6570       callback(data);
6571       delete d3.jsonp[c];
6572       script.remove();
6573     };
6574     return 'd3.jsonp.' + c;
6575   }
6576
6577   var cb = create(url),
6578     script = d3.select('head')
6579     .append('script')
6580     .attr('type', 'text/javascript')
6581     .attr('src', url.replace(/(\{|%7B)callback(\}|%7D)/, cb));
6582 };
6583 /*
6584  * This code is licensed under the MIT license.
6585  *
6586  * Copyright © 2013, iD authors.
6587  *
6588  * Portions copyright © 2011, Keith Cirkel
6589  * See https://github.com/keithamus/jwerty
6590  *
6591  */
6592 d3.keybinding = function(namespace) {
6593     var bindings = [];
6594
6595     function matches(binding, event) {
6596         for (var p in binding.event) {
6597             if (event[p] != binding.event[p])
6598                 return false;
6599         }
6600
6601         return (!binding.capture) === (event.eventPhase !== Event.CAPTURING_PHASE);
6602     }
6603
6604     function capture() {
6605         for (var i = 0; i < bindings.length; i++) {
6606             var binding = bindings[i];
6607             if (matches(binding, d3.event)) {
6608                 binding.callback();
6609             }
6610         }
6611     }
6612
6613     function bubble() {
6614         var tagName = d3.select(d3.event.target).node().tagName;
6615         if (tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA') {
6616             return;
6617         }
6618         capture();
6619     }
6620
6621     function keybinding(selection) {
6622         selection = selection || d3.select(document);
6623         selection.on('keydown.capture' + namespace, capture, true);
6624         selection.on('keydown.bubble' + namespace, bubble, false);
6625         return keybinding;
6626     }
6627
6628     keybinding.off = function(selection) {
6629         selection = selection || d3.select(document);
6630         selection.on('keydown.capture' + namespace, null);
6631         selection.on('keydown.bubble' + namespace, null);
6632         return keybinding;
6633     };
6634
6635     keybinding.on = function(code, callback, capture) {
6636         var binding = {
6637             event: {
6638                 keyCode: 0,
6639                 shiftKey: false,
6640                 ctrlKey: false,
6641                 altKey: false,
6642                 metaKey: false
6643             },
6644             capture: capture,
6645             callback: callback
6646         };
6647
6648         code = code.toLowerCase().match(/(?:(?:[^+⇧⌃⌥⌘])+|[⇧⌃⌥⌘]|\+\+|^\+$)/g);
6649
6650         for (var i = 0; i < code.length; i++) {
6651             // Normalise matching errors
6652             if (code[i] === '++') code[i] = '+';
6653
6654             if (code[i] in d3.keybinding.modifierCodes) {
6655                 binding.event[d3.keybinding.modifierProperties[d3.keybinding.modifierCodes[code[i]]]] = true;
6656             } else if (code[i] in d3.keybinding.keyCodes) {
6657                 binding.event.keyCode = d3.keybinding.keyCodes[code[i]];
6658             }
6659         }
6660
6661         bindings.push(binding);
6662
6663         return keybinding;
6664     };
6665
6666     return keybinding;
6667 };
6668
6669 (function () {
6670     d3.keybinding.modifierCodes = {
6671         // Shift key, ⇧
6672         '⇧': 16, shift: 16,
6673         // CTRL key, on Mac: ⌃
6674         '⌃': 17, ctrl: 17,
6675         // ALT key, on Mac: ⌥ (Alt)
6676         '⌥': 18, alt: 18, option: 18,
6677         // META, on Mac: ⌘ (CMD), on Windows (Win), on Linux (Super)
6678         '⌘': 91, meta: 91, cmd: 91, 'super': 91, win: 91
6679     };
6680
6681     d3.keybinding.modifierProperties = {
6682         16: 'shiftKey',
6683         17: 'ctrlKey',
6684         18: 'altKey',
6685         91: 'metaKey'
6686     };
6687
6688     d3.keybinding.keyCodes = {
6689         // Backspace key, on Mac: ⌫ (Backspace)
6690         '⌫': 8, backspace: 8,
6691         // Tab Key, on Mac: ⇥ (Tab), on Windows ⇥⇥
6692         '⇥': 9, '⇆': 9, tab: 9,
6693         // Return key, ↩
6694         '↩': 13, 'return': 13, enter: 13, '⌅': 13,
6695         // Pause/Break key
6696         'pause': 19, 'pause-break': 19,
6697         // Caps Lock key, ⇪
6698         '⇪': 20, caps: 20, 'caps-lock': 20,
6699         // Escape key, on Mac: ⎋, on Windows: Esc
6700         '⎋': 27, escape: 27, esc: 27,
6701         // Space key
6702         space: 32,
6703         // Page-Up key, or pgup, on Mac: ↖
6704         '↖': 33, pgup: 33, 'page-up': 33,
6705         // Page-Down key, or pgdown, on Mac: ↘
6706         '↘': 34, pgdown: 34, 'page-down': 34,
6707         // END key, on Mac: ⇟
6708         '⇟': 35, end: 35,
6709         // HOME key, on Mac: ⇞
6710         '⇞': 36, home: 36,
6711         // Insert key, or ins
6712         ins: 45, insert: 45,
6713         // Delete key, on Mac: ⌦ (Delete)
6714         '⌦': 46, del: 46, 'delete': 46,
6715         // Left Arrow Key, or ←
6716         '←': 37, left: 37, 'arrow-left': 37,
6717         // Up Arrow Key, or ↑
6718         '↑': 38, up: 38, 'arrow-up': 38,
6719         // Right Arrow Key, or →
6720         '→': 39, right: 39, 'arrow-right': 39,
6721         // Up Arrow Key, or ↓
6722         '↓': 40, down: 40, 'arrow-down': 40,
6723         // odities, printing characters that come out wrong:
6724         // Firefox Equals
6725         'ffequals': 61,
6726         // Num-Multiply, or *
6727         '*': 106, star: 106, asterisk: 106, multiply: 106,
6728         // Num-Plus or +
6729         '+': 107, 'plus': 107,
6730         // Num-Subtract, or -
6731         '-': 109, subtract: 109,
6732         // Firefox Minus
6733         'ffplus': 171,
6734         // Firefox Minus
6735         'ffminus': 173,
6736         // Semicolon
6737         ';': 186, semicolon: 186,
6738         // = or equals
6739         '=': 187, 'equals': 187,
6740         // Comma, or ,
6741         ',': 188, comma: 188,
6742         'dash': 189, //???
6743         // Period, or ., or full-stop
6744         '.': 190, period: 190, 'full-stop': 190,
6745         // Slash, or /, or forward-slash
6746         '/': 191, slash: 191, 'forward-slash': 191,
6747         // Tick, or `, or back-quote
6748         '`': 192, tick: 192, 'back-quote': 192,
6749         // Open bracket, or [
6750         '[': 219, 'open-bracket': 219,
6751         // Back slash, or \
6752         '\\': 220, 'back-slash': 220,
6753         // Close backet, or ]
6754         ']': 221, 'close-bracket': 221,
6755         // Apostrophe, or Quote, or '
6756         '\'': 222, quote: 222, apostrophe: 222
6757     };
6758
6759     // NUMPAD 0-9
6760     var i = 95, n = 0;
6761     while (++i < 106) {
6762         d3.keybinding.keyCodes['num-' + n] = i;
6763         ++n;
6764     }
6765
6766     // 0-9
6767     i = 47; n = 0;
6768     while (++i < 58) {
6769         d3.keybinding.keyCodes[n] = i;
6770         ++n;
6771     }
6772
6773     // F1-F25
6774     i = 111; n = 1;
6775     while (++i < 136) {
6776         d3.keybinding.keyCodes['f' + n] = i;
6777         ++n;
6778     }
6779
6780     // a-z
6781     i = 64;
6782     while (++i < 91) {
6783         d3.keybinding.keyCodes[String.fromCharCode(i).toLowerCase()] = i;
6784     }
6785 })();
6786 d3.selection.prototype.one = function (type, listener, capture) {
6787     var target = this, typeOnce = type + ".once";
6788     function one() {
6789         target.on(typeOnce, null);
6790         listener.apply(this, arguments);
6791     }
6792     target.on(typeOnce, one, capture);
6793     return this;
6794 };
6795 d3.selection.prototype.dimensions = function (dimensions) {
6796     if (!arguments.length) {
6797         var node = this.node();
6798         return [node.offsetWidth,
6799                 node.offsetHeight];
6800     }
6801     return this.attr({width: dimensions[0], height: dimensions[1]});
6802 };
6803 d3.selection.prototype.trigger = function (type) {
6804     this.each(function() {
6805         var evt = document.createEvent('HTMLEvents');
6806         evt.initEvent(type, true, true);
6807         this.dispatchEvent(evt);
6808     });
6809 };
6810 d3.typeahead = function() {
6811     var event = d3.dispatch('accept'),
6812         autohighlight = false,
6813         data;
6814
6815     var typeahead = function(selection) {
6816         var container,
6817             hidden,
6818             idx = autohighlight ? 0 : -1;
6819
6820         function setup() {
6821             var rect = selection.node().getBoundingClientRect();
6822             container = d3.select(document.body)
6823                 .append('div').attr('class', 'typeahead')
6824                 .style({
6825                     position: 'absolute',
6826                     left: rect.left + 'px',
6827                     top: rect.bottom + 'px'
6828                 });
6829             selection
6830                 .on('keyup.typeahead', key);
6831             hidden = false;
6832         }
6833
6834         function hide() {
6835             container.remove();
6836             idx = autohighlight ? 0 : -1;
6837             hidden = true;
6838         }
6839
6840         function slowHide() {
6841             if (autohighlight) {
6842                 if (container.select('a.selected').node()) {
6843                     select(container.select('a.selected').datum());
6844                     event.accept();
6845                 }
6846             }
6847             window.setTimeout(hide, 150);
6848         }
6849
6850         selection
6851             .on('focus.typeahead', setup)
6852             .on('blur.typeahead', slowHide);
6853
6854         function key() {
6855            var len = container.selectAll('a').data().length;
6856            if (d3.event.keyCode === 40) {
6857                idx = Math.min(idx + 1, len - 1);
6858                return highlight();
6859            } else if (d3.event.keyCode === 38) {
6860                idx = Math.max(idx - 1, 0);
6861                return highlight();
6862            } else if (d3.event.keyCode === 13) {
6863                if (container.select('a.selected').node()) {
6864                    select(container.select('a.selected').datum());
6865                }
6866                event.accept();
6867                hide();
6868            } else {
6869                update();
6870            }
6871         }
6872
6873         function highlight() {
6874             container
6875                 .selectAll('a')
6876                 .classed('selected', function(d, i) { return i == idx; });
6877         }
6878
6879         function update() {
6880             if (hidden) setup();
6881
6882             data(selection, function(data) {
6883                 container.style('display', function() {
6884                     return data.length ? 'block' : 'none';
6885                 });
6886
6887                 var options = container
6888                     .selectAll('a')
6889                     .data(data, function(d) { return d.value; });
6890
6891                 options.enter()
6892                     .append('a')
6893                     .text(function(d) { return d.value; })
6894                     .attr('title', function(d) { return d.title; })
6895                     .on('click', select);
6896
6897                 options.exit().remove();
6898
6899                 options
6900                     .classed('selected', function(d, i) { return i == idx; });
6901             });
6902         }
6903
6904         function select(d) {
6905             selection
6906                 .property('value', d.value)
6907                 .trigger('change');
6908         }
6909
6910     };
6911
6912     typeahead.data = function(_) {
6913         if (!arguments.length) return data;
6914         data = _;
6915         return typeahead;
6916     };
6917
6918     typeahead.autohighlight = function(_) {
6919         if (!arguments.length) return autohighlight;
6920         autohighlight = _;
6921         return typeahead;
6922     };
6923
6924     return d3.rebind(typeahead, event, 'on');
6925 };
6926 // Tooltips and svg mask used to highlight certain features
6927 d3.curtain = function() {
6928
6929     var event = d3.dispatch(),
6930         surface,
6931         tooltip,
6932         darkness;
6933
6934     function curtain(selection) {
6935
6936         surface = selection.append('svg')
6937             .attr('id', 'curtain')
6938             .style({
6939                 'z-index': 1000,
6940                 'pointer-events': 'none',
6941                 'position': 'absolute',
6942                 'top': 0,
6943                 'left': 0
6944             });
6945
6946         darkness = surface.append('path')
6947             .attr({
6948                 x: 0,
6949                 y: 0,
6950                 'class': 'curtain-darkness'
6951             });
6952
6953         d3.select(window).on('resize.curtain', resize);
6954
6955         tooltip = selection.append('div')
6956             .attr('class', 'tooltip')
6957             .style('z-index', 1002);
6958
6959         tooltip.append('div').attr('class', 'tooltip-arrow');
6960         tooltip.append('div').attr('class', 'tooltip-inner');
6961
6962         resize();
6963
6964         function resize() {
6965             surface.attr({
6966                 width: window.innerWidth,
6967                 height: window.innerHeight
6968             });
6969             curtain.cut(darkness.datum());
6970         }
6971     }
6972
6973     curtain.reveal = function(box, text, tooltipclass, duration) {
6974         if (typeof box === 'string') box = d3.select(box).node();
6975         if (box.getBoundingClientRect) box = box.getBoundingClientRect();
6976
6977         curtain.cut(box, duration);
6978
6979         if (text) {
6980             // pseudo markdown bold text hack
6981             var parts = text.split('**');
6982             var html = parts[0] ? '<span>' + parts[0] + '</span>' : '';
6983             if (parts[1]) html += '<span class="bold">' + parts[1] + '</span>';
6984
6985             var dimensions = tooltip.classed('in', true)
6986                 .select('.tooltip-inner')
6987                     .html(html)
6988                     .dimensions();
6989
6990             var pos;
6991
6992             var w = window.innerWidth,
6993                 h = window.innerHeight;
6994
6995             if (box.top + box.height < Math.min(100, box.width + box.left)) {
6996                 side = 'bottom';
6997                 pos = [box.left + box.width / 2 - dimensions[0]/ 2, box.top + box.height];
6998
6999             } else if (box.left + box.width + 300 < window.innerWidth) {
7000                 side = 'right';
7001                 pos = [box.left + box.width, box.top + box.height / 2 - dimensions[1] / 2];
7002
7003             } else if (box.left > 300) {
7004                 side = 'left';
7005                 pos = [box.left - 200, box.top + box.height / 2 - dimensions[1] / 2];
7006             } else {
7007                 side = 'bottom';
7008                 pos = [box.left, box.top + box.height];
7009             }
7010
7011             pos = [
7012                 Math.min(Math.max(10, pos[0]), w - dimensions[0] - 10),
7013                 Math.min(Math.max(10, pos[1]), h - dimensions[1] - 10)
7014             ];
7015
7016
7017             if (duration !== 0 || !tooltip.classed(side)) tooltip.call(iD.ui.Toggle(true));
7018
7019             tooltip
7020                 .style('top', pos[1] + 'px')
7021                 .style('left', pos[0] + 'px')
7022                 .attr('class', 'curtain-tooltip tooltip in ' + side + ' ' + tooltipclass)
7023                 .select('.tooltip-inner')
7024                     .html(html);
7025
7026         } else {
7027             tooltip.call(iD.ui.Toggle(false));
7028         }
7029     };
7030
7031     curtain.cut = function(datum, duration) {
7032         darkness.datum(datum);
7033
7034         (duration === 0 ? darkness : darkness.transition().duration(duration || 600))
7035             .attr('d', function(d) {
7036                 var string = "M 0,0 L 0," + window.innerHeight + " L " +
7037                     window.innerWidth + "," + window.innerHeight + "L" +
7038                     window.innerWidth + ",0 Z";
7039
7040                 if (!d) return string;
7041                 return string + 'M' +
7042                     d.left + ',' + d.top + 'L' +
7043                     d.left + ',' + (d.top + d.height) + 'L' +
7044                     (d.left + d.width) + ',' + (d.top + d.height) + 'L' +
7045                     (d.left + d.width) + ',' + (d.top) + 'Z';
7046
7047             });
7048     };
7049
7050     curtain.remove = function() {
7051         surface.remove();
7052         tooltip.remove();
7053     };
7054
7055     return d3.rebind(curtain, event, 'on');
7056 };
7057 // Like selection.property('value', ...), but avoids no-op value sets,
7058 // which can result in layout/repaint thrashing in some situations.
7059 d3.selection.prototype.value = function(value) {
7060     function d3_selection_value(value) {
7061       function valueNull() {
7062         delete this.value;
7063       }
7064
7065       function valueConstant() {
7066         if (this.value !== value) this.value = value;
7067       }
7068
7069       function valueFunction() {
7070         var x = value.apply(this, arguments);
7071         if (x == null) delete this.value;
7072         else if (this.value !== x) this.value = x;
7073       }
7074
7075       return value == null
7076           ? valueNull : (typeof value === "function"
7077           ? valueFunction : valueConstant);
7078     }
7079
7080     if (!arguments.length) return this.property('value');
7081     return this.each(d3_selection_value(value));
7082 };
7083 // Copyright (c) 2006, 2008 Tony Garnock-Jones <tonyg@lshift.net>
7084 // Copyright (c) 2006, 2008 LShift Ltd. <query@lshift.net>
7085 //
7086 // Permission is hereby granted, free of charge, to any person
7087 // obtaining a copy of this software and associated documentation files
7088 // (the "Software"), to deal in the Software without restriction,
7089 // including without limitation the rights to use, copy, modify, merge,
7090 // publish, distribute, sublicense, and/or sell copies of the Software,
7091 // and to permit persons to whom the Software is furnished to do so,
7092 // subject to the following conditions:
7093 //
7094 // The above copyright notice and this permission notice shall be
7095 // included in all copies or substantial portions of the Software.
7096 //
7097 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
7098 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
7099 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
7100 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
7101 // BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
7102 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
7103 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
7104 // SOFTWARE.
7105
7106 // source:  https://bitbucket.org/lshift/synchrotron/src
7107
7108 Diff3 = (function() {
7109     'use strict';
7110
7111     var diff3 = {
7112         longest_common_subsequence: function(file1, file2) {
7113             /* Text diff algorithm following Hunt and McIlroy 1976.
7114              * J. W. Hunt and M. D. McIlroy, An algorithm for differential file
7115              * comparison, Bell Telephone Laboratories CSTR #41 (1976)
7116              * http://www.cs.dartmouth.edu/~doug/
7117              *
7118              * Expects two arrays of strings.
7119              */
7120             var equivalenceClasses;
7121             var file2indices;
7122             var newCandidate;
7123             var candidates;
7124             var line;
7125             var c, i, j, jX, r, s;
7126
7127             equivalenceClasses = {};
7128             for (j = 0; j < file2.length; j++) {
7129                 line = file2[j];
7130                 if (equivalenceClasses[line]) {
7131                     equivalenceClasses[line].push(j);
7132                 } else {
7133                     equivalenceClasses[line] = [j];
7134                 }
7135             }
7136
7137             candidates = [{file1index: -1,
7138                            file2index: -1,
7139                            chain: null}];
7140
7141             for (i = 0; i < file1.length; i++) {
7142                 line = file1[i];
7143                 file2indices = equivalenceClasses[line] || [];
7144
7145                 r = 0;
7146                 c = candidates[0];
7147
7148                 for (jX = 0; jX < file2indices.length; jX++) {
7149                     j = file2indices[jX];
7150
7151                     for (s = 0; s < candidates.length; s++) {
7152                         if ((candidates[s].file2index < j) &&
7153                             ((s == candidates.length - 1) ||
7154                              (candidates[s + 1].file2index > j)))
7155                             break;
7156                     }
7157
7158                     if (s < candidates.length) {
7159                         newCandidate = {file1index: i,
7160                                         file2index: j,
7161                                         chain: candidates[s]};
7162                         if (r == candidates.length) {
7163                             candidates.push(c);
7164                         } else {
7165                             candidates[r] = c;
7166                         }
7167                         r = s + 1;
7168                         c = newCandidate;
7169                         if (r == candidates.length) {
7170                             break; // no point in examining further (j)s
7171                         }
7172                     }
7173                 }
7174
7175                 candidates[r] = c;
7176             }
7177
7178             // At this point, we know the LCS: it's in the reverse of the
7179             // linked-list through .chain of
7180             // candidates[candidates.length - 1].
7181
7182             return candidates[candidates.length - 1];
7183         },
7184
7185         diff_comm: function(file1, file2) {
7186             // We apply the LCS to build a "comm"-style picture of the
7187             // differences between file1 and file2.
7188
7189             var result = [];
7190             var tail1 = file1.length;
7191             var tail2 = file2.length;
7192             var common = {common: []};
7193
7194             function processCommon() {
7195                 if (common.common.length) {
7196                     common.common.reverse();
7197                     result.push(common);
7198                     common = {common: []};
7199                 }
7200             }
7201
7202             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7203                  candidate !== null;
7204                  candidate = candidate.chain)
7205             {
7206                 var different = {file1: [], file2: []};
7207
7208                 while (--tail1 > candidate.file1index) {
7209                     different.file1.push(file1[tail1]);
7210                 }
7211
7212                 while (--tail2 > candidate.file2index) {
7213                     different.file2.push(file2[tail2]);
7214                 }
7215
7216                 if (different.file1.length || different.file2.length) {
7217                     processCommon();
7218                     different.file1.reverse();
7219                     different.file2.reverse();
7220                     result.push(different);
7221                 }
7222
7223                 if (tail1 >= 0) {
7224                     common.common.push(file1[tail1]);
7225                 }
7226             }
7227
7228             processCommon();
7229
7230             result.reverse();
7231             return result;
7232         },
7233
7234         diff_patch: function(file1, file2) {
7235             // We apply the LCD to build a JSON representation of a
7236             // diff(1)-style patch.
7237
7238             var result = [];
7239             var tail1 = file1.length;
7240             var tail2 = file2.length;
7241
7242             function chunkDescription(file, offset, length) {
7243                 var chunk = [];
7244                 for (var i = 0; i < length; i++) {
7245                     chunk.push(file[offset + i]);
7246                 }
7247                 return {offset: offset,
7248                         length: length,
7249                         chunk: chunk};
7250             }
7251
7252             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7253                  candidate !== null;
7254                  candidate = candidate.chain)
7255             {
7256                 var mismatchLength1 = tail1 - candidate.file1index - 1;
7257                 var mismatchLength2 = tail2 - candidate.file2index - 1;
7258                 tail1 = candidate.file1index;
7259                 tail2 = candidate.file2index;
7260
7261                 if (mismatchLength1 || mismatchLength2) {
7262                     result.push({file1: chunkDescription(file1,
7263                                                          candidate.file1index + 1,
7264                                                          mismatchLength1),
7265                                  file2: chunkDescription(file2,
7266                                                          candidate.file2index + 1,
7267                                                          mismatchLength2)});
7268                 }
7269             }
7270
7271             result.reverse();
7272             return result;
7273         },
7274
7275         strip_patch: function(patch) {
7276         // Takes the output of Diff3.diff_patch(), and removes
7277         // information from it. It can still be used by patch(),
7278         // below, but can no longer be inverted.
7279         var newpatch = [];
7280         for (var i = 0; i < patch.length; i++) {
7281             var chunk = patch[i];
7282             newpatch.push({file1: {offset: chunk.file1.offset,
7283                        length: chunk.file1.length},
7284                    file2: {chunk: chunk.file2.chunk}});
7285         }
7286         return newpatch;
7287         },
7288
7289         invert_patch: function(patch) {
7290             // Takes the output of Diff3.diff_patch(), and inverts the
7291             // sense of it, so that it can be applied to file2 to give
7292             // file1 rather than the other way around.
7293
7294             for (var i = 0; i < patch.length; i++) {
7295                 var chunk = patch[i];
7296                 var tmp = chunk.file1;
7297                 chunk.file1 = chunk.file2;
7298                 chunk.file2 = tmp;
7299             }
7300         },
7301
7302         patch: function (file, patch) {
7303             // Applies a patch to a file.
7304             //
7305             // Given file1 and file2, Diff3.patch(file1,
7306             // Diff3.diff_patch(file1, file2)) should give file2.
7307
7308             var result = [];
7309             var commonOffset = 0;
7310
7311             function copyCommon(targetOffset) {
7312                 while (commonOffset < targetOffset) {
7313                     result.push(file[commonOffset]);
7314                     commonOffset++;
7315                 }
7316             }
7317
7318             for (var chunkIndex = 0; chunkIndex < patch.length; chunkIndex++) {
7319                 var chunk = patch[chunkIndex];
7320                 copyCommon(chunk.file1.offset);
7321                 for (var lineIndex = 0; lineIndex < chunk.file2.chunk.length; lineIndex++) {
7322                     result.push(chunk.file2.chunk[lineIndex]);
7323                 }
7324                 commonOffset += chunk.file1.length;
7325             }
7326
7327             copyCommon(file.length);
7328             return result;
7329         },
7330
7331         diff_indices: function(file1, file2) {
7332             // We apply the LCS to give a simple representation of the
7333             // offsets and lengths of mismatched chunks in the input
7334             // files. This is used by diff3_merge_indices below.
7335
7336             var result = [];
7337             var tail1 = file1.length;
7338             var tail2 = file2.length;
7339
7340             for (var candidate = Diff3.longest_common_subsequence(file1, file2);
7341                  candidate !== null;
7342                  candidate = candidate.chain)
7343             {
7344                 var mismatchLength1 = tail1 - candidate.file1index - 1;
7345                 var mismatchLength2 = tail2 - candidate.file2index - 1;
7346                 tail1 = candidate.file1index;
7347                 tail2 = candidate.file2index;
7348
7349                 if (mismatchLength1 || mismatchLength2) {
7350                     result.push({file1: [tail1 + 1, mismatchLength1],
7351                                  file2: [tail2 + 1, mismatchLength2]});
7352                 }
7353             }
7354
7355             result.reverse();
7356             return result;
7357         },
7358
7359         diff3_merge_indices: function (a, o, b) {
7360             // Given three files, A, O, and B, where both A and B are
7361             // independently derived from O, returns a fairly complicated
7362             // internal representation of merge decisions it's taken. The
7363             // interested reader may wish to consult
7364             //
7365             // Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. "A
7366             // Formal Investigation of Diff3." In Arvind and Prasad,
7367             // editors, Foundations of Software Technology and Theoretical
7368             // Computer Science (FSTTCS), December 2007.
7369             //
7370             // (http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf)
7371             var i;
7372
7373             var m1 = Diff3.diff_indices(o, a);
7374             var m2 = Diff3.diff_indices(o, b);
7375
7376             var hunks = [];
7377             function addHunk(h, side) {
7378                 hunks.push([h.file1[0], side, h.file1[1], h.file2[0], h.file2[1]]);
7379             }
7380             for (i = 0; i < m1.length; i++) { addHunk(m1[i], 0); }
7381             for (i = 0; i < m2.length; i++) { addHunk(m2[i], 2); }
7382             hunks.sort();
7383
7384             var result = [];
7385             var commonOffset = 0;
7386             function copyCommon(targetOffset) {
7387                 if (targetOffset > commonOffset) {
7388                     result.push([1, commonOffset, targetOffset - commonOffset]);
7389                     commonOffset = targetOffset;
7390                 }
7391             }
7392
7393             for (var hunkIndex = 0; hunkIndex < hunks.length; hunkIndex++) {
7394                 var firstHunkIndex = hunkIndex;
7395                 var hunk = hunks[hunkIndex];
7396                 var regionLhs = hunk[0];
7397                 var regionRhs = regionLhs + hunk[2];
7398                 while (hunkIndex < hunks.length - 1) {
7399                     var maybeOverlapping = hunks[hunkIndex + 1];
7400                     var maybeLhs = maybeOverlapping[0];
7401                     if (maybeLhs > regionRhs) break;
7402                     regionRhs = maybeLhs + maybeOverlapping[2];
7403                     hunkIndex++;
7404                 }
7405
7406                 copyCommon(regionLhs);
7407                 if (firstHunkIndex == hunkIndex) {
7408             // The "overlap" was only one hunk long, meaning that
7409             // there's no conflict here. Either a and o were the
7410             // same, or b and o were the same.
7411                     if (hunk[4] > 0) {
7412                         result.push([hunk[1], hunk[3], hunk[4]]);
7413                     }
7414                 } else {
7415             // A proper conflict. Determine the extents of the
7416             // regions involved from a, o and b. Effectively merge
7417             // all the hunks on the left into one giant hunk, and
7418             // do the same for the right; then, correct for skew
7419             // in the regions of o that each side changed, and
7420             // report appropriate spans for the three sides.
7421             var regions = {
7422                 0: [a.length, -1, o.length, -1],
7423                 2: [b.length, -1, o.length, -1]
7424             };
7425                     for (i = firstHunkIndex; i <= hunkIndex; i++) {
7426                 hunk = hunks[i];
7427                         var side = hunk[1];
7428                 var r = regions[side];
7429                 var oLhs = hunk[0];
7430                 var oRhs = oLhs + hunk[2];
7431                         var abLhs = hunk[3];
7432                         var abRhs = abLhs + hunk[4];
7433                 r[0] = Math.min(abLhs, r[0]);
7434                 r[1] = Math.max(abRhs, r[1]);
7435                 r[2] = Math.min(oLhs, r[2]);
7436                 r[3] = Math.max(oRhs, r[3]);
7437                     }
7438             var aLhs = regions[0][0] + (regionLhs - regions[0][2]);
7439             var aRhs = regions[0][1] + (regionRhs - regions[0][3]);
7440             var bLhs = regions[2][0] + (regionLhs - regions[2][2]);
7441             var bRhs = regions[2][1] + (regionRhs - regions[2][3]);
7442                     result.push([-1,
7443                      aLhs,      aRhs      - aLhs,
7444                      regionLhs, regionRhs - regionLhs,
7445                      bLhs,      bRhs      - bLhs]);
7446                 }
7447                 commonOffset = regionRhs;
7448             }
7449
7450             copyCommon(o.length);
7451             return result;
7452         },
7453
7454         diff3_merge: function (a, o, b, excludeFalseConflicts) {
7455             // Applies the output of Diff3.diff3_merge_indices to actually
7456             // construct the merged file; the returned result alternates
7457             // between "ok" and "conflict" blocks.
7458
7459             var result = [];
7460             var files = [a, o, b];
7461             var indices = Diff3.diff3_merge_indices(a, o, b);
7462
7463             var okLines = [];
7464             function flushOk() {
7465                 if (okLines.length) {
7466                     result.push({ok: okLines});
7467                 }
7468                 okLines = [];
7469             }
7470             function pushOk(xs) {
7471                 for (var j = 0; j < xs.length; j++) {
7472                     okLines.push(xs[j]);
7473                 }
7474             }
7475
7476             function isTrueConflict(rec) {
7477                 if (rec[2] != rec[6]) return true;
7478                 var aoff = rec[1];
7479                 var boff = rec[5];
7480                 for (var j = 0; j < rec[2]; j++) {
7481                     if (a[j + aoff] != b[j + boff]) return true;
7482                 }
7483                 return false;
7484             }
7485
7486             for (var i = 0; i < indices.length; i++) {
7487                 var x = indices[i];
7488                 var side = x[0];
7489                 if (side == -1) {
7490                     if (excludeFalseConflicts && !isTrueConflict(x)) {
7491                         pushOk(files[0].slice(x[1], x[1] + x[2]));
7492                     } else {
7493                         flushOk();
7494                         result.push({conflict: {a: a.slice(x[1], x[1] + x[2]),
7495                                                 aIndex: x[1],
7496                                                 o: o.slice(x[3], x[3] + x[4]),
7497                                                 oIndex: x[3],
7498                                                 b: b.slice(x[5], x[5] + x[6]),
7499                                                 bIndex: x[5]}});
7500                     }
7501                 } else {
7502                     pushOk(files[side].slice(x[1], x[1] + x[2]));
7503                 }
7504             }
7505
7506             flushOk();
7507             return result;
7508         }
7509     };
7510     return diff3;
7511 })();
7512
7513 if (typeof module !== 'undefined') module.exports = Diff3;
7514 var JXON = new (function () {
7515   var
7516     sValueProp = "keyValue", sAttributesProp = "keyAttributes", sAttrPref = "@", /* you can customize these values */
7517     aCache = [], rIsNull = /^\s*$/, rIsBool = /^(?:true|false)$/i;
7518
7519   function parseText (sValue) {
7520     if (rIsNull.test(sValue)) { return null; }
7521     if (rIsBool.test(sValue)) { return sValue.toLowerCase() === "true"; }
7522     if (isFinite(sValue)) { return parseFloat(sValue); }
7523     if (isFinite(Date.parse(sValue))) { return new Date(sValue); }
7524     return sValue;
7525   }
7526
7527   function EmptyTree () { }
7528   EmptyTree.prototype.toString = function () { return "null"; };
7529   EmptyTree.prototype.valueOf = function () { return null; };
7530
7531   function objectify (vValue) {
7532     return vValue === null ? new EmptyTree() : vValue instanceof Object ? vValue : new vValue.constructor(vValue);
7533   }
7534
7535   function createObjTree (oParentNode, nVerb, bFreeze, bNesteAttr) {
7536     var
7537       nLevelStart = aCache.length, bChildren = oParentNode.hasChildNodes(),
7538       bAttributes = oParentNode.hasAttributes(), bHighVerb = Boolean(nVerb & 2);
7539
7540     var
7541       sProp, vContent, nLength = 0, sCollectedTxt = "",
7542       vResult = bHighVerb ? {} : /* put here the default value for empty nodes: */ true;
7543
7544     if (bChildren) {
7545       for (var oNode, nItem = 0; nItem < oParentNode.childNodes.length; nItem++) {
7546         oNode = oParentNode.childNodes.item(nItem);
7547         if (oNode.nodeType === 4) { sCollectedTxt += oNode.nodeValue; } /* nodeType is "CDATASection" (4) */
7548         else if (oNode.nodeType === 3) { sCollectedTxt += oNode.nodeValue.trim(); } /* nodeType is "Text" (3) */
7549         else if (oNode.nodeType === 1 && !oNode.prefix) { aCache.push(oNode); } /* nodeType is "Element" (1) */
7550       }
7551     }
7552
7553     var nLevelEnd = aCache.length, vBuiltVal = parseText(sCollectedTxt);
7554
7555     if (!bHighVerb && (bChildren || bAttributes)) { vResult = nVerb === 0 ? objectify(vBuiltVal) : {}; }
7556
7557     for (var nElId = nLevelStart; nElId < nLevelEnd; nElId++) {
7558       sProp = aCache[nElId].nodeName.toLowerCase();
7559       vContent = createObjTree(aCache[nElId], nVerb, bFreeze, bNesteAttr);
7560       if (vResult.hasOwnProperty(sProp)) {
7561         if (vResult[sProp].constructor !== Array) { vResult[sProp] = [vResult[sProp]]; }
7562         vResult[sProp].push(vContent);
7563       } else {
7564         vResult[sProp] = vContent;
7565         nLength++;
7566       }
7567     }
7568
7569     if (bAttributes) {
7570       var
7571         nAttrLen = oParentNode.attributes.length,
7572         sAPrefix = bNesteAttr ? "" : sAttrPref, oAttrParent = bNesteAttr ? {} : vResult;
7573
7574       for (var oAttrib, nAttrib = 0; nAttrib < nAttrLen; nLength++, nAttrib++) {
7575         oAttrib = oParentNode.attributes.item(nAttrib);
7576         oAttrParent[sAPrefix + oAttrib.name.toLowerCase()] = parseText(oAttrib.value.trim());
7577       }
7578
7579       if (bNesteAttr) {
7580         if (bFreeze) { Object.freeze(oAttrParent); }
7581         vResult[sAttributesProp] = oAttrParent;
7582         nLength -= nAttrLen - 1;
7583       }
7584     }
7585
7586     if (nVerb === 3 || (nVerb === 2 || nVerb === 1 && nLength > 0) && sCollectedTxt) {
7587       vResult[sValueProp] = vBuiltVal;
7588     } else if (!bHighVerb && nLength === 0 && sCollectedTxt) {
7589       vResult = vBuiltVal;
7590     }
7591
7592     if (bFreeze && (bHighVerb || nLength > 0)) { Object.freeze(vResult); }
7593
7594     aCache.length = nLevelStart;
7595
7596     return vResult;
7597   }
7598
7599   function loadObjTree (oXMLDoc, oParentEl, oParentObj) {
7600     var vValue, oChild;
7601
7602     if (oParentObj instanceof String || oParentObj instanceof Number || oParentObj instanceof Boolean) {
7603       oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toString())); /* verbosity level is 0 */
7604     } else if (oParentObj.constructor === Date) {
7605       oParentEl.appendChild(oXMLDoc.createTextNode(oParentObj.toGMTString()));    
7606     }
7607
7608     for (var sName in oParentObj) {
7609       vValue = oParentObj[sName];
7610       if (isFinite(sName) || vValue instanceof Function) { continue; } /* verbosity level is 0 */
7611       if (sName === sValueProp) {
7612         if (vValue !== null && vValue !== true) { oParentEl.appendChild(oXMLDoc.createTextNode(vValue.constructor === Date ? vValue.toGMTString() : String(vValue))); }
7613       } else if (sName === sAttributesProp) { /* verbosity level is 3 */
7614         for (var sAttrib in vValue) { oParentEl.setAttribute(sAttrib, vValue[sAttrib]); }
7615       } else if (sName.charAt(0) === sAttrPref) {
7616         oParentEl.setAttribute(sName.slice(1), vValue);
7617       } else if (vValue.constructor === Array) {
7618         for (var nItem = 0; nItem < vValue.length; nItem++) {
7619           oChild = oXMLDoc.createElement(sName);
7620           loadObjTree(oXMLDoc, oChild, vValue[nItem]);
7621           oParentEl.appendChild(oChild);
7622         }
7623       } else {
7624         oChild = oXMLDoc.createElement(sName);
7625         if (vValue instanceof Object) {
7626           loadObjTree(oXMLDoc, oChild, vValue);
7627         } else if (vValue !== null && vValue !== true) {
7628           oChild.appendChild(oXMLDoc.createTextNode(vValue.toString()));
7629         }
7630         oParentEl.appendChild(oChild);
7631      }
7632    }
7633   }
7634
7635   this.build = function (oXMLParent, nVerbosity /* optional */, bFreeze /* optional */, bNesteAttributes /* optional */) {
7636     var _nVerb = arguments.length > 1 && typeof nVerbosity === "number" ? nVerbosity & 3 : /* put here the default verbosity level: */ 1;
7637     return createObjTree(oXMLParent, _nVerb, bFreeze || false, arguments.length > 3 ? bNesteAttributes : _nVerb === 3);    
7638   };
7639
7640   this.unbuild = function (oObjTree) {    
7641     var oNewDoc = document.implementation.createDocument("", "", null);
7642     loadObjTree(oNewDoc, oNewDoc, oObjTree);
7643     return oNewDoc;
7644   };
7645
7646   this.stringify = function (oObjTree) {
7647     return (new XMLSerializer()).serializeToString(JXON.unbuild(oObjTree));
7648   };
7649 })();
7650 // var myObject = JXON.build(doc);
7651 // we got our javascript object! try: alert(JSON.stringify(myObject));
7652
7653 // var newDoc = JXON.unbuild(myObject);
7654 // we got our Document instance! try: alert((new XMLSerializer()).serializeToString(newDoc));
7655 /**
7656  * @license
7657  * lodash 3.9.3 (Custom Build) <https://lodash.com/>
7658  * Build: `lodash --development --output js/lib/lodash.js include="any,assign,bind,chunk,clone,compact,contains,debounce,difference,each,every,extend,filter,find,first,forEach,forOwn,groupBy,indexOf,intersection,isEmpty,isEqual,isFunction,keys,last,map,omit,pairs,pluck,reject,some,throttle,union,uniq,unique,values,without,flatten,value,chain,cloneDeep,merge,pick,reduce" exports="global,node"`
7659  * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
7660  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
7661  * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7662  * Available under MIT license <https://lodash.com/license>
7663  */
7664 ;(function() {
7665
7666   /** Used as a safe reference for `undefined` in pre-ES5 environments. */
7667   var undefined;
7668
7669   /** Used as the semantic version number. */
7670   var VERSION = '3.9.3';
7671
7672   /** Used to compose bitmasks for wrapper metadata. */
7673   var BIND_FLAG = 1,
7674       BIND_KEY_FLAG = 2,
7675       CURRY_BOUND_FLAG = 4,
7676       CURRY_FLAG = 8,
7677       CURRY_RIGHT_FLAG = 16,
7678       PARTIAL_FLAG = 32,
7679       PARTIAL_RIGHT_FLAG = 64,
7680       ARY_FLAG = 128,
7681       REARG_FLAG = 256;
7682
7683   /** Used to detect when a function becomes hot. */
7684   var HOT_COUNT = 150,
7685       HOT_SPAN = 16;
7686
7687   /** Used to indicate the type of lazy iteratees. */
7688   var LAZY_DROP_WHILE_FLAG = 0,
7689       LAZY_FILTER_FLAG = 1,
7690       LAZY_MAP_FLAG = 2;
7691
7692   /** Used as the `TypeError` message for "Functions" methods. */
7693   var FUNC_ERROR_TEXT = 'Expected a function';
7694
7695   /** Used as the internal argument placeholder. */
7696   var PLACEHOLDER = '__lodash_placeholder__';
7697
7698   /** `Object#toString` result references. */
7699   var argsTag = '[object Arguments]',
7700       arrayTag = '[object Array]',
7701       boolTag = '[object Boolean]',
7702       dateTag = '[object Date]',
7703       errorTag = '[object Error]',
7704       funcTag = '[object Function]',
7705       mapTag = '[object Map]',
7706       numberTag = '[object Number]',
7707       objectTag = '[object Object]',
7708       regexpTag = '[object RegExp]',
7709       setTag = '[object Set]',
7710       stringTag = '[object String]',
7711       weakMapTag = '[object WeakMap]';
7712
7713   var arrayBufferTag = '[object ArrayBuffer]',
7714       float32Tag = '[object Float32Array]',
7715       float64Tag = '[object Float64Array]',
7716       int8Tag = '[object Int8Array]',
7717       int16Tag = '[object Int16Array]',
7718       int32Tag = '[object Int32Array]',
7719       uint8Tag = '[object Uint8Array]',
7720       uint8ClampedTag = '[object Uint8ClampedArray]',
7721       uint16Tag = '[object Uint16Array]',
7722       uint32Tag = '[object Uint32Array]';
7723
7724   /** Used to match property names within property paths. */
7725   var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
7726       reIsPlainProp = /^\w*$/,
7727       rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;
7728
7729   /**
7730    * Used to match `RegExp` [special characters](http://www.regular-expressions.info/characters.html#special).
7731    * In addition to special characters the forward slash is escaped to allow for
7732    * easier `eval` use and `Function` compilation.
7733    */
7734   var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g,
7735       reHasRegExpChars = RegExp(reRegExpChars.source);
7736
7737   /** Used to match backslashes in property paths. */
7738   var reEscapeChar = /\\(\\)?/g;
7739
7740   /** Used to match `RegExp` flags from their coerced string values. */
7741   var reFlags = /\w*$/;
7742
7743   /** Used to detect host constructors (Safari > 5). */
7744   var reIsHostCtor = /^\[object .+?Constructor\]$/;
7745
7746   /** Used to detect unsigned integer values. */
7747   var reIsUint = /^\d+$/;
7748
7749   /** Used to fix the JScript `[[DontEnum]]` bug. */
7750   var shadowProps = [
7751     'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',
7752     'toLocaleString', 'toString', 'valueOf'
7753   ];
7754
7755   /** Used to identify `toStringTag` values of typed arrays. */
7756   var typedArrayTags = {};
7757   typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
7758   typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
7759   typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
7760   typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
7761   typedArrayTags[uint32Tag] = true;
7762   typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
7763   typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
7764   typedArrayTags[dateTag] = typedArrayTags[errorTag] =
7765   typedArrayTags[funcTag] = typedArrayTags[mapTag] =
7766   typedArrayTags[numberTag] = typedArrayTags[objectTag] =
7767   typedArrayTags[regexpTag] = typedArrayTags[setTag] =
7768   typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
7769
7770   /** Used to identify `toStringTag` values supported by `_.clone`. */
7771   var cloneableTags = {};
7772   cloneableTags[argsTag] = cloneableTags[arrayTag] =
7773   cloneableTags[arrayBufferTag] = cloneableTags[boolTag] =
7774   cloneableTags[dateTag] = cloneableTags[float32Tag] =
7775   cloneableTags[float64Tag] = cloneableTags[int8Tag] =
7776   cloneableTags[int16Tag] = cloneableTags[int32Tag] =
7777   cloneableTags[numberTag] = cloneableTags[objectTag] =
7778   cloneableTags[regexpTag] = cloneableTags[stringTag] =
7779   cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
7780   cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
7781   cloneableTags[errorTag] = cloneableTags[funcTag] =
7782   cloneableTags[mapTag] = cloneableTags[setTag] =
7783   cloneableTags[weakMapTag] = false;
7784
7785   /** Used as an internal `_.debounce` options object by `_.throttle`. */
7786   var debounceOptions = {
7787     'leading': false,
7788     'maxWait': 0,
7789     'trailing': false
7790   };
7791
7792   /** Used to determine if values are of the language type `Object`. */
7793   var objectTypes = {
7794     'function': true,
7795     'object': true
7796   };
7797
7798   /** Detect free variable `exports`. */
7799   var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
7800
7801   /** Detect free variable `module`. */
7802   var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
7803
7804   /** Detect free variable `global` from Node.js. */
7805   var freeGlobal = freeExports && freeModule && typeof global == 'object' && global && global.Object && global;
7806
7807   /** Detect free variable `self`. */
7808   var freeSelf = objectTypes[typeof self] && self && self.Object && self;
7809
7810   /** Detect free variable `window`. */
7811   var freeWindow = objectTypes[typeof window] && window && window.Object && window;
7812
7813   /** Detect the popular CommonJS extension `module.exports`. */
7814   var moduleExports = freeModule && freeModule.exports === freeExports && freeExports;
7815
7816   /**
7817    * Used as a reference to the global object.
7818    *
7819    * The `this` value is used if it's the global object to avoid Greasemonkey's
7820    * restricted `window` object, otherwise the `window` object is used.
7821    */
7822   var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
7823
7824   /*--------------------------------------------------------------------------*/
7825
7826   /**
7827    * The base implementation of `_.findIndex` and `_.findLastIndex` without
7828    * support for callback shorthands and `this` binding.
7829    *
7830    * @private
7831    * @param {Array} array The array to search.
7832    * @param {Function} predicate The function invoked per iteration.
7833    * @param {boolean} [fromRight] Specify iterating from right to left.
7834    * @returns {number} Returns the index of the matched value, else `-1`.
7835    */
7836   function baseFindIndex(array, predicate, fromRight) {
7837     var length = array.length,
7838         index = fromRight ? length : -1;
7839
7840     while ((fromRight ? index-- : ++index < length)) {
7841       if (predicate(array[index], index, array)) {
7842         return index;
7843       }
7844     }
7845     return -1;
7846   }
7847
7848   /**
7849    * The base implementation of `_.indexOf` without support for binary searches.
7850    *
7851    * @private
7852    * @param {Array} array The array to search.
7853    * @param {*} value The value to search for.
7854    * @param {number} fromIndex The index to search from.
7855    * @returns {number} Returns the index of the matched value, else `-1`.
7856    */
7857   function baseIndexOf(array, value, fromIndex) {
7858     if (value !== value) {
7859       return indexOfNaN(array, fromIndex);
7860     }
7861     var index = fromIndex - 1,
7862         length = array.length;
7863
7864     while (++index < length) {
7865       if (array[index] === value) {
7866         return index;
7867       }
7868     }
7869     return -1;
7870   }
7871
7872   /**
7873    * The base implementation of `_.isFunction` without support for environments
7874    * with incorrect `typeof` results.
7875    *
7876    * @private
7877    * @param {*} value The value to check.
7878    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
7879    */
7880   function baseIsFunction(value) {
7881     // Avoid a Chakra JIT bug in compatibility modes of IE 11.
7882     // See https://github.com/jashkenas/underscore/issues/1621 for more details.
7883     return typeof value == 'function' || false;
7884   }
7885
7886   /**
7887    * Converts `value` to a string if it's not one. An empty string is returned
7888    * for `null` or `undefined` values.
7889    *
7890    * @private
7891    * @param {*} value The value to process.
7892    * @returns {string} Returns the string.
7893    */
7894   function baseToString(value) {
7895     if (typeof value == 'string') {
7896       return value;
7897     }
7898     return value == null ? '' : (value + '');
7899   }
7900
7901   /**
7902    * Gets the index at which the first occurrence of `NaN` is found in `array`.
7903    *
7904    * @private
7905    * @param {Array} array The array to search.
7906    * @param {number} fromIndex The index to search from.
7907    * @param {boolean} [fromRight] Specify iterating from right to left.
7908    * @returns {number} Returns the index of the matched `NaN`, else `-1`.
7909    */
7910   function indexOfNaN(array, fromIndex, fromRight) {
7911     var length = array.length,
7912         index = fromIndex + (fromRight ? 0 : -1);
7913
7914     while ((fromRight ? index-- : ++index < length)) {
7915       var other = array[index];
7916       if (other !== other) {
7917         return index;
7918       }
7919     }
7920     return -1;
7921   }
7922
7923   /**
7924    * Checks if `value` is a host object in IE < 9.
7925    *
7926    * @private
7927    * @param {*} value The value to check.
7928    * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
7929    */
7930   var isHostObject = (function() {
7931     try {
7932       Object({ 'toString': 0 } + '');
7933     } catch(e) {
7934       return function() { return false; };
7935     }
7936     return function(value) {
7937       // IE < 9 presents many host objects as `Object` objects that can coerce
7938       // to strings despite having improperly defined `toString` methods.
7939       return typeof value.toString != 'function' && typeof (value + '') == 'string';
7940     };
7941   }());
7942
7943   /**
7944    * Checks if `value` is object-like.
7945    *
7946    * @private
7947    * @param {*} value The value to check.
7948    * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
7949    */
7950   function isObjectLike(value) {
7951     return !!value && typeof value == 'object';
7952   }
7953
7954   /**
7955    * Replaces all `placeholder` elements in `array` with an internal placeholder
7956    * and returns an array of their indexes.
7957    *
7958    * @private
7959    * @param {Array} array The array to modify.
7960    * @param {*} placeholder The placeholder to replace.
7961    * @returns {Array} Returns the new array of placeholder indexes.
7962    */
7963   function replaceHolders(array, placeholder) {
7964     var index = -1,
7965         length = array.length,
7966         resIndex = -1,
7967         result = [];
7968
7969     while (++index < length) {
7970       if (array[index] === placeholder) {
7971         array[index] = PLACEHOLDER;
7972         result[++resIndex] = index;
7973       }
7974     }
7975     return result;
7976   }
7977
7978   /**
7979    * An implementation of `_.uniq` optimized for sorted arrays without support
7980    * for callback shorthands and `this` binding.
7981    *
7982    * @private
7983    * @param {Array} array The array to inspect.
7984    * @param {Function} [iteratee] The function invoked per iteration.
7985    * @returns {Array} Returns the new duplicate-value-free array.
7986    */
7987   function sortedUniq(array, iteratee) {
7988     var seen,
7989         index = -1,
7990         length = array.length,
7991         resIndex = -1,
7992         result = [];
7993
7994     while (++index < length) {
7995       var value = array[index],
7996           computed = iteratee ? iteratee(value, index, array) : value;
7997
7998       if (!index || seen !== computed) {
7999         seen = computed;
8000         result[++resIndex] = value;
8001       }
8002     }
8003     return result;
8004   }
8005
8006   /*--------------------------------------------------------------------------*/
8007
8008   /** Used for native method references. */
8009   var arrayProto = Array.prototype,
8010       errorProto = Error.prototype,
8011       objectProto = Object.prototype,
8012       stringProto = String.prototype;
8013
8014   /** Used to resolve the decompiled source of functions. */
8015   var fnToString = Function.prototype.toString;
8016
8017   /** Used to check objects for own properties. */
8018   var hasOwnProperty = objectProto.hasOwnProperty;
8019
8020   /**
8021    * Used to resolve the [`toStringTag`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring)
8022    * of values.
8023    */
8024   var objToString = objectProto.toString;
8025
8026   /** Used to detect if a method is native. */
8027   var reIsNative = RegExp('^' +
8028     escapeRegExp(fnToString.call(hasOwnProperty))
8029     .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
8030   );
8031
8032   /** Native method references. */
8033   var ArrayBuffer = getNative(root, 'ArrayBuffer'),
8034       bufferSlice = getNative(ArrayBuffer && new ArrayBuffer(0), 'slice'),
8035       ceil = Math.ceil,
8036       floor = Math.floor,
8037       getPrototypeOf = getNative(Object, 'getPrototypeOf'),
8038       push = arrayProto.push,
8039       propertyIsEnumerable = objectProto.propertyIsEnumerable,
8040       Set = getNative(root, 'Set'),
8041       splice = arrayProto.splice,
8042       Uint8Array = getNative(root, 'Uint8Array'),
8043       WeakMap = getNative(root, 'WeakMap');
8044
8045   /** Used to clone array buffers. */
8046   var Float64Array = (function() {
8047     // Safari 5 errors when using an array buffer to initialize a typed array
8048     // where the array buffer's `byteLength` is not a multiple of the typed
8049     // array's `BYTES_PER_ELEMENT`.
8050     try {
8051       var func = getNative(root, 'Float64Array'),
8052           result = new func(new ArrayBuffer(10), 0, 1) && func;
8053     } catch(e) {}
8054     return result || null;
8055   }());
8056
8057   /* Native method references for those with the same name as other `lodash` methods. */
8058   var nativeCreate = getNative(Object, 'create'),
8059       nativeIsArray = getNative(Array, 'isArray'),
8060       nativeKeys = getNative(Object, 'keys'),
8061       nativeMax = Math.max,
8062       nativeMin = Math.min,
8063       nativeNow = getNative(Date, 'now');
8064
8065   /** Used as references for `-Infinity` and `Infinity`. */
8066   var POSITIVE_INFINITY = Number.POSITIVE_INFINITY;
8067
8068   /** Used as references for the maximum length and index of an array. */
8069   var MAX_ARRAY_LENGTH = 4294967295,
8070       MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
8071       HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
8072
8073   /** Used as the size, in bytes, of each `Float64Array` element. */
8074   var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0;
8075
8076   /**
8077    * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
8078    * of an array-like value.
8079    */
8080   var MAX_SAFE_INTEGER = 9007199254740991;
8081
8082   /** Used to store function metadata. */
8083   var metaMap = WeakMap && new WeakMap;
8084
8085   /** Used to lookup unminified function names. */
8086   var realNames = {};
8087
8088   /** Used to lookup a type array constructors by `toStringTag`. */
8089   var ctorByTag = {};
8090   ctorByTag[float32Tag] = root.Float32Array;
8091   ctorByTag[float64Tag] = root.Float64Array;
8092   ctorByTag[int8Tag] = root.Int8Array;
8093   ctorByTag[int16Tag] = root.Int16Array;
8094   ctorByTag[int32Tag] = root.Int32Array;
8095   ctorByTag[uint8Tag] = root.Uint8Array;
8096   ctorByTag[uint8ClampedTag] = root.Uint8ClampedArray;
8097   ctorByTag[uint16Tag] = root.Uint16Array;
8098   ctorByTag[uint32Tag] = root.Uint32Array;
8099
8100   /** Used to avoid iterating over non-enumerable properties in IE < 9. */
8101   var nonEnumProps = {};
8102   nonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };
8103   nonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };
8104   nonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };
8105   nonEnumProps[objectTag] = { 'constructor': true };
8106
8107   arrayEach(shadowProps, function(key) {
8108     for (var tag in nonEnumProps) {
8109       if (hasOwnProperty.call(nonEnumProps, tag)) {
8110         var props = nonEnumProps[tag];
8111         props[key] = hasOwnProperty.call(props, key);
8112       }
8113     }
8114   });
8115
8116   /*------------------------------------------------------------------------*/
8117
8118   /**
8119    * Creates a `lodash` object which wraps `value` to enable implicit chaining.
8120    * Methods that operate on and return arrays, collections, and functions can
8121    * be chained together. Methods that return a boolean or single value will
8122    * automatically end the chain returning the unwrapped value. Explicit chaining
8123    * may be enabled using `_.chain`. The execution of chained methods is lazy,
8124    * that is, execution is deferred until `_#value` is implicitly or explicitly
8125    * called.
8126    *
8127    * Lazy evaluation allows several methods to support shortcut fusion. Shortcut
8128    * fusion is an optimization that merges iteratees to avoid creating intermediate
8129    * arrays and reduce the number of iteratee executions.
8130    *
8131    * Chaining is supported in custom builds as long as the `_#value` method is
8132    * directly or indirectly included in the build.
8133    *
8134    * In addition to lodash methods, wrappers have `Array` and `String` methods.
8135    *
8136    * The wrapper `Array` methods are:
8137    * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`,
8138    * `splice`, and `unshift`
8139    *
8140    * The wrapper `String` methods are:
8141    * `replace` and `split`
8142    *
8143    * The wrapper methods that support shortcut fusion are:
8144    * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
8145    * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
8146    * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
8147    * and `where`
8148    *
8149    * The chainable wrapper methods are:
8150    * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
8151    * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
8152    * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
8153    * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
8154    * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
8155    * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
8156    * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
8157    * `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
8158    * `memoize`, `merge`, `method`, `methodOf`, `mixin`, `negate`, `omit`, `once`,
8159    * `pairs`, `partial`, `partialRight`, `partition`, `pick`, `plant`, `pluck`,
8160    * `property`, `propertyOf`, `pull`, `pullAt`, `push`, `range`, `rearg`,
8161    * `reject`, `remove`, `rest`, `restParam`, `reverse`, `set`, `shuffle`,
8162    * `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, `spread`,
8163    * `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
8164    * `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
8165    * `unshift`, `unzip`, `unzipWith`, `values`, `valuesIn`, `where`, `without`,
8166    * `wrap`, `xor`, `zip`, `zipObject`, `zipWith`
8167    *
8168    * The wrapper methods that are **not** chainable by default are:
8169    * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
8170    * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
8171    * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `get`,
8172    * `gt`, `gte`, `has`, `identity`, `includes`, `indexOf`, `inRange`, `isArguments`,
8173    * `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`,
8174    * `isFinite` `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
8175    * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
8176    * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `lt`, `lte`,
8177    * `max`, `min`, `noConflict`, `noop`, `now`, `pad`, `padLeft`, `padRight`,
8178    * `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, `repeat`, `result`,
8179    * `runInContext`, `shift`, `size`, `snakeCase`, `some`, `sortedIndex`,
8180    * `sortedLastIndex`, `startCase`, `startsWith`, `sum`, `template`, `trim`,
8181    * `trimLeft`, `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words`
8182    *
8183    * The wrapper method `sample` will return a wrapped value when `n` is provided,
8184    * otherwise an unwrapped value is returned.
8185    *
8186    * @name _
8187    * @constructor
8188    * @category Chain
8189    * @param {*} value The value to wrap in a `lodash` instance.
8190    * @returns {Object} Returns the new `lodash` wrapper instance.
8191    * @example
8192    *
8193    * var wrapped = _([1, 2, 3]);
8194    *
8195    * // returns an unwrapped value
8196    * wrapped.reduce(function(total, n) {
8197    *   return total + n;
8198    * });
8199    * // => 6
8200    *
8201    * // returns a wrapped value
8202    * var squares = wrapped.map(function(n) {
8203    *   return n * n;
8204    * });
8205    *
8206    * _.isArray(squares);
8207    * // => false
8208    *
8209    * _.isArray(squares.value());
8210    * // => true
8211    */
8212   function lodash(value) {
8213     if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
8214       if (value instanceof LodashWrapper) {
8215         return value;
8216       }
8217       if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
8218         return wrapperClone(value);
8219       }
8220     }
8221     return new LodashWrapper(value);
8222   }
8223
8224   /**
8225    * The function whose prototype all chaining wrappers inherit from.
8226    *
8227    * @private
8228    */
8229   function baseLodash() {
8230     // No operation performed.
8231   }
8232
8233   /**
8234    * The base constructor for creating `lodash` wrapper objects.
8235    *
8236    * @private
8237    * @param {*} value The value to wrap.
8238    * @param {boolean} [chainAll] Enable chaining for all wrapper methods.
8239    * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.
8240    */
8241   function LodashWrapper(value, chainAll, actions) {
8242     this.__wrapped__ = value;
8243     this.__actions__ = actions || [];
8244     this.__chain__ = !!chainAll;
8245   }
8246
8247   /**
8248    * An object environment feature flags.
8249    *
8250    * @static
8251    * @memberOf _
8252    * @type Object
8253    */
8254   var support = lodash.support = {};
8255
8256   (function(x) {
8257     var Ctor = function() { this.x = x; },
8258         object = { '0': x, 'length': x },
8259         props = [];
8260
8261     Ctor.prototype = { 'valueOf': x, 'y': x };
8262     for (var key in new Ctor) { props.push(key); }
8263
8264     /**
8265      * Detect if the `toStringTag` of `arguments` objects is resolvable
8266      * (all but Firefox < 4, IE < 9).
8267      *
8268      * @memberOf _.support
8269      * @type boolean
8270      */
8271     support.argsTag = objToString.call(arguments) == argsTag;
8272
8273     /**
8274      * Detect if `name` or `message` properties of `Error.prototype` are
8275      * enumerable by default (IE < 9, Safari < 5.1).
8276      *
8277      * @memberOf _.support
8278      * @type boolean
8279      */
8280     support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||
8281       propertyIsEnumerable.call(errorProto, 'name');
8282
8283     /**
8284      * Detect if `prototype` properties are enumerable by default.
8285      *
8286      * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1
8287      * (if the prototype or a property on the prototype has been set)
8288      * incorrectly set the `[[Enumerable]]` value of a function's `prototype`
8289      * property to `true`.
8290      *
8291      * @memberOf _.support
8292      * @type boolean
8293      */
8294     support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');
8295
8296     /**
8297      * Detect if properties shadowing those on `Object.prototype` are non-enumerable.
8298      *
8299      * In IE < 9 an object's own properties, shadowing non-enumerable ones,
8300      * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).
8301      *
8302      * @memberOf _.support
8303      * @type boolean
8304      */
8305     support.nonEnumShadows = !/valueOf/.test(props);
8306
8307     /**
8308      * Detect if own properties are iterated after inherited properties (IE < 9).
8309      *
8310      * @memberOf _.support
8311      * @type boolean
8312      */
8313     support.ownLast = props[0] != 'x';
8314
8315     /**
8316      * Detect if `Array#shift` and `Array#splice` augment array-like objects
8317      * correctly.
8318      *
8319      * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array
8320      * `shift()` and `splice()` functions that fail to remove the last element,
8321      * `value[0]`, of array-like objects even though the "length" property is
8322      * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,
8323      * while `splice()` is buggy regardless of mode in IE < 9.
8324      *
8325      * @memberOf _.support
8326      * @type boolean
8327      */
8328     support.spliceObjects = (splice.call(object, 0, 1), !object[0]);
8329
8330     /**
8331      * Detect lack of support for accessing string characters by index.
8332      *
8333      * IE < 8 can't access characters by index. IE 8 can only access characters
8334      * by index on string literals, not string objects.
8335      *
8336      * @memberOf _.support
8337      * @type boolean
8338      */
8339     support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';
8340   }(1, 0));
8341
8342   /*------------------------------------------------------------------------*/
8343
8344   /**
8345    * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
8346    *
8347    * @private
8348    * @param {*} value The value to wrap.
8349    */
8350   function LazyWrapper(value) {
8351     this.__wrapped__ = value;
8352     this.__actions__ = null;
8353     this.__dir__ = 1;
8354     this.__dropCount__ = 0;
8355     this.__filtered__ = false;
8356     this.__iteratees__ = null;
8357     this.__takeCount__ = POSITIVE_INFINITY;
8358     this.__views__ = null;
8359   }
8360
8361   /**
8362    * Creates a clone of the lazy wrapper object.
8363    *
8364    * @private
8365    * @name clone
8366    * @memberOf LazyWrapper
8367    * @returns {Object} Returns the cloned `LazyWrapper` object.
8368    */
8369   function lazyClone() {
8370     var actions = this.__actions__,
8371         iteratees = this.__iteratees__,
8372         views = this.__views__,
8373         result = new LazyWrapper(this.__wrapped__);
8374
8375     result.__actions__ = actions ? arrayCopy(actions) : null;
8376     result.__dir__ = this.__dir__;
8377     result.__filtered__ = this.__filtered__;
8378     result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
8379     result.__takeCount__ = this.__takeCount__;
8380     result.__views__ = views ? arrayCopy(views) : null;
8381     return result;
8382   }
8383
8384   /**
8385    * Reverses the direction of lazy iteration.
8386    *
8387    * @private
8388    * @name reverse
8389    * @memberOf LazyWrapper
8390    * @returns {Object} Returns the new reversed `LazyWrapper` object.
8391    */
8392   function lazyReverse() {
8393     if (this.__filtered__) {
8394       var result = new LazyWrapper(this);
8395       result.__dir__ = -1;
8396       result.__filtered__ = true;
8397     } else {
8398       result = this.clone();
8399       result.__dir__ *= -1;
8400     }
8401     return result;
8402   }
8403
8404   /**
8405    * Extracts the unwrapped value from its lazy wrapper.
8406    *
8407    * @private
8408    * @name value
8409    * @memberOf LazyWrapper
8410    * @returns {*} Returns the unwrapped value.
8411    */
8412   function lazyValue() {
8413     var array = this.__wrapped__.value();
8414     if (!isArray(array)) {
8415       return baseWrapperValue(array, this.__actions__);
8416     }
8417     var dir = this.__dir__,
8418         isRight = dir < 0,
8419         view = getView(0, array.length, this.__views__),
8420         start = view.start,
8421         end = view.end,
8422         length = end - start,
8423         index = isRight ? end : (start - 1),
8424         takeCount = nativeMin(length, this.__takeCount__),
8425         iteratees = this.__iteratees__,
8426         iterLength = iteratees ? iteratees.length : 0,
8427         resIndex = 0,
8428         result = [];
8429
8430     outer:
8431     while (length-- && resIndex < takeCount) {
8432       index += dir;
8433
8434       var iterIndex = -1,
8435           value = array[index];
8436
8437       while (++iterIndex < iterLength) {
8438         var data = iteratees[iterIndex],
8439             iteratee = data.iteratee,
8440             type = data.type;
8441
8442         if (type == LAZY_DROP_WHILE_FLAG) {
8443           if (data.done && (isRight ? (index > data.index) : (index < data.index))) {
8444             data.count = 0;
8445             data.done = false;
8446           }
8447           data.index = index;
8448           if (!data.done) {
8449             var limit = data.limit;
8450             if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) {
8451               continue outer;
8452             }
8453           }
8454         } else {
8455           var computed = iteratee(value);
8456           if (type == LAZY_MAP_FLAG) {
8457             value = computed;
8458           } else if (!computed) {
8459             if (type == LAZY_FILTER_FLAG) {
8460               continue outer;
8461             } else {
8462               break outer;
8463             }
8464           }
8465         }
8466       }
8467       result[resIndex++] = value;
8468     }
8469     return result;
8470   }
8471
8472   /*------------------------------------------------------------------------*/
8473
8474   /**
8475    *
8476    * Creates a cache object to store unique values.
8477    *
8478    * @private
8479    * @param {Array} [values] The values to cache.
8480    */
8481   function SetCache(values) {
8482     var length = values ? values.length : 0;
8483
8484     this.data = { 'hash': nativeCreate(null), 'set': new Set };
8485     while (length--) {
8486       this.push(values[length]);
8487     }
8488   }
8489
8490   /**
8491    * Checks if `value` is in `cache` mimicking the return signature of
8492    * `_.indexOf` by returning `0` if the value is found, else `-1`.
8493    *
8494    * @private
8495    * @param {Object} cache The cache to search.
8496    * @param {*} value The value to search for.
8497    * @returns {number} Returns `0` if `value` is found, else `-1`.
8498    */
8499   function cacheIndexOf(cache, value) {
8500     var data = cache.data,
8501         result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value];
8502
8503     return result ? 0 : -1;
8504   }
8505
8506   /**
8507    * Adds `value` to the cache.
8508    *
8509    * @private
8510    * @name push
8511    * @memberOf SetCache
8512    * @param {*} value The value to cache.
8513    */
8514   function cachePush(value) {
8515     var data = this.data;
8516     if (typeof value == 'string' || isObject(value)) {
8517       data.set.add(value);
8518     } else {
8519       data.hash[value] = true;
8520     }
8521   }
8522
8523   /*------------------------------------------------------------------------*/
8524
8525   /**
8526    * Copies the values of `source` to `array`.
8527    *
8528    * @private
8529    * @param {Array} source The array to copy values from.
8530    * @param {Array} [array=[]] The array to copy values to.
8531    * @returns {Array} Returns `array`.
8532    */
8533   function arrayCopy(source, array) {
8534     var index = -1,
8535         length = source.length;
8536
8537     array || (array = Array(length));
8538     while (++index < length) {
8539       array[index] = source[index];
8540     }
8541     return array;
8542   }
8543
8544   /**
8545    * A specialized version of `_.forEach` for arrays without support for callback
8546    * shorthands and `this` binding.
8547    *
8548    * @private
8549    * @param {Array} array The array to iterate over.
8550    * @param {Function} iteratee The function invoked per iteration.
8551    * @returns {Array} Returns `array`.
8552    */
8553   function arrayEach(array, iteratee) {
8554     var index = -1,
8555         length = array.length;
8556
8557     while (++index < length) {
8558       if (iteratee(array[index], index, array) === false) {
8559         break;
8560       }
8561     }
8562     return array;
8563   }
8564
8565   /**
8566    * A specialized version of `_.every` for arrays without support for callback
8567    * shorthands and `this` binding.
8568    *
8569    * @private
8570    * @param {Array} array The array to iterate over.
8571    * @param {Function} predicate The function invoked per iteration.
8572    * @returns {boolean} Returns `true` if all elements pass the predicate check,
8573    *  else `false`.
8574    */
8575   function arrayEvery(array, predicate) {
8576     var index = -1,
8577         length = array.length;
8578
8579     while (++index < length) {
8580       if (!predicate(array[index], index, array)) {
8581         return false;
8582       }
8583     }
8584     return true;
8585   }
8586
8587   /**
8588    * A specialized version of `_.filter` for arrays without support for callback
8589    * shorthands and `this` binding.
8590    *
8591    * @private
8592    * @param {Array} array The array to iterate over.
8593    * @param {Function} predicate The function invoked per iteration.
8594    * @returns {Array} Returns the new filtered array.
8595    */
8596   function arrayFilter(array, predicate) {
8597     var index = -1,
8598         length = array.length,
8599         resIndex = -1,
8600         result = [];
8601
8602     while (++index < length) {
8603       var value = array[index];
8604       if (predicate(value, index, array)) {
8605         result[++resIndex] = value;
8606       }
8607     }
8608     return result;
8609   }
8610
8611   /**
8612    * A specialized version of `_.map` for arrays without support for callback
8613    * shorthands and `this` binding.
8614    *
8615    * @private
8616    * @param {Array} array The array to iterate over.
8617    * @param {Function} iteratee The function invoked per iteration.
8618    * @returns {Array} Returns the new mapped array.
8619    */
8620   function arrayMap(array, iteratee) {
8621     var index = -1,
8622         length = array.length,
8623         result = Array(length);
8624
8625     while (++index < length) {
8626       result[index] = iteratee(array[index], index, array);
8627     }
8628     return result;
8629   }
8630
8631   /**
8632    * A specialized version of `_.reduce` for arrays without support for callback
8633    * shorthands and `this` binding.
8634    *
8635    * @private
8636    * @param {Array} array The array to iterate over.
8637    * @param {Function} iteratee The function invoked per iteration.
8638    * @param {*} [accumulator] The initial value.
8639    * @param {boolean} [initFromArray] Specify using the first element of `array`
8640    *  as the initial value.
8641    * @returns {*} Returns the accumulated value.
8642    */
8643   function arrayReduce(array, iteratee, accumulator, initFromArray) {
8644     var index = -1,
8645         length = array.length;
8646
8647     if (initFromArray && length) {
8648       accumulator = array[++index];
8649     }
8650     while (++index < length) {
8651       accumulator = iteratee(accumulator, array[index], index, array);
8652     }
8653     return accumulator;
8654   }
8655
8656   /**
8657    * A specialized version of `_.some` for arrays without support for callback
8658    * shorthands and `this` binding.
8659    *
8660    * @private
8661    * @param {Array} array The array to iterate over.
8662    * @param {Function} predicate The function invoked per iteration.
8663    * @returns {boolean} Returns `true` if any element passes the predicate check,
8664    *  else `false`.
8665    */
8666   function arraySome(array, predicate) {
8667     var index = -1,
8668         length = array.length;
8669
8670     while (++index < length) {
8671       if (predicate(array[index], index, array)) {
8672         return true;
8673       }
8674     }
8675     return false;
8676   }
8677
8678   /**
8679    * A specialized version of `_.assign` for customizing assigned values without
8680    * support for argument juggling, multiple sources, and `this` binding `customizer`
8681    * functions.
8682    *
8683    * @private
8684    * @param {Object} object The destination object.
8685    * @param {Object} source The source object.
8686    * @param {Function} customizer The function to customize assigned values.
8687    * @returns {Object} Returns `object`.
8688    */
8689   function assignWith(object, source, customizer) {
8690     var index = -1,
8691         props = keys(source),
8692         length = props.length;
8693
8694     while (++index < length) {
8695       var key = props[index],
8696           value = object[key],
8697           result = customizer(value, source[key], key, object, source);
8698
8699       if ((result === result ? (result !== value) : (value === value)) ||
8700           (value === undefined && !(key in object))) {
8701         object[key] = result;
8702       }
8703     }
8704     return object;
8705   }
8706
8707   /**
8708    * The base implementation of `_.assign` without support for argument juggling,
8709    * multiple sources, and `customizer` functions.
8710    *
8711    * @private
8712    * @param {Object} object The destination object.
8713    * @param {Object} source The source object.
8714    * @returns {Object} Returns `object`.
8715    */
8716   function baseAssign(object, source) {
8717     return source == null
8718       ? object
8719       : baseCopy(source, keys(source), object);
8720   }
8721
8722   /**
8723    * Copies properties of `source` to `object`.
8724    *
8725    * @private
8726    * @param {Object} source The object to copy properties from.
8727    * @param {Array} props The property names to copy.
8728    * @param {Object} [object={}] The object to copy properties to.
8729    * @returns {Object} Returns `object`.
8730    */
8731   function baseCopy(source, props, object) {
8732     object || (object = {});
8733
8734     var index = -1,
8735         length = props.length;
8736
8737     while (++index < length) {
8738       var key = props[index];
8739       object[key] = source[key];
8740     }
8741     return object;
8742   }
8743
8744   /**
8745    * The base implementation of `_.callback` which supports specifying the
8746    * number of arguments to provide to `func`.
8747    *
8748    * @private
8749    * @param {*} [func=_.identity] The value to convert to a callback.
8750    * @param {*} [thisArg] The `this` binding of `func`.
8751    * @param {number} [argCount] The number of arguments to provide to `func`.
8752    * @returns {Function} Returns the callback.
8753    */
8754   function baseCallback(func, thisArg, argCount) {
8755     var type = typeof func;
8756     if (type == 'function') {
8757       return thisArg === undefined
8758         ? func
8759         : bindCallback(func, thisArg, argCount);
8760     }
8761     if (func == null) {
8762       return identity;
8763     }
8764     if (type == 'object') {
8765       return baseMatches(func);
8766     }
8767     return thisArg === undefined
8768       ? property(func)
8769       : baseMatchesProperty(func, thisArg);
8770   }
8771
8772   /**
8773    * The base implementation of `_.clone` without support for argument juggling
8774    * and `this` binding `customizer` functions.
8775    *
8776    * @private
8777    * @param {*} value The value to clone.
8778    * @param {boolean} [isDeep] Specify a deep clone.
8779    * @param {Function} [customizer] The function to customize cloning values.
8780    * @param {string} [key] The key of `value`.
8781    * @param {Object} [object] The object `value` belongs to.
8782    * @param {Array} [stackA=[]] Tracks traversed source objects.
8783    * @param {Array} [stackB=[]] Associates clones with source counterparts.
8784    * @returns {*} Returns the cloned value.
8785    */
8786   function baseClone(value, isDeep, customizer, key, object, stackA, stackB) {
8787     var result;
8788     if (customizer) {
8789       result = object ? customizer(value, key, object) : customizer(value);
8790     }
8791     if (result !== undefined) {
8792       return result;
8793     }
8794     if (!isObject(value)) {
8795       return value;
8796     }
8797     var isArr = isArray(value);
8798     if (isArr) {
8799       result = initCloneArray(value);
8800       if (!isDeep) {
8801         return arrayCopy(value, result);
8802       }
8803     } else {
8804       var tag = objToString.call(value),
8805           isFunc = tag == funcTag;
8806
8807       if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
8808         if (isHostObject(value)) {
8809           return object ? value : {};
8810         }
8811         result = initCloneObject(isFunc ? {} : value);
8812         if (!isDeep) {
8813           return baseAssign(result, value);
8814         }
8815       } else {
8816         return cloneableTags[tag]
8817           ? initCloneByTag(value, tag, isDeep)
8818           : (object ? value : {});
8819       }
8820     }
8821     // Check for circular references and return corresponding clone.
8822     stackA || (stackA = []);
8823     stackB || (stackB = []);
8824
8825     var length = stackA.length;
8826     while (length--) {
8827       if (stackA[length] == value) {
8828         return stackB[length];
8829       }
8830     }
8831     // Add the source value to the stack of traversed objects and associate it with its clone.
8832     stackA.push(value);
8833     stackB.push(result);
8834
8835     // Recursively populate clone (susceptible to call stack limits).
8836     (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) {
8837       result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB);
8838     });
8839     return result;
8840   }
8841
8842   /**
8843    * The base implementation of `_.create` without support for assigning
8844    * properties to the created object.
8845    *
8846    * @private
8847    * @param {Object} prototype The object to inherit from.
8848    * @returns {Object} Returns the new object.
8849    */
8850   var baseCreate = (function() {
8851     function object() {}
8852     return function(prototype) {
8853       if (isObject(prototype)) {
8854         object.prototype = prototype;
8855         var result = new object;
8856         object.prototype = null;
8857       }
8858       return result || {};
8859     };
8860   }());
8861
8862   /**
8863    * The base implementation of `_.difference` which accepts a single array
8864    * of values to exclude.
8865    *
8866    * @private
8867    * @param {Array} array The array to inspect.
8868    * @param {Array} values The values to exclude.
8869    * @returns {Array} Returns the new array of filtered values.
8870    */
8871   function baseDifference(array, values) {
8872     var length = array ? array.length : 0,
8873         result = [];
8874
8875     if (!length) {
8876       return result;
8877     }
8878     var index = -1,
8879         indexOf = getIndexOf(),
8880         isCommon = indexOf == baseIndexOf,
8881         cache = (isCommon && values.length >= 200) ? createCache(values) : null,
8882         valuesLength = values.length;
8883
8884     if (cache) {
8885       indexOf = cacheIndexOf;
8886       isCommon = false;
8887       values = cache;
8888     }
8889     outer:
8890     while (++index < length) {
8891       var value = array[index];
8892
8893       if (isCommon && value === value) {
8894         var valuesIndex = valuesLength;
8895         while (valuesIndex--) {
8896           if (values[valuesIndex] === value) {
8897             continue outer;
8898           }
8899         }
8900         result.push(value);
8901       }
8902       else if (indexOf(values, value, 0) < 0) {
8903         result.push(value);
8904       }
8905     }
8906     return result;
8907   }
8908
8909   /**
8910    * The base implementation of `_.forEach` without support for callback
8911    * shorthands and `this` binding.
8912    *
8913    * @private
8914    * @param {Array|Object|string} collection The collection to iterate over.
8915    * @param {Function} iteratee The function invoked per iteration.
8916    * @returns {Array|Object|string} Returns `collection`.
8917    */
8918   var baseEach = createBaseEach(baseForOwn);
8919
8920   /**
8921    * The base implementation of `_.every` without support for callback
8922    * shorthands and `this` binding.
8923    *
8924    * @private
8925    * @param {Array|Object|string} collection The collection to iterate over.
8926    * @param {Function} predicate The function invoked per iteration.
8927    * @returns {boolean} Returns `true` if all elements pass the predicate check,
8928    *  else `false`
8929    */
8930   function baseEvery(collection, predicate) {
8931     var result = true;
8932     baseEach(collection, function(value, index, collection) {
8933       result = !!predicate(value, index, collection);
8934       return result;
8935     });
8936     return result;
8937   }
8938
8939   /**
8940    * The base implementation of `_.filter` without support for callback
8941    * shorthands and `this` binding.
8942    *
8943    * @private
8944    * @param {Array|Object|string} collection The collection to iterate over.
8945    * @param {Function} predicate The function invoked per iteration.
8946    * @returns {Array} Returns the new filtered array.
8947    */
8948   function baseFilter(collection, predicate) {
8949     var result = [];
8950     baseEach(collection, function(value, index, collection) {
8951       if (predicate(value, index, collection)) {
8952         result.push(value);
8953       }
8954     });
8955     return result;
8956   }
8957
8958   /**
8959    * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`,
8960    * without support for callback shorthands and `this` binding, which iterates
8961    * over `collection` using the provided `eachFunc`.
8962    *
8963    * @private
8964    * @param {Array|Object|string} collection The collection to search.
8965    * @param {Function} predicate The function invoked per iteration.
8966    * @param {Function} eachFunc The function to iterate over `collection`.
8967    * @param {boolean} [retKey] Specify returning the key of the found element
8968    *  instead of the element itself.
8969    * @returns {*} Returns the found element or its key, else `undefined`.
8970    */
8971   function baseFind(collection, predicate, eachFunc, retKey) {
8972     var result;
8973     eachFunc(collection, function(value, key, collection) {
8974       if (predicate(value, key, collection)) {
8975         result = retKey ? key : value;
8976         return false;
8977       }
8978     });
8979     return result;
8980   }
8981
8982   /**
8983    * The base implementation of `_.flatten` with added support for restricting
8984    * flattening and specifying the start index.
8985    *
8986    * @private
8987    * @param {Array} array The array to flatten.
8988    * @param {boolean} [isDeep] Specify a deep flatten.
8989    * @param {boolean} [isStrict] Restrict flattening to arrays-like objects.
8990    * @returns {Array} Returns the new flattened array.
8991    */
8992   function baseFlatten(array, isDeep, isStrict) {
8993     var index = -1,
8994         length = array.length,
8995         resIndex = -1,
8996         result = [];
8997
8998     while (++index < length) {
8999       var value = array[index];
9000       if (isObjectLike(value) && isArrayLike(value) &&
9001           (isStrict || isArray(value) || isArguments(value))) {
9002         if (isDeep) {
9003           // Recursively flatten arrays (susceptible to call stack limits).
9004           value = baseFlatten(value, isDeep, isStrict);
9005         }
9006         var valIndex = -1,
9007             valLength = value.length;
9008
9009         while (++valIndex < valLength) {
9010           result[++resIndex] = value[valIndex];
9011         }
9012       } else if (!isStrict) {
9013         result[++resIndex] = value;
9014       }
9015     }
9016     return result;
9017   }
9018
9019   /**
9020    * The base implementation of `baseForIn` and `baseForOwn` which iterates
9021    * over `object` properties returned by `keysFunc` invoking `iteratee` for
9022    * each property. Iteratee functions may exit iteration early by explicitly
9023    * returning `false`.
9024    *
9025    * @private
9026    * @param {Object} object The object to iterate over.
9027    * @param {Function} iteratee The function invoked per iteration.
9028    * @param {Function} keysFunc The function to get the keys of `object`.
9029    * @returns {Object} Returns `object`.
9030    */
9031   var baseFor = createBaseFor();
9032
9033   /**
9034    * The base implementation of `_.forIn` without support for callback
9035    * shorthands and `this` binding.
9036    *
9037    * @private
9038    * @param {Object} object The object to iterate over.
9039    * @param {Function} iteratee The function invoked per iteration.
9040    * @returns {Object} Returns `object`.
9041    */
9042   function baseForIn(object, iteratee) {
9043     return baseFor(object, iteratee, keysIn);
9044   }
9045
9046   /**
9047    * The base implementation of `_.forOwn` without support for callback
9048    * shorthands and `this` binding.
9049    *
9050    * @private
9051    * @param {Object} object The object to iterate over.
9052    * @param {Function} iteratee The function invoked per iteration.
9053    * @returns {Object} Returns `object`.
9054    */
9055   function baseForOwn(object, iteratee) {
9056     return baseFor(object, iteratee, keys);
9057   }
9058
9059   /**
9060    * The base implementation of `_.functions` which creates an array of
9061    * `object` function property names filtered from those provided.
9062    *
9063    * @private
9064    * @param {Object} object The object to inspect.
9065    * @param {Array} props The property names to filter.
9066    * @returns {Array} Returns the new array of filtered property names.
9067    */
9068   function baseFunctions(object, props) {
9069     var index = -1,
9070         length = props.length,
9071         resIndex = -1,
9072         result = [];
9073
9074     while (++index < length) {
9075       var key = props[index];
9076       if (isFunction(object[key])) {
9077         result[++resIndex] = key;
9078       }
9079     }
9080     return result;
9081   }
9082
9083   /**
9084    * The base implementation of `get` without support for string paths
9085    * and default values.
9086    *
9087    * @private
9088    * @param {Object} object The object to query.
9089    * @param {Array} path The path of the property to get.
9090    * @param {string} [pathKey] The key representation of path.
9091    * @returns {*} Returns the resolved value.
9092    */
9093   function baseGet(object, path, pathKey) {
9094     if (object == null) {
9095       return;
9096     }
9097     object = toObject(object);
9098     if (pathKey !== undefined && pathKey in object) {
9099       path = [pathKey];
9100     }
9101     var index = 0,
9102         length = path.length;
9103
9104     while (object != null && index < length) {
9105       object = toObject(object)[path[index++]];
9106     }
9107     return (index && index == length) ? object : undefined;
9108   }
9109
9110   /**
9111    * The base implementation of `_.isEqual` without support for `this` binding
9112    * `customizer` functions.
9113    *
9114    * @private
9115    * @param {*} value The value to compare.
9116    * @param {*} other The other value to compare.
9117    * @param {Function} [customizer] The function to customize comparing values.
9118    * @param {boolean} [isLoose] Specify performing partial comparisons.
9119    * @param {Array} [stackA] Tracks traversed `value` objects.
9120    * @param {Array} [stackB] Tracks traversed `other` objects.
9121    * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
9122    */
9123   function baseIsEqual(value, other, customizer, isLoose, stackA, stackB) {
9124     if (value === other) {
9125       return true;
9126     }
9127     if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {
9128       return value !== value && other !== other;
9129     }
9130     return baseIsEqualDeep(value, other, baseIsEqual, customizer, isLoose, stackA, stackB);
9131   }
9132
9133   /**
9134    * A specialized version of `baseIsEqual` for arrays and objects which performs
9135    * deep comparisons and tracks traversed objects enabling objects with circular
9136    * references to be compared.
9137    *
9138    * @private
9139    * @param {Object} object The object to compare.
9140    * @param {Object} other The other object to compare.
9141    * @param {Function} equalFunc The function to determine equivalents of values.
9142    * @param {Function} [customizer] The function to customize comparing objects.
9143    * @param {boolean} [isLoose] Specify performing partial comparisons.
9144    * @param {Array} [stackA=[]] Tracks traversed `value` objects.
9145    * @param {Array} [stackB=[]] Tracks traversed `other` objects.
9146    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9147    */
9148   function baseIsEqualDeep(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
9149     var objIsArr = isArray(object),
9150         othIsArr = isArray(other),
9151         objTag = arrayTag,
9152         othTag = arrayTag;
9153
9154     if (!objIsArr) {
9155       objTag = objToString.call(object);
9156       if (objTag == argsTag) {
9157         objTag = objectTag;
9158       } else if (objTag != objectTag) {
9159         objIsArr = isTypedArray(object);
9160       }
9161     }
9162     if (!othIsArr) {
9163       othTag = objToString.call(other);
9164       if (othTag == argsTag) {
9165         othTag = objectTag;
9166       } else if (othTag != objectTag) {
9167         othIsArr = isTypedArray(other);
9168       }
9169     }
9170     var objIsObj = objTag == objectTag && !isHostObject(object),
9171         othIsObj = othTag == objectTag && !isHostObject(other),
9172         isSameTag = objTag == othTag;
9173
9174     if (isSameTag && !(objIsArr || objIsObj)) {
9175       return equalByTag(object, other, objTag);
9176     }
9177     if (!isLoose) {
9178       var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
9179           othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
9180
9181       if (objIsWrapped || othIsWrapped) {
9182         return equalFunc(objIsWrapped ? object.value() : object, othIsWrapped ? other.value() : other, customizer, isLoose, stackA, stackB);
9183       }
9184     }
9185     if (!isSameTag) {
9186       return false;
9187     }
9188     // Assume cyclic values are equal.
9189     // For more information on detecting circular references see https://es5.github.io/#JO.
9190     stackA || (stackA = []);
9191     stackB || (stackB = []);
9192
9193     var length = stackA.length;
9194     while (length--) {
9195       if (stackA[length] == object) {
9196         return stackB[length] == other;
9197       }
9198     }
9199     // Add `object` and `other` to the stack of traversed objects.
9200     stackA.push(object);
9201     stackB.push(other);
9202
9203     var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isLoose, stackA, stackB);
9204
9205     stackA.pop();
9206     stackB.pop();
9207
9208     return result;
9209   }
9210
9211   /**
9212    * The base implementation of `_.isMatch` without support for callback
9213    * shorthands and `this` binding.
9214    *
9215    * @private
9216    * @param {Object} object The object to inspect.
9217    * @param {Array} matchData The propery names, values, and compare flags to match.
9218    * @param {Function} [customizer] The function to customize comparing objects.
9219    * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9220    */
9221   function baseIsMatch(object, matchData, customizer) {
9222     var index = matchData.length,
9223         length = index,
9224         noCustomizer = !customizer;
9225
9226     if (object == null) {
9227       return !length;
9228     }
9229     object = toObject(object);
9230     while (index--) {
9231       var data = matchData[index];
9232       if ((noCustomizer && data[2])
9233             ? data[1] !== object[data[0]]
9234             : !(data[0] in object)
9235           ) {
9236         return false;
9237       }
9238     }
9239     while (++index < length) {
9240       data = matchData[index];
9241       var key = data[0],
9242           objValue = object[key],
9243           srcValue = data[1];
9244
9245       if (noCustomizer && data[2]) {
9246         if (objValue === undefined && !(key in object)) {
9247           return false;
9248         }
9249       } else {
9250         var result = customizer ? customizer(objValue, srcValue, key) : undefined;
9251         if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, true) : result)) {
9252           return false;
9253         }
9254       }
9255     }
9256     return true;
9257   }
9258
9259   /**
9260    * The base implementation of `_.map` without support for callback shorthands
9261    * and `this` binding.
9262    *
9263    * @private
9264    * @param {Array|Object|string} collection The collection to iterate over.
9265    * @param {Function} iteratee The function invoked per iteration.
9266    * @returns {Array} Returns the new mapped array.
9267    */
9268   function baseMap(collection, iteratee) {
9269     var index = -1,
9270         result = isArrayLike(collection) ? Array(collection.length) : [];
9271
9272     baseEach(collection, function(value, key, collection) {
9273       result[++index] = iteratee(value, key, collection);
9274     });
9275     return result;
9276   }
9277
9278   /**
9279    * The base implementation of `_.matches` which does not clone `source`.
9280    *
9281    * @private
9282    * @param {Object} source The object of property values to match.
9283    * @returns {Function} Returns the new function.
9284    */
9285   function baseMatches(source) {
9286     var matchData = getMatchData(source);
9287     if (matchData.length == 1 && matchData[0][2]) {
9288       var key = matchData[0][0],
9289           value = matchData[0][1];
9290
9291       return function(object) {
9292         if (object == null) {
9293           return false;
9294         }
9295         object = toObject(object);
9296         return object[key] === value && (value !== undefined || (key in object));
9297       };
9298     }
9299     return function(object) {
9300       return baseIsMatch(object, matchData);
9301     };
9302   }
9303
9304   /**
9305    * The base implementation of `_.matchesProperty` which does not clone `srcValue`.
9306    *
9307    * @private
9308    * @param {string} path The path of the property to get.
9309    * @param {*} srcValue The value to compare.
9310    * @returns {Function} Returns the new function.
9311    */
9312   function baseMatchesProperty(path, srcValue) {
9313     var isArr = isArray(path),
9314         isCommon = isKey(path) && isStrictComparable(srcValue),
9315         pathKey = (path + '');
9316
9317     path = toPath(path);
9318     return function(object) {
9319       if (object == null) {
9320         return false;
9321       }
9322       var key = pathKey;
9323       object = toObject(object);
9324       if ((isArr || !isCommon) && !(key in object)) {
9325         object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
9326         if (object == null) {
9327           return false;
9328         }
9329         key = last(path);
9330         object = toObject(object);
9331       }
9332       return object[key] === srcValue
9333         ? (srcValue !== undefined || (key in object))
9334         : baseIsEqual(srcValue, object[key], undefined, true);
9335     };
9336   }
9337
9338   /**
9339    * The base implementation of `_.merge` without support for argument juggling,
9340    * multiple sources, and `this` binding `customizer` functions.
9341    *
9342    * @private
9343    * @param {Object} object The destination object.
9344    * @param {Object} source The source object.
9345    * @param {Function} [customizer] The function to customize merging properties.
9346    * @param {Array} [stackA=[]] Tracks traversed source objects.
9347    * @param {Array} [stackB=[]] Associates values with source counterparts.
9348    * @returns {Object} Returns `object`.
9349    */
9350   function baseMerge(object, source, customizer, stackA, stackB) {
9351     if (!isObject(object)) {
9352       return object;
9353     }
9354     var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),
9355         props = isSrcArr ? null : keys(source);
9356
9357     arrayEach(props || source, function(srcValue, key) {
9358       if (props) {
9359         key = srcValue;
9360         srcValue = source[key];
9361       }
9362       if (isObjectLike(srcValue)) {
9363         stackA || (stackA = []);
9364         stackB || (stackB = []);
9365         baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);
9366       }
9367       else {
9368         var value = object[key],
9369             result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
9370             isCommon = result === undefined;
9371
9372         if (isCommon) {
9373           result = srcValue;
9374         }
9375         if ((result !== undefined || (isSrcArr && !(key in object))) &&
9376             (isCommon || (result === result ? (result !== value) : (value === value)))) {
9377           object[key] = result;
9378         }
9379       }
9380     });
9381     return object;
9382   }
9383
9384   /**
9385    * A specialized version of `baseMerge` for arrays and objects which performs
9386    * deep merges and tracks traversed objects enabling objects with circular
9387    * references to be merged.
9388    *
9389    * @private
9390    * @param {Object} object The destination object.
9391    * @param {Object} source The source object.
9392    * @param {string} key The key of the value to merge.
9393    * @param {Function} mergeFunc The function to merge values.
9394    * @param {Function} [customizer] The function to customize merging properties.
9395    * @param {Array} [stackA=[]] Tracks traversed source objects.
9396    * @param {Array} [stackB=[]] Associates values with source counterparts.
9397    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
9398    */
9399   function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {
9400     var length = stackA.length,
9401         srcValue = source[key];
9402
9403     while (length--) {
9404       if (stackA[length] == srcValue) {
9405         object[key] = stackB[length];
9406         return;
9407       }
9408     }
9409     var value = object[key],
9410         result = customizer ? customizer(value, srcValue, key, object, source) : undefined,
9411         isCommon = result === undefined;
9412
9413     if (isCommon) {
9414       result = srcValue;
9415       if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {
9416         result = isArray(value)
9417           ? value
9418           : (isArrayLike(value) ? arrayCopy(value) : []);
9419       }
9420       else if (isPlainObject(srcValue) || isArguments(srcValue)) {
9421         result = isArguments(value)
9422           ? toPlainObject(value)
9423           : (isPlainObject(value) ? value : {});
9424       }
9425       else {
9426         isCommon = false;
9427       }
9428     }
9429     // Add the source value to the stack of traversed objects and associate
9430     // it with its merged value.
9431     stackA.push(srcValue);
9432     stackB.push(result);
9433
9434     if (isCommon) {
9435       // Recursively merge objects and arrays (susceptible to call stack limits).
9436       object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);
9437     } else if (result === result ? (result !== value) : (value === value)) {
9438       object[key] = result;
9439     }
9440   }
9441
9442   /**
9443    * The base implementation of `_.property` without support for deep paths.
9444    *
9445    * @private
9446    * @param {string} key The key of the property to get.
9447    * @returns {Function} Returns the new function.
9448    */
9449   function baseProperty(key) {
9450     return function(object) {
9451       return object == null ? undefined : toObject(object)[key];
9452     };
9453   }
9454
9455   /**
9456    * A specialized version of `baseProperty` which supports deep paths.
9457    *
9458    * @private
9459    * @param {Array|string} path The path of the property to get.
9460    * @returns {Function} Returns the new function.
9461    */
9462   function basePropertyDeep(path) {
9463     var pathKey = (path + '');
9464     path = toPath(path);
9465     return function(object) {
9466       return baseGet(object, path, pathKey);
9467     };
9468   }
9469
9470   /**
9471    * The base implementation of `_.reduce` and `_.reduceRight` without support
9472    * for callback shorthands and `this` binding, which iterates over `collection`
9473    * using the provided `eachFunc`.
9474    *
9475    * @private
9476    * @param {Array|Object|string} collection The collection to iterate over.
9477    * @param {Function} iteratee The function invoked per iteration.
9478    * @param {*} accumulator The initial value.
9479    * @param {boolean} initFromCollection Specify using the first or last element
9480    *  of `collection` as the initial value.
9481    * @param {Function} eachFunc The function to iterate over `collection`.
9482    * @returns {*} Returns the accumulated value.
9483    */
9484   function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) {
9485     eachFunc(collection, function(value, index, collection) {
9486       accumulator = initFromCollection
9487         ? (initFromCollection = false, value)
9488         : iteratee(accumulator, value, index, collection);
9489     });
9490     return accumulator;
9491   }
9492
9493   /**
9494    * The base implementation of `setData` without support for hot loop detection.
9495    *
9496    * @private
9497    * @param {Function} func The function to associate metadata with.
9498    * @param {*} data The metadata.
9499    * @returns {Function} Returns `func`.
9500    */
9501   var baseSetData = !metaMap ? identity : function(func, data) {
9502     metaMap.set(func, data);
9503     return func;
9504   };
9505
9506   /**
9507    * The base implementation of `_.slice` without an iteratee call guard.
9508    *
9509    * @private
9510    * @param {Array} array The array to slice.
9511    * @param {number} [start=0] The start position.
9512    * @param {number} [end=array.length] The end position.
9513    * @returns {Array} Returns the slice of `array`.
9514    */
9515   function baseSlice(array, start, end) {
9516     var index = -1,
9517         length = array.length;
9518
9519     start = start == null ? 0 : (+start || 0);
9520     if (start < 0) {
9521       start = -start > length ? 0 : (length + start);
9522     }
9523     end = (end === undefined || end > length) ? length : (+end || 0);
9524     if (end < 0) {
9525       end += length;
9526     }
9527     length = start > end ? 0 : ((end - start) >>> 0);
9528     start >>>= 0;
9529
9530     var result = Array(length);
9531     while (++index < length) {
9532       result[index] = array[index + start];
9533     }
9534     return result;
9535   }
9536
9537   /**
9538    * The base implementation of `_.some` without support for callback shorthands
9539    * and `this` binding.
9540    *
9541    * @private
9542    * @param {Array|Object|string} collection The collection to iterate over.
9543    * @param {Function} predicate The function invoked per iteration.
9544    * @returns {boolean} Returns `true` if any element passes the predicate check,
9545    *  else `false`.
9546    */
9547   function baseSome(collection, predicate) {
9548     var result;
9549
9550     baseEach(collection, function(value, index, collection) {
9551       result = predicate(value, index, collection);
9552       return !result;
9553     });
9554     return !!result;
9555   }
9556
9557   /**
9558    * The base implementation of `_.uniq` without support for callback shorthands
9559    * and `this` binding.
9560    *
9561    * @private
9562    * @param {Array} array The array to inspect.
9563    * @param {Function} [iteratee] The function invoked per iteration.
9564    * @returns {Array} Returns the new duplicate-value-free array.
9565    */
9566   function baseUniq(array, iteratee) {
9567     var index = -1,
9568         indexOf = getIndexOf(),
9569         length = array.length,
9570         isCommon = indexOf == baseIndexOf,
9571         isLarge = isCommon && length >= 200,
9572         seen = isLarge ? createCache() : null,
9573         result = [];
9574
9575     if (seen) {
9576       indexOf = cacheIndexOf;
9577       isCommon = false;
9578     } else {
9579       isLarge = false;
9580       seen = iteratee ? [] : result;
9581     }
9582     outer:
9583     while (++index < length) {
9584       var value = array[index],
9585           computed = iteratee ? iteratee(value, index, array) : value;
9586
9587       if (isCommon && value === value) {
9588         var seenIndex = seen.length;
9589         while (seenIndex--) {
9590           if (seen[seenIndex] === computed) {
9591             continue outer;
9592           }
9593         }
9594         if (iteratee) {
9595           seen.push(computed);
9596         }
9597         result.push(value);
9598       }
9599       else if (indexOf(seen, computed, 0) < 0) {
9600         if (iteratee || isLarge) {
9601           seen.push(computed);
9602         }
9603         result.push(value);
9604       }
9605     }
9606     return result;
9607   }
9608
9609   /**
9610    * The base implementation of `_.values` and `_.valuesIn` which creates an
9611    * array of `object` property values corresponding to the property names
9612    * of `props`.
9613    *
9614    * @private
9615    * @param {Object} object The object to query.
9616    * @param {Array} props The property names to get values for.
9617    * @returns {Object} Returns the array of property values.
9618    */
9619   function baseValues(object, props) {
9620     var index = -1,
9621         length = props.length,
9622         result = Array(length);
9623
9624     while (++index < length) {
9625       result[index] = object[props[index]];
9626     }
9627     return result;
9628   }
9629
9630   /**
9631    * The base implementation of `wrapperValue` which returns the result of
9632    * performing a sequence of actions on the unwrapped `value`, where each
9633    * successive action is supplied the return value of the previous.
9634    *
9635    * @private
9636    * @param {*} value The unwrapped value.
9637    * @param {Array} actions Actions to peform to resolve the unwrapped value.
9638    * @returns {*} Returns the resolved value.
9639    */
9640   function baseWrapperValue(value, actions) {
9641     var result = value;
9642     if (result instanceof LazyWrapper) {
9643       result = result.value();
9644     }
9645     var index = -1,
9646         length = actions.length;
9647
9648     while (++index < length) {
9649       var args = [result],
9650           action = actions[index];
9651
9652       push.apply(args, action.args);
9653       result = action.func.apply(action.thisArg, args);
9654     }
9655     return result;
9656   }
9657
9658   /**
9659    * Performs a binary search of `array` to determine the index at which `value`
9660    * should be inserted into `array` in order to maintain its sort order.
9661    *
9662    * @private
9663    * @param {Array} array The sorted array to inspect.
9664    * @param {*} value The value to evaluate.
9665    * @param {boolean} [retHighest] Specify returning the highest qualified index.
9666    * @returns {number} Returns the index at which `value` should be inserted
9667    *  into `array`.
9668    */
9669   function binaryIndex(array, value, retHighest) {
9670     var low = 0,
9671         high = array ? array.length : low;
9672
9673     if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
9674       while (low < high) {
9675         var mid = (low + high) >>> 1,
9676             computed = array[mid];
9677
9678         if ((retHighest ? (computed <= value) : (computed < value)) && computed !== null) {
9679           low = mid + 1;
9680         } else {
9681           high = mid;
9682         }
9683       }
9684       return high;
9685     }
9686     return binaryIndexBy(array, value, identity, retHighest);
9687   }
9688
9689   /**
9690    * This function is like `binaryIndex` except that it invokes `iteratee` for
9691    * `value` and each element of `array` to compute their sort ranking. The
9692    * iteratee is invoked with one argument; (value).
9693    *
9694    * @private
9695    * @param {Array} array The sorted array to inspect.
9696    * @param {*} value The value to evaluate.
9697    * @param {Function} iteratee The function invoked per iteration.
9698    * @param {boolean} [retHighest] Specify returning the highest qualified index.
9699    * @returns {number} Returns the index at which `value` should be inserted
9700    *  into `array`.
9701    */
9702   function binaryIndexBy(array, value, iteratee, retHighest) {
9703     value = iteratee(value);
9704
9705     var low = 0,
9706         high = array ? array.length : 0,
9707         valIsNaN = value !== value,
9708         valIsNull = value === null,
9709         valIsUndef = value === undefined;
9710
9711     while (low < high) {
9712       var mid = floor((low + high) / 2),
9713           computed = iteratee(array[mid]),
9714           isDef = computed !== undefined,
9715           isReflexive = computed === computed;
9716
9717       if (valIsNaN) {
9718         var setLow = isReflexive || retHighest;
9719       } else if (valIsNull) {
9720         setLow = isReflexive && isDef && (retHighest || computed != null);
9721       } else if (valIsUndef) {
9722         setLow = isReflexive && (retHighest || isDef);
9723       } else if (computed == null) {
9724         setLow = false;
9725       } else {
9726         setLow = retHighest ? (computed <= value) : (computed < value);
9727       }
9728       if (setLow) {
9729         low = mid + 1;
9730       } else {
9731         high = mid;
9732       }
9733     }
9734     return nativeMin(high, MAX_ARRAY_INDEX);
9735   }
9736
9737   /**
9738    * A specialized version of `baseCallback` which only supports `this` binding
9739    * and specifying the number of arguments to provide to `func`.
9740    *
9741    * @private
9742    * @param {Function} func The function to bind.
9743    * @param {*} thisArg The `this` binding of `func`.
9744    * @param {number} [argCount] The number of arguments to provide to `func`.
9745    * @returns {Function} Returns the callback.
9746    */
9747   function bindCallback(func, thisArg, argCount) {
9748     if (typeof func != 'function') {
9749       return identity;
9750     }
9751     if (thisArg === undefined) {
9752       return func;
9753     }
9754     switch (argCount) {
9755       case 1: return function(value) {
9756         return func.call(thisArg, value);
9757       };
9758       case 3: return function(value, index, collection) {
9759         return func.call(thisArg, value, index, collection);
9760       };
9761       case 4: return function(accumulator, value, index, collection) {
9762         return func.call(thisArg, accumulator, value, index, collection);
9763       };
9764       case 5: return function(value, other, key, object, source) {
9765         return func.call(thisArg, value, other, key, object, source);
9766       };
9767     }
9768     return function() {
9769       return func.apply(thisArg, arguments);
9770     };
9771   }
9772
9773   /**
9774    * Creates a clone of the given array buffer.
9775    *
9776    * @private
9777    * @param {ArrayBuffer} buffer The array buffer to clone.
9778    * @returns {ArrayBuffer} Returns the cloned array buffer.
9779    */
9780   function bufferClone(buffer) {
9781     return bufferSlice.call(buffer, 0);
9782   }
9783   if (!bufferSlice) {
9784     // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`.
9785     bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) {
9786       var byteLength = buffer.byteLength,
9787           floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0,
9788           offset = floatLength * FLOAT64_BYTES_PER_ELEMENT,
9789           result = new ArrayBuffer(byteLength);
9790
9791       if (floatLength) {
9792         var view = new Float64Array(result, 0, floatLength);
9793         view.set(new Float64Array(buffer, 0, floatLength));
9794       }
9795       if (byteLength != offset) {
9796         view = new Uint8Array(result, offset);
9797         view.set(new Uint8Array(buffer, offset));
9798       }
9799       return result;
9800     };
9801   }
9802
9803   /**
9804    * Creates an array that is the composition of partially applied arguments,
9805    * placeholders, and provided arguments into a single array of arguments.
9806    *
9807    * @private
9808    * @param {Array|Object} args The provided arguments.
9809    * @param {Array} partials The arguments to prepend to those provided.
9810    * @param {Array} holders The `partials` placeholder indexes.
9811    * @returns {Array} Returns the new array of composed arguments.
9812    */
9813   function composeArgs(args, partials, holders) {
9814     var holdersLength = holders.length,
9815         argsIndex = -1,
9816         argsLength = nativeMax(args.length - holdersLength, 0),
9817         leftIndex = -1,
9818         leftLength = partials.length,
9819         result = Array(argsLength + leftLength);
9820
9821     while (++leftIndex < leftLength) {
9822       result[leftIndex] = partials[leftIndex];
9823     }
9824     while (++argsIndex < holdersLength) {
9825       result[holders[argsIndex]] = args[argsIndex];
9826     }
9827     while (argsLength--) {
9828       result[leftIndex++] = args[argsIndex++];
9829     }
9830     return result;
9831   }
9832
9833   /**
9834    * This function is like `composeArgs` except that the arguments composition
9835    * is tailored for `_.partialRight`.
9836    *
9837    * @private
9838    * @param {Array|Object} args The provided arguments.
9839    * @param {Array} partials The arguments to append to those provided.
9840    * @param {Array} holders The `partials` placeholder indexes.
9841    * @returns {Array} Returns the new array of composed arguments.
9842    */
9843   function composeArgsRight(args, partials, holders) {
9844     var holdersIndex = -1,
9845         holdersLength = holders.length,
9846         argsIndex = -1,
9847         argsLength = nativeMax(args.length - holdersLength, 0),
9848         rightIndex = -1,
9849         rightLength = partials.length,
9850         result = Array(argsLength + rightLength);
9851
9852     while (++argsIndex < argsLength) {
9853       result[argsIndex] = args[argsIndex];
9854     }
9855     var offset = argsIndex;
9856     while (++rightIndex < rightLength) {
9857       result[offset + rightIndex] = partials[rightIndex];
9858     }
9859     while (++holdersIndex < holdersLength) {
9860       result[offset + holders[holdersIndex]] = args[argsIndex++];
9861     }
9862     return result;
9863   }
9864
9865   /**
9866    * Creates a function that aggregates a collection, creating an accumulator
9867    * object composed from the results of running each element in the collection
9868    * through an iteratee.
9869    *
9870    * **Note:** This function is used to create `_.countBy`, `_.groupBy`, `_.indexBy`,
9871    * and `_.partition`.
9872    *
9873    * @private
9874    * @param {Function} setter The function to set keys and values of the accumulator object.
9875    * @param {Function} [initializer] The function to initialize the accumulator object.
9876    * @returns {Function} Returns the new aggregator function.
9877    */
9878   function createAggregator(setter, initializer) {
9879     return function(collection, iteratee, thisArg) {
9880       var result = initializer ? initializer() : {};
9881       iteratee = getCallback(iteratee, thisArg, 3);
9882
9883       if (isArray(collection)) {
9884         var index = -1,
9885             length = collection.length;
9886
9887         while (++index < length) {
9888           var value = collection[index];
9889           setter(result, value, iteratee(value, index, collection), collection);
9890         }
9891       } else {
9892         baseEach(collection, function(value, key, collection) {
9893           setter(result, value, iteratee(value, key, collection), collection);
9894         });
9895       }
9896       return result;
9897     };
9898   }
9899
9900   /**
9901    * Creates a function that assigns properties of source object(s) to a given
9902    * destination object.
9903    *
9904    * **Note:** This function is used to create `_.assign`, `_.defaults`, and `_.merge`.
9905    *
9906    * @private
9907    * @param {Function} assigner The function to assign values.
9908    * @returns {Function} Returns the new assigner function.
9909    */
9910   function createAssigner(assigner) {
9911     return restParam(function(object, sources) {
9912       var index = -1,
9913           length = object == null ? 0 : sources.length,
9914           customizer = length > 2 ? sources[length - 2] : undefined,
9915           guard = length > 2 ? sources[2] : undefined,
9916           thisArg = length > 1 ? sources[length - 1] : undefined;
9917
9918       if (typeof customizer == 'function') {
9919         customizer = bindCallback(customizer, thisArg, 5);
9920         length -= 2;
9921       } else {
9922         customizer = typeof thisArg == 'function' ? thisArg : undefined;
9923         length -= (customizer ? 1 : 0);
9924       }
9925       if (guard && isIterateeCall(sources[0], sources[1], guard)) {
9926         customizer = length < 3 ? undefined : customizer;
9927         length = 1;
9928       }
9929       while (++index < length) {
9930         var source = sources[index];
9931         if (source) {
9932           assigner(object, source, customizer);
9933         }
9934       }
9935       return object;
9936     });
9937   }
9938
9939   /**
9940    * Creates a `baseEach` or `baseEachRight` function.
9941    *
9942    * @private
9943    * @param {Function} eachFunc The function to iterate over a collection.
9944    * @param {boolean} [fromRight] Specify iterating from right to left.
9945    * @returns {Function} Returns the new base function.
9946    */
9947   function createBaseEach(eachFunc, fromRight) {
9948     return function(collection, iteratee) {
9949       var length = collection ? getLength(collection) : 0;
9950       if (!isLength(length)) {
9951         return eachFunc(collection, iteratee);
9952       }
9953       var index = fromRight ? length : -1,
9954           iterable = toObject(collection);
9955
9956       while ((fromRight ? index-- : ++index < length)) {
9957         if (iteratee(iterable[index], index, iterable) === false) {
9958           break;
9959         }
9960       }
9961       return collection;
9962     };
9963   }
9964
9965   /**
9966    * Creates a base function for `_.forIn` or `_.forInRight`.
9967    *
9968    * @private
9969    * @param {boolean} [fromRight] Specify iterating from right to left.
9970    * @returns {Function} Returns the new base function.
9971    */
9972   function createBaseFor(fromRight) {
9973     return function(object, iteratee, keysFunc) {
9974       var iterable = toObject(object),
9975           props = keysFunc(object),
9976           length = props.length,
9977           index = fromRight ? length : -1;
9978
9979       while ((fromRight ? index-- : ++index < length)) {
9980         var key = props[index];
9981         if (iteratee(iterable[key], key, iterable) === false) {
9982           break;
9983         }
9984       }
9985       return object;
9986     };
9987   }
9988
9989   /**
9990    * Creates a function that wraps `func` and invokes it with the `this`
9991    * binding of `thisArg`.
9992    *
9993    * @private
9994    * @param {Function} func The function to bind.
9995    * @param {*} [thisArg] The `this` binding of `func`.
9996    * @returns {Function} Returns the new bound function.
9997    */
9998   function createBindWrapper(func, thisArg) {
9999     var Ctor = createCtorWrapper(func);
10000
10001     function wrapper() {
10002       var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10003       return fn.apply(thisArg, arguments);
10004     }
10005     return wrapper;
10006   }
10007
10008   /**
10009    * Creates a `Set` cache object to optimize linear searches of large arrays.
10010    *
10011    * @private
10012    * @param {Array} [values] The values to cache.
10013    * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`.
10014    */
10015   var createCache = !(nativeCreate && Set) ? constant(null) : function(values) {
10016     return new SetCache(values);
10017   };
10018
10019   /**
10020    * Creates a function that produces an instance of `Ctor` regardless of
10021    * whether it was invoked as part of a `new` expression or by `call` or `apply`.
10022    *
10023    * @private
10024    * @param {Function} Ctor The constructor to wrap.
10025    * @returns {Function} Returns the new wrapped function.
10026    */
10027   function createCtorWrapper(Ctor) {
10028     return function() {
10029       // Use a `switch` statement to work with class constructors.
10030       // See https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-call-thisargument-argumentslist
10031       // for more details.
10032       var args = arguments;
10033       switch (args.length) {
10034         case 0: return new Ctor;
10035         case 1: return new Ctor(args[0]);
10036         case 2: return new Ctor(args[0], args[1]);
10037         case 3: return new Ctor(args[0], args[1], args[2]);
10038         case 4: return new Ctor(args[0], args[1], args[2], args[3]);
10039         case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
10040       }
10041       var thisBinding = baseCreate(Ctor.prototype),
10042           result = Ctor.apply(thisBinding, args);
10043
10044       // Mimic the constructor's `return` behavior.
10045       // See https://es5.github.io/#x13.2.2 for more details.
10046       return isObject(result) ? result : thisBinding;
10047     };
10048   }
10049
10050   /**
10051    * Creates a `_.find` or `_.findLast` function.
10052    *
10053    * @private
10054    * @param {Function} eachFunc The function to iterate over a collection.
10055    * @param {boolean} [fromRight] Specify iterating from right to left.
10056    * @returns {Function} Returns the new find function.
10057    */
10058   function createFind(eachFunc, fromRight) {
10059     return function(collection, predicate, thisArg) {
10060       predicate = getCallback(predicate, thisArg, 3);
10061       if (isArray(collection)) {
10062         var index = baseFindIndex(collection, predicate, fromRight);
10063         return index > -1 ? collection[index] : undefined;
10064       }
10065       return baseFind(collection, predicate, eachFunc);
10066     };
10067   }
10068
10069   /**
10070    * Creates a function for `_.forEach` or `_.forEachRight`.
10071    *
10072    * @private
10073    * @param {Function} arrayFunc The function to iterate over an array.
10074    * @param {Function} eachFunc The function to iterate over a collection.
10075    * @returns {Function} Returns the new each function.
10076    */
10077   function createForEach(arrayFunc, eachFunc) {
10078     return function(collection, iteratee, thisArg) {
10079       return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
10080         ? arrayFunc(collection, iteratee)
10081         : eachFunc(collection, bindCallback(iteratee, thisArg, 3));
10082     };
10083   }
10084
10085   /**
10086    * Creates a function for `_.forOwn` or `_.forOwnRight`.
10087    *
10088    * @private
10089    * @param {Function} objectFunc The function to iterate over an object.
10090    * @returns {Function} Returns the new each function.
10091    */
10092   function createForOwn(objectFunc) {
10093     return function(object, iteratee, thisArg) {
10094       if (typeof iteratee != 'function' || thisArg !== undefined) {
10095         iteratee = bindCallback(iteratee, thisArg, 3);
10096       }
10097       return objectFunc(object, iteratee);
10098     };
10099   }
10100
10101   /**
10102    * Creates a function for `_.reduce` or `_.reduceRight`.
10103    *
10104    * @private
10105    * @param {Function} arrayFunc The function to iterate over an array.
10106    * @param {Function} eachFunc The function to iterate over a collection.
10107    * @returns {Function} Returns the new each function.
10108    */
10109   function createReduce(arrayFunc, eachFunc) {
10110     return function(collection, iteratee, accumulator, thisArg) {
10111       var initFromArray = arguments.length < 3;
10112       return (typeof iteratee == 'function' && thisArg === undefined && isArray(collection))
10113         ? arrayFunc(collection, iteratee, accumulator, initFromArray)
10114         : baseReduce(collection, getCallback(iteratee, thisArg, 4), accumulator, initFromArray, eachFunc);
10115     };
10116   }
10117
10118   /**
10119    * Creates a function that wraps `func` and invokes it with optional `this`
10120    * binding of, partial application, and currying.
10121    *
10122    * @private
10123    * @param {Function|string} func The function or method name to reference.
10124    * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
10125    * @param {*} [thisArg] The `this` binding of `func`.
10126    * @param {Array} [partials] The arguments to prepend to those provided to the new function.
10127    * @param {Array} [holders] The `partials` placeholder indexes.
10128    * @param {Array} [partialsRight] The arguments to append to those provided to the new function.
10129    * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
10130    * @param {Array} [argPos] The argument positions of the new function.
10131    * @param {number} [ary] The arity cap of `func`.
10132    * @param {number} [arity] The arity of `func`.
10133    * @returns {Function} Returns the new wrapped function.
10134    */
10135   function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
10136     var isAry = bitmask & ARY_FLAG,
10137         isBind = bitmask & BIND_FLAG,
10138         isBindKey = bitmask & BIND_KEY_FLAG,
10139         isCurry = bitmask & CURRY_FLAG,
10140         isCurryBound = bitmask & CURRY_BOUND_FLAG,
10141         isCurryRight = bitmask & CURRY_RIGHT_FLAG,
10142         Ctor = isBindKey ? null : createCtorWrapper(func);
10143
10144     function wrapper() {
10145       // Avoid `arguments` object use disqualifying optimizations by
10146       // converting it to an array before providing it to other functions.
10147       var length = arguments.length,
10148           index = length,
10149           args = Array(length);
10150
10151       while (index--) {
10152         args[index] = arguments[index];
10153       }
10154       if (partials) {
10155         args = composeArgs(args, partials, holders);
10156       }
10157       if (partialsRight) {
10158         args = composeArgsRight(args, partialsRight, holdersRight);
10159       }
10160       if (isCurry || isCurryRight) {
10161         var placeholder = wrapper.placeholder,
10162             argsHolders = replaceHolders(args, placeholder);
10163
10164         length -= argsHolders.length;
10165         if (length < arity) {
10166           var newArgPos = argPos ? arrayCopy(argPos) : null,
10167               newArity = nativeMax(arity - length, 0),
10168               newsHolders = isCurry ? argsHolders : null,
10169               newHoldersRight = isCurry ? null : argsHolders,
10170               newPartials = isCurry ? args : null,
10171               newPartialsRight = isCurry ? null : args;
10172
10173           bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG);
10174           bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG);
10175
10176           if (!isCurryBound) {
10177             bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG);
10178           }
10179           var newData = [func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity],
10180               result = createHybridWrapper.apply(undefined, newData);
10181
10182           if (isLaziable(func)) {
10183             setData(result, newData);
10184           }
10185           result.placeholder = placeholder;
10186           return result;
10187         }
10188       }
10189       var thisBinding = isBind ? thisArg : this,
10190           fn = isBindKey ? thisBinding[func] : func;
10191
10192       if (argPos) {
10193         args = reorder(args, argPos);
10194       }
10195       if (isAry && ary < args.length) {
10196         args.length = ary;
10197       }
10198       if (this && this !== root && this instanceof wrapper) {
10199         fn = Ctor || createCtorWrapper(func);
10200       }
10201       return fn.apply(thisBinding, args);
10202     }
10203     return wrapper;
10204   }
10205
10206   /**
10207    * Creates a function that wraps `func` and invokes it with the optional `this`
10208    * binding of `thisArg` and the `partials` prepended to those provided to
10209    * the wrapper.
10210    *
10211    * @private
10212    * @param {Function} func The function to partially apply arguments to.
10213    * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details.
10214    * @param {*} thisArg The `this` binding of `func`.
10215    * @param {Array} partials The arguments to prepend to those provided to the new function.
10216    * @returns {Function} Returns the new bound function.
10217    */
10218   function createPartialWrapper(func, bitmask, thisArg, partials) {
10219     var isBind = bitmask & BIND_FLAG,
10220         Ctor = createCtorWrapper(func);
10221
10222     function wrapper() {
10223       // Avoid `arguments` object use disqualifying optimizations by
10224       // converting it to an array before providing it `func`.
10225       var argsIndex = -1,
10226           argsLength = arguments.length,
10227           leftIndex = -1,
10228           leftLength = partials.length,
10229           args = Array(argsLength + leftLength);
10230
10231       while (++leftIndex < leftLength) {
10232         args[leftIndex] = partials[leftIndex];
10233       }
10234       while (argsLength--) {
10235         args[leftIndex++] = arguments[++argsIndex];
10236       }
10237       var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
10238       return fn.apply(isBind ? thisArg : this, args);
10239     }
10240     return wrapper;
10241   }
10242
10243   /**
10244    * Creates a function that either curries or invokes `func` with optional
10245    * `this` binding and partially applied arguments.
10246    *
10247    * @private
10248    * @param {Function|string} func The function or method name to reference.
10249    * @param {number} bitmask The bitmask of flags.
10250    *  The bitmask may be composed of the following flags:
10251    *     1 - `_.bind`
10252    *     2 - `_.bindKey`
10253    *     4 - `_.curry` or `_.curryRight` of a bound function
10254    *     8 - `_.curry`
10255    *    16 - `_.curryRight`
10256    *    32 - `_.partial`
10257    *    64 - `_.partialRight`
10258    *   128 - `_.rearg`
10259    *   256 - `_.ary`
10260    * @param {*} [thisArg] The `this` binding of `func`.
10261    * @param {Array} [partials] The arguments to be partially applied.
10262    * @param {Array} [holders] The `partials` placeholder indexes.
10263    * @param {Array} [argPos] The argument positions of the new function.
10264    * @param {number} [ary] The arity cap of `func`.
10265    * @param {number} [arity] The arity of `func`.
10266    * @returns {Function} Returns the new wrapped function.
10267    */
10268   function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
10269     var isBindKey = bitmask & BIND_KEY_FLAG;
10270     if (!isBindKey && typeof func != 'function') {
10271       throw new TypeError(FUNC_ERROR_TEXT);
10272     }
10273     var length = partials ? partials.length : 0;
10274     if (!length) {
10275       bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG);
10276       partials = holders = null;
10277     }
10278     length -= (holders ? holders.length : 0);
10279     if (bitmask & PARTIAL_RIGHT_FLAG) {
10280       var partialsRight = partials,
10281           holdersRight = holders;
10282
10283       partials = holders = null;
10284     }
10285     var data = isBindKey ? null : getData(func),
10286         newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];
10287
10288     if (data) {
10289       mergeData(newData, data);
10290       bitmask = newData[1];
10291       arity = newData[9];
10292     }
10293     newData[9] = arity == null
10294       ? (isBindKey ? 0 : func.length)
10295       : (nativeMax(arity - length, 0) || 0);
10296
10297     if (bitmask == BIND_FLAG) {
10298       var result = createBindWrapper(newData[0], newData[2]);
10299     } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {
10300       result = createPartialWrapper.apply(undefined, newData);
10301     } else {
10302       result = createHybridWrapper.apply(undefined, newData);
10303     }
10304     var setter = data ? baseSetData : setData;
10305     return setter(result, newData);
10306   }
10307
10308   /**
10309    * A specialized version of `baseIsEqualDeep` for arrays with support for
10310    * partial deep comparisons.
10311    *
10312    * @private
10313    * @param {Array} array The array to compare.
10314    * @param {Array} other The other array to compare.
10315    * @param {Function} equalFunc The function to determine equivalents of values.
10316    * @param {Function} [customizer] The function to customize comparing arrays.
10317    * @param {boolean} [isLoose] Specify performing partial comparisons.
10318    * @param {Array} [stackA] Tracks traversed `value` objects.
10319    * @param {Array} [stackB] Tracks traversed `other` objects.
10320    * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
10321    */
10322   function equalArrays(array, other, equalFunc, customizer, isLoose, stackA, stackB) {
10323     var index = -1,
10324         arrLength = array.length,
10325         othLength = other.length;
10326
10327     if (arrLength != othLength && !(isLoose && othLength > arrLength)) {
10328       return false;
10329     }
10330     // Ignore non-index properties.
10331     while (++index < arrLength) {
10332       var arrValue = array[index],
10333           othValue = other[index],
10334           result = customizer ? customizer(isLoose ? othValue : arrValue, isLoose ? arrValue : othValue, index) : undefined;
10335
10336       if (result !== undefined) {
10337         if (result) {
10338           continue;
10339         }
10340         return false;
10341       }
10342       // Recursively compare arrays (susceptible to call stack limits).
10343       if (isLoose) {
10344         if (!arraySome(other, function(othValue) {
10345               return arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB);
10346             })) {
10347           return false;
10348         }
10349       } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, isLoose, stackA, stackB))) {
10350         return false;
10351       }
10352     }
10353     return true;
10354   }
10355
10356   /**
10357    * A specialized version of `baseIsEqualDeep` for comparing objects of
10358    * the same `toStringTag`.
10359    *
10360    * **Note:** This function only supports comparing values with tags of
10361    * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10362    *
10363    * @private
10364    * @param {Object} value The object to compare.
10365    * @param {Object} other The other object to compare.
10366    * @param {string} tag The `toStringTag` of the objects to compare.
10367    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10368    */
10369   function equalByTag(object, other, tag) {
10370     switch (tag) {
10371       case boolTag:
10372       case dateTag:
10373         // Coerce dates and booleans to numbers, dates to milliseconds and booleans
10374         // to `1` or `0` treating invalid dates coerced to `NaN` as not equal.
10375         return +object == +other;
10376
10377       case errorTag:
10378         return object.name == other.name && object.message == other.message;
10379
10380       case numberTag:
10381         // Treat `NaN` vs. `NaN` as equal.
10382         return (object != +object)
10383           ? other != +other
10384           : object == +other;
10385
10386       case regexpTag:
10387       case stringTag:
10388         // Coerce regexes to strings and treat strings primitives and string
10389         // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
10390         return object == (other + '');
10391     }
10392     return false;
10393   }
10394
10395   /**
10396    * A specialized version of `baseIsEqualDeep` for objects with support for
10397    * partial deep comparisons.
10398    *
10399    * @private
10400    * @param {Object} object The object to compare.
10401    * @param {Object} other The other object to compare.
10402    * @param {Function} equalFunc The function to determine equivalents of values.
10403    * @param {Function} [customizer] The function to customize comparing values.
10404    * @param {boolean} [isLoose] Specify performing partial comparisons.
10405    * @param {Array} [stackA] Tracks traversed `value` objects.
10406    * @param {Array} [stackB] Tracks traversed `other` objects.
10407    * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10408    */
10409   function equalObjects(object, other, equalFunc, customizer, isLoose, stackA, stackB) {
10410     var objProps = keys(object),
10411         objLength = objProps.length,
10412         othProps = keys(other),
10413         othLength = othProps.length;
10414
10415     if (objLength != othLength && !isLoose) {
10416       return false;
10417     }
10418     var index = objLength;
10419     while (index--) {
10420       var key = objProps[index];
10421       if (!(isLoose ? key in other : hasOwnProperty.call(other, key))) {
10422         return false;
10423       }
10424     }
10425     var skipCtor = isLoose;
10426     while (++index < objLength) {
10427       key = objProps[index];
10428       var objValue = object[key],
10429           othValue = other[key],
10430           result = customizer ? customizer(isLoose ? othValue : objValue, isLoose? objValue : othValue, key) : undefined;
10431
10432       // Recursively compare objects (susceptible to call stack limits).
10433       if (!(result === undefined ? equalFunc(objValue, othValue, customizer, isLoose, stackA, stackB) : result)) {
10434         return false;
10435       }
10436       skipCtor || (skipCtor = key == 'constructor');
10437     }
10438     if (!skipCtor) {
10439       var objCtor = object.constructor,
10440           othCtor = other.constructor;
10441
10442       // Non `Object` object instances with different constructors are not equal.
10443       if (objCtor != othCtor &&
10444           ('constructor' in object && 'constructor' in other) &&
10445           !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
10446             typeof othCtor == 'function' && othCtor instanceof othCtor)) {
10447         return false;
10448       }
10449     }
10450     return true;
10451   }
10452
10453   /**
10454    * Gets the appropriate "callback" function. If the `_.callback` method is
10455    * customized this function returns the custom method, otherwise it returns
10456    * the `baseCallback` function. If arguments are provided the chosen function
10457    * is invoked with them and its result is returned.
10458    *
10459    * @private
10460    * @returns {Function} Returns the chosen function or its result.
10461    */
10462   function getCallback(func, thisArg, argCount) {
10463     var result = lodash.callback || callback;
10464     result = result === callback ? baseCallback : result;
10465     return argCount ? result(func, thisArg, argCount) : result;
10466   }
10467
10468   /**
10469    * Gets metadata for `func`.
10470    *
10471    * @private
10472    * @param {Function} func The function to query.
10473    * @returns {*} Returns the metadata for `func`.
10474    */
10475   var getData = !metaMap ? noop : function(func) {
10476     return metaMap.get(func);
10477   };
10478
10479   /**
10480    * Gets the name of `func`.
10481    *
10482    * @private
10483    * @param {Function} func The function to query.
10484    * @returns {string} Returns the function name.
10485    */
10486   function getFuncName(func) {
10487     var result = func.name,
10488         array = realNames[result],
10489         length = array ? array.length : 0;
10490
10491     while (length--) {
10492       var data = array[length],
10493           otherFunc = data.func;
10494       if (otherFunc == null || otherFunc == func) {
10495         return data.name;
10496       }
10497     }
10498     return result;
10499   }
10500
10501   /**
10502    * Gets the appropriate "indexOf" function. If the `_.indexOf` method is
10503    * customized this function returns the custom method, otherwise it returns
10504    * the `baseIndexOf` function. If arguments are provided the chosen function
10505    * is invoked with them and its result is returned.
10506    *
10507    * @private
10508    * @returns {Function|number} Returns the chosen function or its result.
10509    */
10510   function getIndexOf(collection, target, fromIndex) {
10511     var result = lodash.indexOf || indexOf;
10512     result = result === indexOf ? baseIndexOf : result;
10513     return collection ? result(collection, target, fromIndex) : result;
10514   }
10515
10516   /**
10517    * Gets the "length" property value of `object`.
10518    *
10519    * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
10520    * that affects Safari on at least iOS 8.1-8.3 ARM64.
10521    *
10522    * @private
10523    * @param {Object} object The object to query.
10524    * @returns {*} Returns the "length" value.
10525    */
10526   var getLength = baseProperty('length');
10527
10528   /**
10529    * Gets the propery names, values, and compare flags of `object`.
10530    *
10531    * @private
10532    * @param {Object} object The object to query.
10533    * @returns {Array} Returns the match data of `object`.
10534    */
10535   function getMatchData(object) {
10536     var result = pairs(object),
10537         length = result.length;
10538
10539     while (length--) {
10540       result[length][2] = isStrictComparable(result[length][1]);
10541     }
10542     return result;
10543   }
10544
10545   /**
10546    * Gets the native function at `key` of `object`.
10547    *
10548    * @private
10549    * @param {Object} object The object to query.
10550    * @param {string} key The key of the method to get.
10551    * @returns {*} Returns the function if it's native, else `undefined`.
10552    */
10553   function getNative(object, key) {
10554     var value = object == null ? undefined : object[key];
10555     return isNative(value) ? value : undefined;
10556   }
10557
10558   /**
10559    * Gets the view, applying any `transforms` to the `start` and `end` positions.
10560    *
10561    * @private
10562    * @param {number} start The start of the view.
10563    * @param {number} end The end of the view.
10564    * @param {Array} [transforms] The transformations to apply to the view.
10565    * @returns {Object} Returns an object containing the `start` and `end`
10566    *  positions of the view.
10567    */
10568   function getView(start, end, transforms) {
10569     var index = -1,
10570         length = transforms ? transforms.length : 0;
10571
10572     while (++index < length) {
10573       var data = transforms[index],
10574           size = data.size;
10575
10576       switch (data.type) {
10577         case 'drop':      start += size; break;
10578         case 'dropRight': end -= size; break;
10579         case 'take':      end = nativeMin(end, start + size); break;
10580         case 'takeRight': start = nativeMax(start, end - size); break;
10581       }
10582     }
10583     return { 'start': start, 'end': end };
10584   }
10585
10586   /**
10587    * Initializes an array clone.
10588    *
10589    * @private
10590    * @param {Array} array The array to clone.
10591    * @returns {Array} Returns the initialized clone.
10592    */
10593   function initCloneArray(array) {
10594     var length = array.length,
10595         result = new array.constructor(length);
10596
10597     // Add array properties assigned by `RegExp#exec`.
10598     if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
10599       result.index = array.index;
10600       result.input = array.input;
10601     }
10602     return result;
10603   }
10604
10605   /**
10606    * Initializes an object clone.
10607    *
10608    * @private
10609    * @param {Object} object The object to clone.
10610    * @returns {Object} Returns the initialized clone.
10611    */
10612   function initCloneObject(object) {
10613     var Ctor = object.constructor;
10614     if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) {
10615       Ctor = Object;
10616     }
10617     return new Ctor;
10618   }
10619
10620   /**
10621    * Initializes an object clone based on its `toStringTag`.
10622    *
10623    * **Note:** This function only supports cloning values with tags of
10624    * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10625    *
10626    * @private
10627    * @param {Object} object The object to clone.
10628    * @param {string} tag The `toStringTag` of the object to clone.
10629    * @param {boolean} [isDeep] Specify a deep clone.
10630    * @returns {Object} Returns the initialized clone.
10631    */
10632   function initCloneByTag(object, tag, isDeep) {
10633     var Ctor = object.constructor;
10634     switch (tag) {
10635       case arrayBufferTag:
10636         return bufferClone(object);
10637
10638       case boolTag:
10639       case dateTag:
10640         return new Ctor(+object);
10641
10642       case float32Tag: case float64Tag:
10643       case int8Tag: case int16Tag: case int32Tag:
10644       case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
10645         // Safari 5 mobile incorrectly has `Object` as the constructor of typed arrays.
10646         if (Ctor instanceof Ctor) {
10647           Ctor = ctorByTag[tag];
10648         }
10649         var buffer = object.buffer;
10650         return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length);
10651
10652       case numberTag:
10653       case stringTag:
10654         return new Ctor(object);
10655
10656       case regexpTag:
10657         var result = new Ctor(object.source, reFlags.exec(object));
10658         result.lastIndex = object.lastIndex;
10659     }
10660     return result;
10661   }
10662
10663   /**
10664    * Checks if `value` is array-like.
10665    *
10666    * @private
10667    * @param {*} value The value to check.
10668    * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
10669    */
10670   function isArrayLike(value) {
10671     return value != null && isLength(getLength(value));
10672   }
10673
10674   /**
10675    * Checks if `value` is a valid array-like index.
10676    *
10677    * @private
10678    * @param {*} value The value to check.
10679    * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
10680    * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
10681    */
10682   function isIndex(value, length) {
10683     value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
10684     length = length == null ? MAX_SAFE_INTEGER : length;
10685     return value > -1 && value % 1 == 0 && value < length;
10686   }
10687
10688   /**
10689    * Checks if the provided arguments are from an iteratee call.
10690    *
10691    * @private
10692    * @param {*} value The potential iteratee value argument.
10693    * @param {*} index The potential iteratee index or key argument.
10694    * @param {*} object The potential iteratee object argument.
10695    * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
10696    */
10697   function isIterateeCall(value, index, object) {
10698     if (!isObject(object)) {
10699       return false;
10700     }
10701     var type = typeof index;
10702     if (type == 'number'
10703         ? (isArrayLike(object) && isIndex(index, object.length))
10704         : (type == 'string' && index in object)) {
10705       var other = object[index];
10706       return value === value ? (value === other) : (other !== other);
10707     }
10708     return false;
10709   }
10710
10711   /**
10712    * Checks if `value` is a property name and not a property path.
10713    *
10714    * @private
10715    * @param {*} value The value to check.
10716    * @param {Object} [object] The object to query keys on.
10717    * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
10718    */
10719   function isKey(value, object) {
10720     var type = typeof value;
10721     if ((type == 'string' && reIsPlainProp.test(value)) || type == 'number') {
10722       return true;
10723     }
10724     if (isArray(value)) {
10725       return false;
10726     }
10727     var result = !reIsDeepProp.test(value);
10728     return result || (object != null && value in toObject(object));
10729   }
10730
10731   /**
10732    * Checks if `func` has a lazy counterpart.
10733    *
10734    * @private
10735    * @param {Function} func The function to check.
10736    * @returns {boolean} Returns `true` if `func` has a lazy counterpart, else `false`.
10737    */
10738   function isLaziable(func) {
10739     var funcName = getFuncName(func);
10740     if (!(funcName in LazyWrapper.prototype)) {
10741       return false;
10742     }
10743     var other = lodash[funcName];
10744     if (func === other) {
10745       return true;
10746     }
10747     var data = getData(other);
10748     return !!data && func === data[0];
10749   }
10750
10751   /**
10752    * Checks if `value` is a valid array-like length.
10753    *
10754    * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
10755    *
10756    * @private
10757    * @param {*} value The value to check.
10758    * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
10759    */
10760   function isLength(value) {
10761     return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
10762   }
10763
10764   /**
10765    * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
10766    *
10767    * @private
10768    * @param {*} value The value to check.
10769    * @returns {boolean} Returns `true` if `value` if suitable for strict
10770    *  equality comparisons, else `false`.
10771    */
10772   function isStrictComparable(value) {
10773     return value === value && !isObject(value);
10774   }
10775
10776   /**
10777    * Merges the function metadata of `source` into `data`.
10778    *
10779    * Merging metadata reduces the number of wrappers required to invoke a function.
10780    * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
10781    * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg`
10782    * augment function arguments, making the order in which they are executed important,
10783    * preventing the merging of metadata. However, we make an exception for a safe
10784    * common case where curried functions have `_.ary` and or `_.rearg` applied.
10785    *
10786    * @private
10787    * @param {Array} data The destination metadata.
10788    * @param {Array} source The source metadata.
10789    * @returns {Array} Returns `data`.
10790    */
10791   function mergeData(data, source) {
10792     var bitmask = data[1],
10793         srcBitmask = source[1],
10794         newBitmask = bitmask | srcBitmask,
10795         isCommon = newBitmask < ARY_FLAG;
10796
10797     var isCombo =
10798       (srcBitmask == ARY_FLAG && bitmask == CURRY_FLAG) ||
10799       (srcBitmask == ARY_FLAG && bitmask == REARG_FLAG && data[7].length <= source[8]) ||
10800       (srcBitmask == (ARY_FLAG | REARG_FLAG) && bitmask == CURRY_FLAG);
10801
10802     // Exit early if metadata can't be merged.
10803     if (!(isCommon || isCombo)) {
10804       return data;
10805     }
10806     // Use source `thisArg` if available.
10807     if (srcBitmask & BIND_FLAG) {
10808       data[2] = source[2];
10809       // Set when currying a bound function.
10810       newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG;
10811     }
10812     // Compose partial arguments.
10813     var value = source[3];
10814     if (value) {
10815       var partials = data[3];
10816       data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value);
10817       data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]);
10818     }
10819     // Compose partial right arguments.
10820     value = source[5];
10821     if (value) {
10822       partials = data[5];
10823       data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value);
10824       data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]);
10825     }
10826     // Use source `argPos` if available.
10827     value = source[7];
10828     if (value) {
10829       data[7] = arrayCopy(value);
10830     }
10831     // Use source `ary` if it's smaller.
10832     if (srcBitmask & ARY_FLAG) {
10833       data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
10834     }
10835     // Use source `arity` if one is not provided.
10836     if (data[9] == null) {
10837       data[9] = source[9];
10838     }
10839     // Use source `func` and merge bitmasks.
10840     data[0] = source[0];
10841     data[1] = newBitmask;
10842
10843     return data;
10844   }
10845
10846   /**
10847    * A specialized version of `_.pick` which picks `object` properties specified
10848    * by `props`.
10849    *
10850    * @private
10851    * @param {Object} object The source object.
10852    * @param {string[]} props The property names to pick.
10853    * @returns {Object} Returns the new object.
10854    */
10855   function pickByArray(object, props) {
10856     object = toObject(object);
10857
10858     var index = -1,
10859         length = props.length,
10860         result = {};
10861
10862     while (++index < length) {
10863       var key = props[index];
10864       if (key in object) {
10865         result[key] = object[key];
10866       }
10867     }
10868     return result;
10869   }
10870
10871   /**
10872    * A specialized version of `_.pick` which picks `object` properties `predicate`
10873    * returns truthy for.
10874    *
10875    * @private
10876    * @param {Object} object The source object.
10877    * @param {Function} predicate The function invoked per iteration.
10878    * @returns {Object} Returns the new object.
10879    */
10880   function pickByCallback(object, predicate) {
10881     var result = {};
10882     baseForIn(object, function(value, key, object) {
10883       if (predicate(value, key, object)) {
10884         result[key] = value;
10885       }
10886     });
10887     return result;
10888   }
10889
10890   /**
10891    * Reorder `array` according to the specified indexes where the element at
10892    * the first index is assigned as the first element, the element at
10893    * the second index is assigned as the second element, and so on.
10894    *
10895    * @private
10896    * @param {Array} array The array to reorder.
10897    * @param {Array} indexes The arranged array indexes.
10898    * @returns {Array} Returns `array`.
10899    */
10900   function reorder(array, indexes) {
10901     var arrLength = array.length,
10902         length = nativeMin(indexes.length, arrLength),
10903         oldArray = arrayCopy(array);
10904
10905     while (length--) {
10906       var index = indexes[length];
10907       array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
10908     }
10909     return array;
10910   }
10911
10912   /**
10913    * Sets metadata for `func`.
10914    *
10915    * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
10916    * period of time, it will trip its breaker and transition to an identity function
10917    * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070)
10918    * for more details.
10919    *
10920    * @private
10921    * @param {Function} func The function to associate metadata with.
10922    * @param {*} data The metadata.
10923    * @returns {Function} Returns `func`.
10924    */
10925   var setData = (function() {
10926     var count = 0,
10927         lastCalled = 0;
10928
10929     return function(key, value) {
10930       var stamp = now(),
10931           remaining = HOT_SPAN - (stamp - lastCalled);
10932
10933       lastCalled = stamp;
10934       if (remaining > 0) {
10935         if (++count >= HOT_COUNT) {
10936           return key;
10937         }
10938       } else {
10939         count = 0;
10940       }
10941       return baseSetData(key, value);
10942     };
10943   }());
10944
10945   /**
10946    * A fallback implementation of `_.isPlainObject` which checks if `value`
10947    * is an object created by the `Object` constructor or has a `[[Prototype]]`
10948    * of `null`.
10949    *
10950    * @private
10951    * @param {*} value The value to check.
10952    * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
10953    */
10954   function shimIsPlainObject(value) {
10955     var Ctor,
10956         support = lodash.support;
10957
10958     // Exit early for non `Object` objects.
10959     if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value)) ||
10960         (!hasOwnProperty.call(value, 'constructor') &&
10961           (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor))) ||
10962         (!support.argsTag && isArguments(value))) {
10963       return false;
10964     }
10965     // IE < 9 iterates inherited properties before own properties. If the first
10966     // iterated property is an object's own property then there are no inherited
10967     // enumerable properties.
10968     var result;
10969     if (support.ownLast) {
10970       baseForIn(value, function(subValue, key, object) {
10971         result = hasOwnProperty.call(object, key);
10972         return false;
10973       });
10974       return result !== false;
10975     }
10976     // In most environments an object's own properties are iterated before
10977     // its inherited properties. If the last iterated property is an object's
10978     // own property then there are no inherited enumerable properties.
10979     baseForIn(value, function(subValue, key) {
10980       result = key;
10981     });
10982     return result === undefined || hasOwnProperty.call(value, result);
10983   }
10984
10985   /**
10986    * A fallback implementation of `Object.keys` which creates an array of the
10987    * own enumerable property names of `object`.
10988    *
10989    * @private
10990    * @param {Object} object The object to query.
10991    * @returns {Array} Returns the array of property names.
10992    */
10993   function shimKeys(object) {
10994     var props = keysIn(object),
10995         propsLength = props.length,
10996         length = propsLength && object.length;
10997
10998     var allowIndexes = !!length && isLength(length) &&
10999       (isArray(object) || isArguments(object) || isString(object));
11000
11001     var index = -1,
11002         result = [];
11003
11004     while (++index < propsLength) {
11005       var key = props[index];
11006       if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
11007         result.push(key);
11008       }
11009     }
11010     return result;
11011   }
11012
11013   /**
11014    * Converts `value` to an object if it's not one.
11015    *
11016    * @private
11017    * @param {*} value The value to process.
11018    * @returns {Object} Returns the object.
11019    */
11020   function toObject(value) {
11021     if (lodash.support.unindexedChars && isString(value)) {
11022       var index = -1,
11023           length = value.length,
11024           result = Object(value);
11025
11026       while (++index < length) {
11027         result[index] = value.charAt(index);
11028       }
11029       return result;
11030     }
11031     return isObject(value) ? value : Object(value);
11032   }
11033
11034   /**
11035    * Converts `value` to property path array if it's not one.
11036    *
11037    * @private
11038    * @param {*} value The value to process.
11039    * @returns {Array} Returns the property path array.
11040    */
11041   function toPath(value) {
11042     if (isArray(value)) {
11043       return value;
11044     }
11045     var result = [];
11046     baseToString(value).replace(rePropName, function(match, number, quote, string) {
11047       result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
11048     });
11049     return result;
11050   }
11051
11052   /**
11053    * Creates a clone of `wrapper`.
11054    *
11055    * @private
11056    * @param {Object} wrapper The wrapper to clone.
11057    * @returns {Object} Returns the cloned wrapper.
11058    */
11059   function wrapperClone(wrapper) {
11060     return wrapper instanceof LazyWrapper
11061       ? wrapper.clone()
11062       : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
11063   }
11064
11065   /*------------------------------------------------------------------------*/
11066
11067   /**
11068    * Creates an array of elements split into groups the length of `size`.
11069    * If `collection` can't be split evenly, the final chunk will be the remaining
11070    * elements.
11071    *
11072    * @static
11073    * @memberOf _
11074    * @category Array
11075    * @param {Array} array The array to process.
11076    * @param {number} [size=1] The length of each chunk.
11077    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
11078    * @returns {Array} Returns the new array containing chunks.
11079    * @example
11080    *
11081    * _.chunk(['a', 'b', 'c', 'd'], 2);
11082    * // => [['a', 'b'], ['c', 'd']]
11083    *
11084    * _.chunk(['a', 'b', 'c', 'd'], 3);
11085    * // => [['a', 'b', 'c'], ['d']]
11086    */
11087   function chunk(array, size, guard) {
11088     if (guard ? isIterateeCall(array, size, guard) : size == null) {
11089       size = 1;
11090     } else {
11091       size = nativeMax(+size || 1, 1);
11092     }
11093     var index = 0,
11094         length = array ? array.length : 0,
11095         resIndex = -1,
11096         result = Array(ceil(length / size));
11097
11098     while (index < length) {
11099       result[++resIndex] = baseSlice(array, index, (index += size));
11100     }
11101     return result;
11102   }
11103
11104   /**
11105    * Creates an array with all falsey values removed. The values `false`, `null`,
11106    * `0`, `""`, `undefined`, and `NaN` are falsey.
11107    *
11108    * @static
11109    * @memberOf _
11110    * @category Array
11111    * @param {Array} array The array to compact.
11112    * @returns {Array} Returns the new array of filtered values.
11113    * @example
11114    *
11115    * _.compact([0, 1, false, 2, '', 3]);
11116    * // => [1, 2, 3]
11117    */
11118   function compact(array) {
11119     var index = -1,
11120         length = array ? array.length : 0,
11121         resIndex = -1,
11122         result = [];
11123
11124     while (++index < length) {
11125       var value = array[index];
11126       if (value) {
11127         result[++resIndex] = value;
11128       }
11129     }
11130     return result;
11131   }
11132
11133   /**
11134    * Creates an array of unique `array` values not included in the other
11135    * provided arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11136    * for equality comparisons.
11137    *
11138    * @static
11139    * @memberOf _
11140    * @category Array
11141    * @param {Array} array The array to inspect.
11142    * @param {...Array} [values] The arrays of values to exclude.
11143    * @returns {Array} Returns the new array of filtered values.
11144    * @example
11145    *
11146    * _.difference([1, 2, 3], [4, 2]);
11147    * // => [1, 3]
11148    */
11149   var difference = restParam(function(array, values) {
11150     return isArrayLike(array)
11151       ? baseDifference(array, baseFlatten(values, false, true))
11152       : [];
11153   });
11154
11155   /**
11156    * Gets the first element of `array`.
11157    *
11158    * @static
11159    * @memberOf _
11160    * @alias head
11161    * @category Array
11162    * @param {Array} array The array to query.
11163    * @returns {*} Returns the first element of `array`.
11164    * @example
11165    *
11166    * _.first([1, 2, 3]);
11167    * // => 1
11168    *
11169    * _.first([]);
11170    * // => undefined
11171    */
11172   function first(array) {
11173     return array ? array[0] : undefined;
11174   }
11175
11176   /**
11177    * Flattens a nested array. If `isDeep` is `true` the array is recursively
11178    * flattened, otherwise it is only flattened a single level.
11179    *
11180    * @static
11181    * @memberOf _
11182    * @category Array
11183    * @param {Array} array The array to flatten.
11184    * @param {boolean} [isDeep] Specify a deep flatten.
11185    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
11186    * @returns {Array} Returns the new flattened array.
11187    * @example
11188    *
11189    * _.flatten([1, [2, 3, [4]]]);
11190    * // => [1, 2, 3, [4]]
11191    *
11192    * // using `isDeep`
11193    * _.flatten([1, [2, 3, [4]]], true);
11194    * // => [1, 2, 3, 4]
11195    */
11196   function flatten(array, isDeep, guard) {
11197     var length = array ? array.length : 0;
11198     if (guard && isIterateeCall(array, isDeep, guard)) {
11199       isDeep = false;
11200     }
11201     return length ? baseFlatten(array, isDeep) : [];
11202   }
11203
11204   /**
11205    * Gets the index at which the first occurrence of `value` is found in `array`
11206    * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11207    * for equality comparisons. If `fromIndex` is negative, it is used as the offset
11208    * from the end of `array`. If `array` is sorted providing `true` for `fromIndex`
11209    * performs a faster binary search.
11210    *
11211    * @static
11212    * @memberOf _
11213    * @category Array
11214    * @param {Array} array The array to search.
11215    * @param {*} value The value to search for.
11216    * @param {boolean|number} [fromIndex=0] The index to search from or `true`
11217    *  to perform a binary search on a sorted array.
11218    * @returns {number} Returns the index of the matched value, else `-1`.
11219    * @example
11220    *
11221    * _.indexOf([1, 2, 1, 2], 2);
11222    * // => 1
11223    *
11224    * // using `fromIndex`
11225    * _.indexOf([1, 2, 1, 2], 2, 2);
11226    * // => 3
11227    *
11228    * // performing a binary search
11229    * _.indexOf([1, 1, 2, 2], 2, true);
11230    * // => 2
11231    */
11232   function indexOf(array, value, fromIndex) {
11233     var length = array ? array.length : 0;
11234     if (!length) {
11235       return -1;
11236     }
11237     if (typeof fromIndex == 'number') {
11238       fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
11239     } else if (fromIndex) {
11240       var index = binaryIndex(array, value),
11241           other = array[index];
11242
11243       if (value === value ? (value === other) : (other !== other)) {
11244         return index;
11245       }
11246       return -1;
11247     }
11248     return baseIndexOf(array, value, fromIndex || 0);
11249   }
11250
11251   /**
11252    * Creates an array of unique values that are included in all of the provided
11253    * arrays using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11254    * for equality comparisons.
11255    *
11256    * @static
11257    * @memberOf _
11258    * @category Array
11259    * @param {...Array} [arrays] The arrays to inspect.
11260    * @returns {Array} Returns the new array of shared values.
11261    * @example
11262    * _.intersection([1, 2], [4, 2], [2, 1]);
11263    * // => [2]
11264    */
11265   var intersection = restParam(function(arrays) {
11266     var othLength = arrays.length,
11267         othIndex = othLength,
11268         caches = Array(length),
11269         indexOf = getIndexOf(),
11270         isCommon = indexOf == baseIndexOf,
11271         result = [];
11272
11273     while (othIndex--) {
11274       var value = arrays[othIndex] = isArrayLike(value = arrays[othIndex]) ? value : [];
11275       caches[othIndex] = (isCommon && value.length >= 120) ? createCache(othIndex && value) : null;
11276     }
11277     var array = arrays[0],
11278         index = -1,
11279         length = array ? array.length : 0,
11280         seen = caches[0];
11281
11282     outer:
11283     while (++index < length) {
11284       value = array[index];
11285       if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) {
11286         var othIndex = othLength;
11287         while (--othIndex) {
11288           var cache = caches[othIndex];
11289           if ((cache ? cacheIndexOf(cache, value) : indexOf(arrays[othIndex], value, 0)) < 0) {
11290             continue outer;
11291           }
11292         }
11293         if (seen) {
11294           seen.push(value);
11295         }
11296         result.push(value);
11297       }
11298     }
11299     return result;
11300   });
11301
11302   /**
11303    * Gets the last element of `array`.
11304    *
11305    * @static
11306    * @memberOf _
11307    * @category Array
11308    * @param {Array} array The array to query.
11309    * @returns {*} Returns the last element of `array`.
11310    * @example
11311    *
11312    * _.last([1, 2, 3]);
11313    * // => 3
11314    */
11315   function last(array) {
11316     var length = array ? array.length : 0;
11317     return length ? array[length - 1] : undefined;
11318   }
11319
11320   /**
11321    * Creates an array of unique values, in order, from all of the provided arrays
11322    * using [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11323    * for equality comparisons.
11324    *
11325    * @static
11326    * @memberOf _
11327    * @category Array
11328    * @param {...Array} [arrays] The arrays to inspect.
11329    * @returns {Array} Returns the new array of combined values.
11330    * @example
11331    *
11332    * _.union([1, 2], [4, 2], [2, 1]);
11333    * // => [1, 2, 4]
11334    */
11335   var union = restParam(function(arrays) {
11336     return baseUniq(baseFlatten(arrays, false, true));
11337   });
11338
11339   /**
11340    * Creates a duplicate-free version of an array, using
11341    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11342    * for equality comparisons, in which only the first occurence of each element
11343    * is kept. Providing `true` for `isSorted` performs a faster search algorithm
11344    * for sorted arrays. If an iteratee function is provided it is invoked for
11345    * each element in the array to generate the criterion by which uniqueness
11346    * is computed. The `iteratee` is bound to `thisArg` and invoked with three
11347    * arguments: (value, index, array).
11348    *
11349    * If a property name is provided for `iteratee` the created `_.property`
11350    * style callback returns the property value of the given element.
11351    *
11352    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11353    * style callback returns `true` for elements that have a matching property
11354    * value, else `false`.
11355    *
11356    * If an object is provided for `iteratee` the created `_.matches` style
11357    * callback returns `true` for elements that have the properties of the given
11358    * object, else `false`.
11359    *
11360    * @static
11361    * @memberOf _
11362    * @alias unique
11363    * @category Array
11364    * @param {Array} array The array to inspect.
11365    * @param {boolean} [isSorted] Specify the array is sorted.
11366    * @param {Function|Object|string} [iteratee] The function invoked per iteration.
11367    * @param {*} [thisArg] The `this` binding of `iteratee`.
11368    * @returns {Array} Returns the new duplicate-value-free array.
11369    * @example
11370    *
11371    * _.uniq([2, 1, 2]);
11372    * // => [2, 1]
11373    *
11374    * // using `isSorted`
11375    * _.uniq([1, 1, 2], true);
11376    * // => [1, 2]
11377    *
11378    * // using an iteratee function
11379    * _.uniq([1, 2.5, 1.5, 2], function(n) {
11380    *   return this.floor(n);
11381    * }, Math);
11382    * // => [1, 2.5]
11383    *
11384    * // using the `_.property` callback shorthand
11385    * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
11386    * // => [{ 'x': 1 }, { 'x': 2 }]
11387    */
11388   function uniq(array, isSorted, iteratee, thisArg) {
11389     var length = array ? array.length : 0;
11390     if (!length) {
11391       return [];
11392     }
11393     if (isSorted != null && typeof isSorted != 'boolean') {
11394       thisArg = iteratee;
11395       iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted;
11396       isSorted = false;
11397     }
11398     var callback = getCallback();
11399     if (!(iteratee == null && callback === baseCallback)) {
11400       iteratee = callback(iteratee, thisArg, 3);
11401     }
11402     return (isSorted && getIndexOf() == baseIndexOf)
11403       ? sortedUniq(array, iteratee)
11404       : baseUniq(array, iteratee);
11405   }
11406
11407   /**
11408    * Creates an array excluding all provided values using
11409    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11410    * for equality comparisons.
11411    *
11412    * @static
11413    * @memberOf _
11414    * @category Array
11415    * @param {Array} array The array to filter.
11416    * @param {...*} [values] The values to exclude.
11417    * @returns {Array} Returns the new array of filtered values.
11418    * @example
11419    *
11420    * _.without([1, 2, 1, 3], 1, 2);
11421    * // => [3]
11422    */
11423   var without = restParam(function(array, values) {
11424     return isArrayLike(array)
11425       ? baseDifference(array, values)
11426       : [];
11427   });
11428
11429   /*------------------------------------------------------------------------*/
11430
11431   /**
11432    * Creates a `lodash` object that wraps `value` with explicit method
11433    * chaining enabled.
11434    *
11435    * @static
11436    * @memberOf _
11437    * @category Chain
11438    * @param {*} value The value to wrap.
11439    * @returns {Object} Returns the new `lodash` wrapper instance.
11440    * @example
11441    *
11442    * var users = [
11443    *   { 'user': 'barney',  'age': 36 },
11444    *   { 'user': 'fred',    'age': 40 },
11445    *   { 'user': 'pebbles', 'age': 1 }
11446    * ];
11447    *
11448    * var youngest = _.chain(users)
11449    *   .sortBy('age')
11450    *   .map(function(chr) {
11451    *     return chr.user + ' is ' + chr.age;
11452    *   })
11453    *   .first()
11454    *   .value();
11455    * // => 'pebbles is 1'
11456    */
11457   function chain(value) {
11458     var result = lodash(value);
11459     result.__chain__ = true;
11460     return result;
11461   }
11462
11463   /**
11464    * This method invokes `interceptor` and returns `value`. The interceptor is
11465    * bound to `thisArg` and invoked with one argument; (value). The purpose of
11466    * this method is to "tap into" a method chain in order to perform operations
11467    * on intermediate results within the chain.
11468    *
11469    * @static
11470    * @memberOf _
11471    * @category Chain
11472    * @param {*} value The value to provide to `interceptor`.
11473    * @param {Function} interceptor The function to invoke.
11474    * @param {*} [thisArg] The `this` binding of `interceptor`.
11475    * @returns {*} Returns `value`.
11476    * @example
11477    *
11478    * _([1, 2, 3])
11479    *  .tap(function(array) {
11480    *    array.pop();
11481    *  })
11482    *  .reverse()
11483    *  .value();
11484    * // => [2, 1]
11485    */
11486   function tap(value, interceptor, thisArg) {
11487     interceptor.call(thisArg, value);
11488     return value;
11489   }
11490
11491   /**
11492    * This method is like `_.tap` except that it returns the result of `interceptor`.
11493    *
11494    * @static
11495    * @memberOf _
11496    * @category Chain
11497    * @param {*} value The value to provide to `interceptor`.
11498    * @param {Function} interceptor The function to invoke.
11499    * @param {*} [thisArg] The `this` binding of `interceptor`.
11500    * @returns {*} Returns the result of `interceptor`.
11501    * @example
11502    *
11503    * _('  abc  ')
11504    *  .chain()
11505    *  .trim()
11506    *  .thru(function(value) {
11507    *    return [value];
11508    *  })
11509    *  .value();
11510    * // => ['abc']
11511    */
11512   function thru(value, interceptor, thisArg) {
11513     return interceptor.call(thisArg, value);
11514   }
11515
11516   /**
11517    * Enables explicit method chaining on the wrapper object.
11518    *
11519    * @name chain
11520    * @memberOf _
11521    * @category Chain
11522    * @returns {Object} Returns the new `lodash` wrapper instance.
11523    * @example
11524    *
11525    * var users = [
11526    *   { 'user': 'barney', 'age': 36 },
11527    *   { 'user': 'fred',   'age': 40 }
11528    * ];
11529    *
11530    * // without explicit chaining
11531    * _(users).first();
11532    * // => { 'user': 'barney', 'age': 36 }
11533    *
11534    * // with explicit chaining
11535    * _(users).chain()
11536    *   .first()
11537    *   .pick('user')
11538    *   .value();
11539    * // => { 'user': 'barney' }
11540    */
11541   function wrapperChain() {
11542     return chain(this);
11543   }
11544
11545   /**
11546    * Executes the chained sequence and returns the wrapped result.
11547    *
11548    * @name commit
11549    * @memberOf _
11550    * @category Chain
11551    * @returns {Object} Returns the new `lodash` wrapper instance.
11552    * @example
11553    *
11554    * var array = [1, 2];
11555    * var wrapper = _(array).push(3);
11556    *
11557    * console.log(array);
11558    * // => [1, 2]
11559    *
11560    * wrapper = wrapper.commit();
11561    * console.log(array);
11562    * // => [1, 2, 3]
11563    *
11564    * wrapper.last();
11565    * // => 3
11566    *
11567    * console.log(array);
11568    * // => [1, 2, 3]
11569    */
11570   function wrapperCommit() {
11571     return new LodashWrapper(this.value(), this.__chain__);
11572   }
11573
11574   /**
11575    * Creates a clone of the chained sequence planting `value` as the wrapped value.
11576    *
11577    * @name plant
11578    * @memberOf _
11579    * @category Chain
11580    * @returns {Object} Returns the new `lodash` wrapper instance.
11581    * @example
11582    *
11583    * var array = [1, 2];
11584    * var wrapper = _(array).map(function(value) {
11585    *   return Math.pow(value, 2);
11586    * });
11587    *
11588    * var other = [3, 4];
11589    * var otherWrapper = wrapper.plant(other);
11590    *
11591    * otherWrapper.value();
11592    * // => [9, 16]
11593    *
11594    * wrapper.value();
11595    * // => [1, 4]
11596    */
11597   function wrapperPlant(value) {
11598     var result,
11599         parent = this;
11600
11601     while (parent instanceof baseLodash) {
11602       var clone = wrapperClone(parent);
11603       if (result) {
11604         previous.__wrapped__ = clone;
11605       } else {
11606         result = clone;
11607       }
11608       var previous = clone;
11609       parent = parent.__wrapped__;
11610     }
11611     previous.__wrapped__ = value;
11612     return result;
11613   }
11614
11615   /**
11616    * Reverses the wrapped array so the first element becomes the last, the
11617    * second element becomes the second to last, and so on.
11618    *
11619    * **Note:** This method mutates the wrapped array.
11620    *
11621    * @name reverse
11622    * @memberOf _
11623    * @category Chain
11624    * @returns {Object} Returns the new reversed `lodash` wrapper instance.
11625    * @example
11626    *
11627    * var array = [1, 2, 3];
11628    *
11629    * _(array).reverse().value()
11630    * // => [3, 2, 1]
11631    *
11632    * console.log(array);
11633    * // => [3, 2, 1]
11634    */
11635   function wrapperReverse() {
11636     var value = this.__wrapped__;
11637     if (value instanceof LazyWrapper) {
11638       if (this.__actions__.length) {
11639         value = new LazyWrapper(this);
11640       }
11641       return new LodashWrapper(value.reverse(), this.__chain__);
11642     }
11643     return this.thru(function(value) {
11644       return value.reverse();
11645     });
11646   }
11647
11648   /**
11649    * Produces the result of coercing the unwrapped value to a string.
11650    *
11651    * @name toString
11652    * @memberOf _
11653    * @category Chain
11654    * @returns {string} Returns the coerced string value.
11655    * @example
11656    *
11657    * _([1, 2, 3]).toString();
11658    * // => '1,2,3'
11659    */
11660   function wrapperToString() {
11661     return (this.value() + '');
11662   }
11663
11664   /**
11665    * Executes the chained sequence to extract the unwrapped value.
11666    *
11667    * @name value
11668    * @memberOf _
11669    * @alias run, toJSON, valueOf
11670    * @category Chain
11671    * @returns {*} Returns the resolved unwrapped value.
11672    * @example
11673    *
11674    * _([1, 2, 3]).value();
11675    * // => [1, 2, 3]
11676    */
11677   function wrapperValue() {
11678     return baseWrapperValue(this.__wrapped__, this.__actions__);
11679   }
11680
11681   /*------------------------------------------------------------------------*/
11682
11683   /**
11684    * Checks if `predicate` returns truthy for **all** elements of `collection`.
11685    * The predicate is bound to `thisArg` and invoked with three arguments:
11686    * (value, index|key, collection).
11687    *
11688    * If a property name is provided for `predicate` the created `_.property`
11689    * style callback returns the property value of the given element.
11690    *
11691    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11692    * style callback returns `true` for elements that have a matching property
11693    * value, else `false`.
11694    *
11695    * If an object is provided for `predicate` the created `_.matches` style
11696    * callback returns `true` for elements that have the properties of the given
11697    * object, else `false`.
11698    *
11699    * @static
11700    * @memberOf _
11701    * @alias all
11702    * @category Collection
11703    * @param {Array|Object|string} collection The collection to iterate over.
11704    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11705    *  per iteration.
11706    * @param {*} [thisArg] The `this` binding of `predicate`.
11707    * @returns {boolean} Returns `true` if all elements pass the predicate check,
11708    *  else `false`.
11709    * @example
11710    *
11711    * _.every([true, 1, null, 'yes'], Boolean);
11712    * // => false
11713    *
11714    * var users = [
11715    *   { 'user': 'barney', 'active': false },
11716    *   { 'user': 'fred',   'active': false }
11717    * ];
11718    *
11719    * // using the `_.matches` callback shorthand
11720    * _.every(users, { 'user': 'barney', 'active': false });
11721    * // => false
11722    *
11723    * // using the `_.matchesProperty` callback shorthand
11724    * _.every(users, 'active', false);
11725    * // => true
11726    *
11727    * // using the `_.property` callback shorthand
11728    * _.every(users, 'active');
11729    * // => false
11730    */
11731   function every(collection, predicate, thisArg) {
11732     var func = isArray(collection) ? arrayEvery : baseEvery;
11733     if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
11734       predicate = null;
11735     }
11736     if (typeof predicate != 'function' || thisArg !== undefined) {
11737       predicate = getCallback(predicate, thisArg, 3);
11738     }
11739     return func(collection, predicate);
11740   }
11741
11742   /**
11743    * Iterates over elements of `collection`, returning an array of all elements
11744    * `predicate` returns truthy for. The predicate is bound to `thisArg` and
11745    * invoked with three arguments: (value, index|key, collection).
11746    *
11747    * If a property name is provided for `predicate` the created `_.property`
11748    * style callback returns the property value of the given element.
11749    *
11750    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11751    * style callback returns `true` for elements that have a matching property
11752    * value, else `false`.
11753    *
11754    * If an object is provided for `predicate` the created `_.matches` style
11755    * callback returns `true` for elements that have the properties of the given
11756    * object, else `false`.
11757    *
11758    * @static
11759    * @memberOf _
11760    * @alias select
11761    * @category Collection
11762    * @param {Array|Object|string} collection The collection to iterate over.
11763    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11764    *  per iteration.
11765    * @param {*} [thisArg] The `this` binding of `predicate`.
11766    * @returns {Array} Returns the new filtered array.
11767    * @example
11768    *
11769    * _.filter([4, 5, 6], function(n) {
11770    *   return n % 2 == 0;
11771    * });
11772    * // => [4, 6]
11773    *
11774    * var users = [
11775    *   { 'user': 'barney', 'age': 36, 'active': true },
11776    *   { 'user': 'fred',   'age': 40, 'active': false }
11777    * ];
11778    *
11779    * // using the `_.matches` callback shorthand
11780    * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
11781    * // => ['barney']
11782    *
11783    * // using the `_.matchesProperty` callback shorthand
11784    * _.pluck(_.filter(users, 'active', false), 'user');
11785    * // => ['fred']
11786    *
11787    * // using the `_.property` callback shorthand
11788    * _.pluck(_.filter(users, 'active'), 'user');
11789    * // => ['barney']
11790    */
11791   function filter(collection, predicate, thisArg) {
11792     var func = isArray(collection) ? arrayFilter : baseFilter;
11793     predicate = getCallback(predicate, thisArg, 3);
11794     return func(collection, predicate);
11795   }
11796
11797   /**
11798    * Iterates over elements of `collection`, returning the first element
11799    * `predicate` returns truthy for. The predicate is bound to `thisArg` and
11800    * invoked with three arguments: (value, index|key, collection).
11801    *
11802    * If a property name is provided for `predicate` the created `_.property`
11803    * style callback returns the property value of the given element.
11804    *
11805    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11806    * style callback returns `true` for elements that have a matching property
11807    * value, else `false`.
11808    *
11809    * If an object is provided for `predicate` the created `_.matches` style
11810    * callback returns `true` for elements that have the properties of the given
11811    * object, else `false`.
11812    *
11813    * @static
11814    * @memberOf _
11815    * @alias detect
11816    * @category Collection
11817    * @param {Array|Object|string} collection The collection to search.
11818    * @param {Function|Object|string} [predicate=_.identity] The function invoked
11819    *  per iteration.
11820    * @param {*} [thisArg] The `this` binding of `predicate`.
11821    * @returns {*} Returns the matched element, else `undefined`.
11822    * @example
11823    *
11824    * var users = [
11825    *   { 'user': 'barney',  'age': 36, 'active': true },
11826    *   { 'user': 'fred',    'age': 40, 'active': false },
11827    *   { 'user': 'pebbles', 'age': 1,  'active': true }
11828    * ];
11829    *
11830    * _.result(_.find(users, function(chr) {
11831    *   return chr.age < 40;
11832    * }), 'user');
11833    * // => 'barney'
11834    *
11835    * // using the `_.matches` callback shorthand
11836    * _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
11837    * // => 'pebbles'
11838    *
11839    * // using the `_.matchesProperty` callback shorthand
11840    * _.result(_.find(users, 'active', false), 'user');
11841    * // => 'fred'
11842    *
11843    * // using the `_.property` callback shorthand
11844    * _.result(_.find(users, 'active'), 'user');
11845    * // => 'barney'
11846    */
11847   var find = createFind(baseEach);
11848
11849   /**
11850    * Iterates over elements of `collection` invoking `iteratee` for each element.
11851    * The `iteratee` is bound to `thisArg` and invoked with three arguments:
11852    * (value, index|key, collection). Iteratee functions may exit iteration early
11853    * by explicitly returning `false`.
11854    *
11855    * **Note:** As with other "Collections" methods, objects with a "length" property
11856    * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`
11857    * may be used for object iteration.
11858    *
11859    * @static
11860    * @memberOf _
11861    * @alias each
11862    * @category Collection
11863    * @param {Array|Object|string} collection The collection to iterate over.
11864    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
11865    * @param {*} [thisArg] The `this` binding of `iteratee`.
11866    * @returns {Array|Object|string} Returns `collection`.
11867    * @example
11868    *
11869    * _([1, 2]).forEach(function(n) {
11870    *   console.log(n);
11871    * }).value();
11872    * // => logs each value from left to right and returns the array
11873    *
11874    * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
11875    *   console.log(n, key);
11876    * });
11877    * // => logs each value-key pair and returns the object (iteration order is not guaranteed)
11878    */
11879   var forEach = createForEach(arrayEach, baseEach);
11880
11881   /**
11882    * Creates an object composed of keys generated from the results of running
11883    * each element of `collection` through `iteratee`. The corresponding value
11884    * of each key is an array of the elements responsible for generating the key.
11885    * The `iteratee` is bound to `thisArg` and invoked with three arguments:
11886    * (value, index|key, collection).
11887    *
11888    * If a property name is provided for `iteratee` the created `_.property`
11889    * style callback returns the property value of the given element.
11890    *
11891    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11892    * style callback returns `true` for elements that have a matching property
11893    * value, else `false`.
11894    *
11895    * If an object is provided for `iteratee` the created `_.matches` style
11896    * callback returns `true` for elements that have the properties of the given
11897    * object, else `false`.
11898    *
11899    * @static
11900    * @memberOf _
11901    * @category Collection
11902    * @param {Array|Object|string} collection The collection to iterate over.
11903    * @param {Function|Object|string} [iteratee=_.identity] The function invoked
11904    *  per iteration.
11905    * @param {*} [thisArg] The `this` binding of `iteratee`.
11906    * @returns {Object} Returns the composed aggregate object.
11907    * @example
11908    *
11909    * _.groupBy([4.2, 6.1, 6.4], function(n) {
11910    *   return Math.floor(n);
11911    * });
11912    * // => { '4': [4.2], '6': [6.1, 6.4] }
11913    *
11914    * _.groupBy([4.2, 6.1, 6.4], function(n) {
11915    *   return this.floor(n);
11916    * }, Math);
11917    * // => { '4': [4.2], '6': [6.1, 6.4] }
11918    *
11919    * // using the `_.property` callback shorthand
11920    * _.groupBy(['one', 'two', 'three'], 'length');
11921    * // => { '3': ['one', 'two'], '5': ['three'] }
11922    */
11923   var groupBy = createAggregator(function(result, value, key) {
11924     if (hasOwnProperty.call(result, key)) {
11925       result[key].push(value);
11926     } else {
11927       result[key] = [value];
11928     }
11929   });
11930
11931   /**
11932    * Checks if `value` is in `collection` using
11933    * [`SameValueZero`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero)
11934    * for equality comparisons. If `fromIndex` is negative, it is used as the offset
11935    * from the end of `collection`.
11936    *
11937    * @static
11938    * @memberOf _
11939    * @alias contains, include
11940    * @category Collection
11941    * @param {Array|Object|string} collection The collection to search.
11942    * @param {*} target The value to search for.
11943    * @param {number} [fromIndex=0] The index to search from.
11944    * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`.
11945    * @returns {boolean} Returns `true` if a matching element is found, else `false`.
11946    * @example
11947    *
11948    * _.includes([1, 2, 3], 1);
11949    * // => true
11950    *
11951    * _.includes([1, 2, 3], 1, 2);
11952    * // => false
11953    *
11954    * _.includes({ 'user': 'fred', 'age': 40 }, 'fred');
11955    * // => true
11956    *
11957    * _.includes('pebbles', 'eb');
11958    * // => true
11959    */
11960   function includes(collection, target, fromIndex, guard) {
11961     var length = collection ? getLength(collection) : 0;
11962     if (!isLength(length)) {
11963       collection = values(collection);
11964       length = collection.length;
11965     }
11966     if (!length) {
11967       return false;
11968     }
11969     if (typeof fromIndex != 'number' || (guard && isIterateeCall(target, fromIndex, guard))) {
11970       fromIndex = 0;
11971     } else {
11972       fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0);
11973     }
11974     return (typeof collection == 'string' || !isArray(collection) && isString(collection))
11975       ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1)
11976       : (getIndexOf(collection, target, fromIndex) > -1);
11977   }
11978
11979   /**
11980    * Creates an array of values by running each element in `collection` through
11981    * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three
11982    * arguments: (value, index|key, collection).
11983    *
11984    * If a property name is provided for `iteratee` the created `_.property`
11985    * style callback returns the property value of the given element.
11986    *
11987    * If a value is also provided for `thisArg` the created `_.matchesProperty`
11988    * style callback returns `true` for elements that have a matching property
11989    * value, else `false`.
11990    *
11991    * If an object is provided for `iteratee` the created `_.matches` style
11992    * callback returns `true` for elements that have the properties of the given
11993    * object, else `false`.
11994    *
11995    * Many lodash methods are guarded to work as iteratees for methods like
11996    * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
11997    *
11998    * The guarded methods are:
11999    * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`,
12000    * `drop`, `dropRight`, `every`, `fill`, `flatten`, `invert`, `max`, `min`,
12001    * `parseInt`, `slice`, `sortBy`, `take`, `takeRight`, `template`, `trim`,
12002    * `trimLeft`, `trimRight`, `trunc`, `random`, `range`, `sample`, `some`,
12003    * `sum`, `uniq`, and `words`
12004    *
12005    * @static
12006    * @memberOf _
12007    * @alias collect
12008    * @category Collection
12009    * @param {Array|Object|string} collection The collection to iterate over.
12010    * @param {Function|Object|string} [iteratee=_.identity] The function invoked
12011    *  per iteration.
12012    * @param {*} [thisArg] The `this` binding of `iteratee`.
12013    * @returns {Array} Returns the new mapped array.
12014    * @example
12015    *
12016    * function timesThree(n) {
12017    *   return n * 3;
12018    * }
12019    *
12020    * _.map([1, 2], timesThree);
12021    * // => [3, 6]
12022    *
12023    * _.map({ 'a': 1, 'b': 2 }, timesThree);
12024    * // => [3, 6] (iteration order is not guaranteed)
12025    *
12026    * var users = [
12027    *   { 'user': 'barney' },
12028    *   { 'user': 'fred' }
12029    * ];
12030    *
12031    * // using the `_.property` callback shorthand
12032    * _.map(users, 'user');
12033    * // => ['barney', 'fred']
12034    */
12035   function map(collection, iteratee, thisArg) {
12036     var func = isArray(collection) ? arrayMap : baseMap;
12037     iteratee = getCallback(iteratee, thisArg, 3);
12038     return func(collection, iteratee);
12039   }
12040
12041   /**
12042    * Gets the property value of `path` from all elements in `collection`.
12043    *
12044    * @static
12045    * @memberOf _
12046    * @category Collection
12047    * @param {Array|Object|string} collection The collection to iterate over.
12048    * @param {Array|string} path The path of the property to pluck.
12049    * @returns {Array} Returns the property values.
12050    * @example
12051    *
12052    * var users = [
12053    *   { 'user': 'barney', 'age': 36 },
12054    *   { 'user': 'fred',   'age': 40 }
12055    * ];
12056    *
12057    * _.pluck(users, 'user');
12058    * // => ['barney', 'fred']
12059    *
12060    * var userIndex = _.indexBy(users, 'user');
12061    * _.pluck(userIndex, 'age');
12062    * // => [36, 40] (iteration order is not guaranteed)
12063    */
12064   function pluck(collection, path) {
12065     return map(collection, property(path));
12066   }
12067
12068   /**
12069    * Reduces `collection` to a value which is the accumulated result of running
12070    * each element in `collection` through `iteratee`, where each successive
12071    * invocation is supplied the return value of the previous. If `accumulator`
12072    * is not provided the first element of `collection` is used as the initial
12073    * value. The `iteratee` is bound to `thisArg` and invoked with four arguments:
12074    * (accumulator, value, index|key, collection).
12075    *
12076    * Many lodash methods are guarded to work as iteratees for methods like
12077    * `_.reduce`, `_.reduceRight`, and `_.transform`.
12078    *
12079    * The guarded methods are:
12080    * `assign`, `defaults`, `includes`, `merge`, `sortByAll`, and `sortByOrder`
12081    *
12082    * @static
12083    * @memberOf _
12084    * @alias foldl, inject
12085    * @category Collection
12086    * @param {Array|Object|string} collection The collection to iterate over.
12087    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
12088    * @param {*} [accumulator] The initial value.
12089    * @param {*} [thisArg] The `this` binding of `iteratee`.
12090    * @returns {*} Returns the accumulated value.
12091    * @example
12092    *
12093    * _.reduce([1, 2], function(total, n) {
12094    *   return total + n;
12095    * });
12096    * // => 3
12097    *
12098    * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
12099    *   result[key] = n * 3;
12100    *   return result;
12101    * }, {});
12102    * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
12103    */
12104   var reduce = createReduce(arrayReduce, baseEach);
12105
12106   /**
12107    * The opposite of `_.filter`; this method returns the elements of `collection`
12108    * that `predicate` does **not** return truthy for.
12109    *
12110    * @static
12111    * @memberOf _
12112    * @category Collection
12113    * @param {Array|Object|string} collection The collection to iterate over.
12114    * @param {Function|Object|string} [predicate=_.identity] The function invoked
12115    *  per iteration.
12116    * @param {*} [thisArg] The `this` binding of `predicate`.
12117    * @returns {Array} Returns the new filtered array.
12118    * @example
12119    *
12120    * _.reject([1, 2, 3, 4], function(n) {
12121    *   return n % 2 == 0;
12122    * });
12123    * // => [1, 3]
12124    *
12125    * var users = [
12126    *   { 'user': 'barney', 'age': 36, 'active': false },
12127    *   { 'user': 'fred',   'age': 40, 'active': true }
12128    * ];
12129    *
12130    * // using the `_.matches` callback shorthand
12131    * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
12132    * // => ['barney']
12133    *
12134    * // using the `_.matchesProperty` callback shorthand
12135    * _.pluck(_.reject(users, 'active', false), 'user');
12136    * // => ['fred']
12137    *
12138    * // using the `_.property` callback shorthand
12139    * _.pluck(_.reject(users, 'active'), 'user');
12140    * // => ['barney']
12141    */
12142   function reject(collection, predicate, thisArg) {
12143     var func = isArray(collection) ? arrayFilter : baseFilter;
12144     predicate = getCallback(predicate, thisArg, 3);
12145     return func(collection, function(value, index, collection) {
12146       return !predicate(value, index, collection);
12147     });
12148   }
12149
12150   /**
12151    * Checks if `predicate` returns truthy for **any** element of `collection`.
12152    * The function returns as soon as it finds a passing value and does not iterate
12153    * over the entire collection. The predicate is bound to `thisArg` and invoked
12154    * with three arguments: (value, index|key, collection).
12155    *
12156    * If a property name is provided for `predicate` the created `_.property`
12157    * style callback returns the property value of the given element.
12158    *
12159    * If a value is also provided for `thisArg` the created `_.matchesProperty`
12160    * style callback returns `true` for elements that have a matching property
12161    * value, else `false`.
12162    *
12163    * If an object is provided for `predicate` the created `_.matches` style
12164    * callback returns `true` for elements that have the properties of the given
12165    * object, else `false`.
12166    *
12167    * @static
12168    * @memberOf _
12169    * @alias any
12170    * @category Collection
12171    * @param {Array|Object|string} collection The collection to iterate over.
12172    * @param {Function|Object|string} [predicate=_.identity] The function invoked
12173    *  per iteration.
12174    * @param {*} [thisArg] The `this` binding of `predicate`.
12175    * @returns {boolean} Returns `true` if any element passes the predicate check,
12176    *  else `false`.
12177    * @example
12178    *
12179    * _.some([null, 0, 'yes', false], Boolean);
12180    * // => true
12181    *
12182    * var users = [
12183    *   { 'user': 'barney', 'active': true },
12184    *   { 'user': 'fred',   'active': false }
12185    * ];
12186    *
12187    * // using the `_.matches` callback shorthand
12188    * _.some(users, { 'user': 'barney', 'active': false });
12189    * // => false
12190    *
12191    * // using the `_.matchesProperty` callback shorthand
12192    * _.some(users, 'active', false);
12193    * // => true
12194    *
12195    * // using the `_.property` callback shorthand
12196    * _.some(users, 'active');
12197    * // => true
12198    */
12199   function some(collection, predicate, thisArg) {
12200     var func = isArray(collection) ? arraySome : baseSome;
12201     if (thisArg && isIterateeCall(collection, predicate, thisArg)) {
12202       predicate = null;
12203     }
12204     if (typeof predicate != 'function' || thisArg !== undefined) {
12205       predicate = getCallback(predicate, thisArg, 3);
12206     }
12207     return func(collection, predicate);
12208   }
12209
12210   /*------------------------------------------------------------------------*/
12211
12212   /**
12213    * Gets the number of milliseconds that have elapsed since the Unix epoch
12214    * (1 January 1970 00:00:00 UTC).
12215    *
12216    * @static
12217    * @memberOf _
12218    * @category Date
12219    * @example
12220    *
12221    * _.defer(function(stamp) {
12222    *   console.log(_.now() - stamp);
12223    * }, _.now());
12224    * // => logs the number of milliseconds it took for the deferred function to be invoked
12225    */
12226   var now = nativeNow || function() {
12227     return new Date().getTime();
12228   };
12229
12230   /*------------------------------------------------------------------------*/
12231
12232   /**
12233    * Creates a function that invokes `func` with the `this` binding of `thisArg`
12234    * and prepends any additional `_.bind` arguments to those provided to the
12235    * bound function.
12236    *
12237    * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
12238    * may be used as a placeholder for partially applied arguments.
12239    *
12240    * **Note:** Unlike native `Function#bind` this method does not set the "length"
12241    * property of bound functions.
12242    *
12243    * @static
12244    * @memberOf _
12245    * @category Function
12246    * @param {Function} func The function to bind.
12247    * @param {*} thisArg The `this` binding of `func`.
12248    * @param {...*} [partials] The arguments to be partially applied.
12249    * @returns {Function} Returns the new bound function.
12250    * @example
12251    *
12252    * var greet = function(greeting, punctuation) {
12253    *   return greeting + ' ' + this.user + punctuation;
12254    * };
12255    *
12256    * var object = { 'user': 'fred' };
12257    *
12258    * var bound = _.bind(greet, object, 'hi');
12259    * bound('!');
12260    * // => 'hi fred!'
12261    *
12262    * // using placeholders
12263    * var bound = _.bind(greet, object, _, '!');
12264    * bound('hi');
12265    * // => 'hi fred!'
12266    */
12267   var bind = restParam(function(func, thisArg, partials) {
12268     var bitmask = BIND_FLAG;
12269     if (partials.length) {
12270       var holders = replaceHolders(partials, bind.placeholder);
12271       bitmask |= PARTIAL_FLAG;
12272     }
12273     return createWrapper(func, bitmask, thisArg, partials, holders);
12274   });
12275
12276   /**
12277    * Creates a debounced function that delays invoking `func` until after `wait`
12278    * milliseconds have elapsed since the last time the debounced function was
12279    * invoked. The debounced function comes with a `cancel` method to cancel
12280    * delayed invocations. Provide an options object to indicate that `func`
12281    * should be invoked on the leading and/or trailing edge of the `wait` timeout.
12282    * Subsequent calls to the debounced function return the result of the last
12283    * `func` invocation.
12284    *
12285    * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
12286    * on the trailing edge of the timeout only if the the debounced function is
12287    * invoked more than once during the `wait` timeout.
12288    *
12289    * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
12290    * for details over the differences between `_.debounce` and `_.throttle`.
12291    *
12292    * @static
12293    * @memberOf _
12294    * @category Function
12295    * @param {Function} func The function to debounce.
12296    * @param {number} [wait=0] The number of milliseconds to delay.
12297    * @param {Object} [options] The options object.
12298    * @param {boolean} [options.leading=false] Specify invoking on the leading
12299    *  edge of the timeout.
12300    * @param {number} [options.maxWait] The maximum time `func` is allowed to be
12301    *  delayed before it is invoked.
12302    * @param {boolean} [options.trailing=true] Specify invoking on the trailing
12303    *  edge of the timeout.
12304    * @returns {Function} Returns the new debounced function.
12305    * @example
12306    *
12307    * // avoid costly calculations while the window size is in flux
12308    * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
12309    *
12310    * // invoke `sendMail` when the click event is fired, debouncing subsequent calls
12311    * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
12312    *   'leading': true,
12313    *   'trailing': false
12314    * }));
12315    *
12316    * // ensure `batchLog` is invoked once after 1 second of debounced calls
12317    * var source = new EventSource('/stream');
12318    * jQuery(source).on('message', _.debounce(batchLog, 250, {
12319    *   'maxWait': 1000
12320    * }));
12321    *
12322    * // cancel a debounced call
12323    * var todoChanges = _.debounce(batchLog, 1000);
12324    * Object.observe(models.todo, todoChanges);
12325    *
12326    * Object.observe(models, function(changes) {
12327    *   if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
12328    *     todoChanges.cancel();
12329    *   }
12330    * }, ['delete']);
12331    *
12332    * // ...at some point `models.todo` is changed
12333    * models.todo.completed = true;
12334    *
12335    * // ...before 1 second has passed `models.todo` is deleted
12336    * // which cancels the debounced `todoChanges` call
12337    * delete models.todo;
12338    */
12339   function debounce(func, wait, options) {
12340     var args,
12341         maxTimeoutId,
12342         result,
12343         stamp,
12344         thisArg,
12345         timeoutId,
12346         trailingCall,
12347         lastCalled = 0,
12348         maxWait = false,
12349         trailing = true;
12350
12351     if (typeof func != 'function') {
12352       throw new TypeError(FUNC_ERROR_TEXT);
12353     }
12354     wait = wait < 0 ? 0 : (+wait || 0);
12355     if (options === true) {
12356       var leading = true;
12357       trailing = false;
12358     } else if (isObject(options)) {
12359       leading = options.leading;
12360       maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
12361       trailing = 'trailing' in options ? options.trailing : trailing;
12362     }
12363
12364     function cancel() {
12365       if (timeoutId) {
12366         clearTimeout(timeoutId);
12367       }
12368       if (maxTimeoutId) {
12369         clearTimeout(maxTimeoutId);
12370       }
12371       maxTimeoutId = timeoutId = trailingCall = undefined;
12372     }
12373
12374     function delayed() {
12375       var remaining = wait - (now() - stamp);
12376       if (remaining <= 0 || remaining > wait) {
12377         if (maxTimeoutId) {
12378           clearTimeout(maxTimeoutId);
12379         }
12380         var isCalled = trailingCall;
12381         maxTimeoutId = timeoutId = trailingCall = undefined;
12382         if (isCalled) {
12383           lastCalled = now();
12384           result = func.apply(thisArg, args);
12385           if (!timeoutId && !maxTimeoutId) {
12386             args = thisArg = null;
12387           }
12388         }
12389       } else {
12390         timeoutId = setTimeout(delayed, remaining);
12391       }
12392     }
12393
12394     function maxDelayed() {
12395       if (timeoutId) {
12396         clearTimeout(timeoutId);
12397       }
12398       maxTimeoutId = timeoutId = trailingCall = undefined;
12399       if (trailing || (maxWait !== wait)) {
12400         lastCalled = now();
12401         result = func.apply(thisArg, args);
12402         if (!timeoutId && !maxTimeoutId) {
12403           args = thisArg = null;
12404         }
12405       }
12406     }
12407
12408     function debounced() {
12409       args = arguments;
12410       stamp = now();
12411       thisArg = this;
12412       trailingCall = trailing && (timeoutId || !leading);
12413
12414       if (maxWait === false) {
12415         var leadingCall = leading && !timeoutId;
12416       } else {
12417         if (!maxTimeoutId && !leading) {
12418           lastCalled = stamp;
12419         }
12420         var remaining = maxWait - (stamp - lastCalled),
12421             isCalled = remaining <= 0 || remaining > maxWait;
12422
12423         if (isCalled) {
12424           if (maxTimeoutId) {
12425             maxTimeoutId = clearTimeout(maxTimeoutId);
12426           }
12427           lastCalled = stamp;
12428           result = func.apply(thisArg, args);
12429         }
12430         else if (!maxTimeoutId) {
12431           maxTimeoutId = setTimeout(maxDelayed, remaining);
12432         }
12433       }
12434       if (isCalled && timeoutId) {
12435         timeoutId = clearTimeout(timeoutId);
12436       }
12437       else if (!timeoutId && wait !== maxWait) {
12438         timeoutId = setTimeout(delayed, wait);
12439       }
12440       if (leadingCall) {
12441         isCalled = true;
12442         result = func.apply(thisArg, args);
12443       }
12444       if (isCalled && !timeoutId && !maxTimeoutId) {
12445         args = thisArg = null;
12446       }
12447       return result;
12448     }
12449     debounced.cancel = cancel;
12450     return debounced;
12451   }
12452
12453   /**
12454    * Creates a function that invokes `func` with the `this` binding of the
12455    * created function and arguments from `start` and beyond provided as an array.
12456    *
12457    * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).
12458    *
12459    * @static
12460    * @memberOf _
12461    * @category Function
12462    * @param {Function} func The function to apply a rest parameter to.
12463    * @param {number} [start=func.length-1] The start position of the rest parameter.
12464    * @returns {Function} Returns the new function.
12465    * @example
12466    *
12467    * var say = _.restParam(function(what, names) {
12468    *   return what + ' ' + _.initial(names).join(', ') +
12469    *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
12470    * });
12471    *
12472    * say('hello', 'fred', 'barney', 'pebbles');
12473    * // => 'hello fred, barney, & pebbles'
12474    */
12475   function restParam(func, start) {
12476     if (typeof func != 'function') {
12477       throw new TypeError(FUNC_ERROR_TEXT);
12478     }
12479     start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
12480     return function() {
12481       var args = arguments,
12482           index = -1,
12483           length = nativeMax(args.length - start, 0),
12484           rest = Array(length);
12485
12486       while (++index < length) {
12487         rest[index] = args[start + index];
12488       }
12489       switch (start) {
12490         case 0: return func.call(this, rest);
12491         case 1: return func.call(this, args[0], rest);
12492         case 2: return func.call(this, args[0], args[1], rest);
12493       }
12494       var otherArgs = Array(start + 1);
12495       index = -1;
12496       while (++index < start) {
12497         otherArgs[index] = args[index];
12498       }
12499       otherArgs[start] = rest;
12500       return func.apply(this, otherArgs);
12501     };
12502   }
12503
12504   /**
12505    * Creates a throttled function that only invokes `func` at most once per
12506    * every `wait` milliseconds. The throttled function comes with a `cancel`
12507    * method to cancel delayed invocations. Provide an options object to indicate
12508    * that `func` should be invoked on the leading and/or trailing edge of the
12509    * `wait` timeout. Subsequent calls to the throttled function return the
12510    * result of the last `func` call.
12511    *
12512    * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked
12513    * on the trailing edge of the timeout only if the the throttled function is
12514    * invoked more than once during the `wait` timeout.
12515    *
12516    * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)
12517    * for details over the differences between `_.throttle` and `_.debounce`.
12518    *
12519    * @static
12520    * @memberOf _
12521    * @category Function
12522    * @param {Function} func The function to throttle.
12523    * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
12524    * @param {Object} [options] The options object.
12525    * @param {boolean} [options.leading=true] Specify invoking on the leading
12526    *  edge of the timeout.
12527    * @param {boolean} [options.trailing=true] Specify invoking on the trailing
12528    *  edge of the timeout.
12529    * @returns {Function} Returns the new throttled function.
12530    * @example
12531    *
12532    * // avoid excessively updating the position while scrolling
12533    * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
12534    *
12535    * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes
12536    * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
12537    *   'trailing': false
12538    * }));
12539    *
12540    * // cancel a trailing throttled call
12541    * jQuery(window).on('popstate', throttled.cancel);
12542    */
12543   function throttle(func, wait, options) {
12544     var leading = true,
12545         trailing = true;
12546
12547     if (typeof func != 'function') {
12548       throw new TypeError(FUNC_ERROR_TEXT);
12549     }
12550     if (options === false) {
12551       leading = false;
12552     } else if (isObject(options)) {
12553       leading = 'leading' in options ? !!options.leading : leading;
12554       trailing = 'trailing' in options ? !!options.trailing : trailing;
12555     }
12556     debounceOptions.leading = leading;
12557     debounceOptions.maxWait = +wait;
12558     debounceOptions.trailing = trailing;
12559     return debounce(func, wait, debounceOptions);
12560   }
12561
12562   /*------------------------------------------------------------------------*/
12563
12564   /**
12565    * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned,
12566    * otherwise they are assigned by reference. If `customizer` is provided it is
12567    * invoked to produce the cloned values. If `customizer` returns `undefined`
12568    * cloning is handled by the method instead. The `customizer` is bound to
12569    * `thisArg` and invoked with two argument; (value [, index|key, object]).
12570    *
12571    * **Note:** This method is loosely based on the
12572    * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
12573    * The enumerable properties of `arguments` objects and objects created by
12574    * constructors other than `Object` are cloned to plain `Object` objects. An
12575    * empty object is returned for uncloneable values such as functions, DOM nodes,
12576    * Maps, Sets, and WeakMaps.
12577    *
12578    * @static
12579    * @memberOf _
12580    * @category Lang
12581    * @param {*} value The value to clone.
12582    * @param {boolean} [isDeep] Specify a deep clone.
12583    * @param {Function} [customizer] The function to customize cloning values.
12584    * @param {*} [thisArg] The `this` binding of `customizer`.
12585    * @returns {*} Returns the cloned value.
12586    * @example
12587    *
12588    * var users = [
12589    *   { 'user': 'barney' },
12590    *   { 'user': 'fred' }
12591    * ];
12592    *
12593    * var shallow = _.clone(users);
12594    * shallow[0] === users[0];
12595    * // => true
12596    *
12597    * var deep = _.clone(users, true);
12598    * deep[0] === users[0];
12599    * // => false
12600    *
12601    * // using a customizer callback
12602    * var el = _.clone(document.body, function(value) {
12603    *   if (_.isElement(value)) {
12604    *     return value.cloneNode(false);
12605    *   }
12606    * });
12607    *
12608    * el === document.body
12609    * // => false
12610    * el.nodeName
12611    * // => BODY
12612    * el.childNodes.length;
12613    * // => 0
12614    */
12615   function clone(value, isDeep, customizer, thisArg) {
12616     if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) {
12617       isDeep = false;
12618     }
12619     else if (typeof isDeep == 'function') {
12620       thisArg = customizer;
12621       customizer = isDeep;
12622       isDeep = false;
12623     }
12624     return typeof customizer == 'function'
12625       ? baseClone(value, isDeep, bindCallback(customizer, thisArg, 1))
12626       : baseClone(value, isDeep);
12627   }
12628
12629   /**
12630    * Creates a deep clone of `value`. If `customizer` is provided it is invoked
12631    * to produce the cloned values. If `customizer` returns `undefined` cloning
12632    * is handled by the method instead. The `customizer` is bound to `thisArg`
12633    * and invoked with two argument; (value [, index|key, object]).
12634    *
12635    * **Note:** This method is loosely based on the
12636    * [structured clone algorithm](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm).
12637    * The enumerable properties of `arguments` objects and objects created by
12638    * constructors other than `Object` are cloned to plain `Object` objects. An
12639    * empty object is returned for uncloneable values such as functions, DOM nodes,
12640    * Maps, Sets, and WeakMaps.
12641    *
12642    * @static
12643    * @memberOf _
12644    * @category Lang
12645    * @param {*} value The value to deep clone.
12646    * @param {Function} [customizer] The function to customize cloning values.
12647    * @param {*} [thisArg] The `this` binding of `customizer`.
12648    * @returns {*} Returns the deep cloned value.
12649    * @example
12650    *
12651    * var users = [
12652    *   { 'user': 'barney' },
12653    *   { 'user': 'fred' }
12654    * ];
12655    *
12656    * var deep = _.cloneDeep(users);
12657    * deep[0] === users[0];
12658    * // => false
12659    *
12660    * // using a customizer callback
12661    * var el = _.cloneDeep(document.body, function(value) {
12662    *   if (_.isElement(value)) {
12663    *     return value.cloneNode(true);
12664    *   }
12665    * });
12666    *
12667    * el === document.body
12668    * // => false
12669    * el.nodeName
12670    * // => BODY
12671    * el.childNodes.length;
12672    * // => 20
12673    */
12674   function cloneDeep(value, customizer, thisArg) {
12675     return typeof customizer == 'function'
12676       ? baseClone(value, true, bindCallback(customizer, thisArg, 1))
12677       : baseClone(value, true);
12678   }
12679
12680   /**
12681    * Checks if `value` is classified as an `arguments` object.
12682    *
12683    * @static
12684    * @memberOf _
12685    * @category Lang
12686    * @param {*} value The value to check.
12687    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12688    * @example
12689    *
12690    * _.isArguments(function() { return arguments; }());
12691    * // => true
12692    *
12693    * _.isArguments([1, 2, 3]);
12694    * // => false
12695    */
12696   function isArguments(value) {
12697     return isObjectLike(value) && isArrayLike(value) && objToString.call(value) == argsTag;
12698   }
12699   // Fallback for environments without a `toStringTag` for `arguments` objects.
12700   if (!support.argsTag) {
12701     isArguments = function(value) {
12702       return isObjectLike(value) && isArrayLike(value) &&
12703         hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
12704     };
12705   }
12706
12707   /**
12708    * Checks if `value` is classified as an `Array` object.
12709    *
12710    * @static
12711    * @memberOf _
12712    * @category Lang
12713    * @param {*} value The value to check.
12714    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12715    * @example
12716    *
12717    * _.isArray([1, 2, 3]);
12718    * // => true
12719    *
12720    * _.isArray(function() { return arguments; }());
12721    * // => false
12722    */
12723   var isArray = nativeIsArray || function(value) {
12724     return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
12725   };
12726
12727   /**
12728    * Checks if `value` is empty. A value is considered empty unless it is an
12729    * `arguments` object, array, string, or jQuery-like collection with a length
12730    * greater than `0` or an object with own enumerable properties.
12731    *
12732    * @static
12733    * @memberOf _
12734    * @category Lang
12735    * @param {Array|Object|string} value The value to inspect.
12736    * @returns {boolean} Returns `true` if `value` is empty, else `false`.
12737    * @example
12738    *
12739    * _.isEmpty(null);
12740    * // => true
12741    *
12742    * _.isEmpty(true);
12743    * // => true
12744    *
12745    * _.isEmpty(1);
12746    * // => true
12747    *
12748    * _.isEmpty([1, 2, 3]);
12749    * // => false
12750    *
12751    * _.isEmpty({ 'a': 1 });
12752    * // => false
12753    */
12754   function isEmpty(value) {
12755     if (value == null) {
12756       return true;
12757     }
12758     if (isArrayLike(value) && (isArray(value) || isString(value) || isArguments(value) ||
12759         (isObjectLike(value) && isFunction(value.splice)))) {
12760       return !value.length;
12761     }
12762     return !keys(value).length;
12763   }
12764
12765   /**
12766    * Performs a deep comparison between two values to determine if they are
12767    * equivalent. If `customizer` is provided it is invoked to compare values.
12768    * If `customizer` returns `undefined` comparisons are handled by the method
12769    * instead. The `customizer` is bound to `thisArg` and invoked with three
12770    * arguments: (value, other [, index|key]).
12771    *
12772    * **Note:** This method supports comparing arrays, booleans, `Date` objects,
12773    * numbers, `Object` objects, regexes, and strings. Objects are compared by
12774    * their own, not inherited, enumerable properties. Functions and DOM nodes
12775    * are **not** supported. Provide a customizer function to extend support
12776    * for comparing other values.
12777    *
12778    * @static
12779    * @memberOf _
12780    * @alias eq
12781    * @category Lang
12782    * @param {*} value The value to compare.
12783    * @param {*} other The other value to compare.
12784    * @param {Function} [customizer] The function to customize value comparisons.
12785    * @param {*} [thisArg] The `this` binding of `customizer`.
12786    * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
12787    * @example
12788    *
12789    * var object = { 'user': 'fred' };
12790    * var other = { 'user': 'fred' };
12791    *
12792    * object == other;
12793    * // => false
12794    *
12795    * _.isEqual(object, other);
12796    * // => true
12797    *
12798    * // using a customizer callback
12799    * var array = ['hello', 'goodbye'];
12800    * var other = ['hi', 'goodbye'];
12801    *
12802    * _.isEqual(array, other, function(value, other) {
12803    *   if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
12804    *     return true;
12805    *   }
12806    * });
12807    * // => true
12808    */
12809   function isEqual(value, other, customizer, thisArg) {
12810     customizer = typeof customizer == 'function' ? bindCallback(customizer, thisArg, 3) : undefined;
12811     var result = customizer ? customizer(value, other) : undefined;
12812     return  result === undefined ? baseIsEqual(value, other, customizer) : !!result;
12813   }
12814
12815   /**
12816    * Checks if `value` is classified as a `Function` object.
12817    *
12818    * @static
12819    * @memberOf _
12820    * @category Lang
12821    * @param {*} value The value to check.
12822    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12823    * @example
12824    *
12825    * _.isFunction(_);
12826    * // => true
12827    *
12828    * _.isFunction(/abc/);
12829    * // => false
12830    */
12831   var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) {
12832     // The use of `Object#toString` avoids issues with the `typeof` operator
12833     // in older versions of Chrome and Safari which return 'function' for regexes
12834     // and Safari 8 equivalents which return 'object' for typed array constructors.
12835     return objToString.call(value) == funcTag;
12836   };
12837
12838   /**
12839    * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
12840    * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
12841    *
12842    * @static
12843    * @memberOf _
12844    * @category Lang
12845    * @param {*} value The value to check.
12846    * @returns {boolean} Returns `true` if `value` is an object, else `false`.
12847    * @example
12848    *
12849    * _.isObject({});
12850    * // => true
12851    *
12852    * _.isObject([1, 2, 3]);
12853    * // => true
12854    *
12855    * _.isObject(1);
12856    * // => false
12857    */
12858   function isObject(value) {
12859     // Avoid a V8 JIT bug in Chrome 19-20.
12860     // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
12861     var type = typeof value;
12862     return !!value && (type == 'object' || type == 'function');
12863   }
12864
12865   /**
12866    * Checks if `value` is a native function.
12867    *
12868    * @static
12869    * @memberOf _
12870    * @category Lang
12871    * @param {*} value The value to check.
12872    * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
12873    * @example
12874    *
12875    * _.isNative(Array.prototype.push);
12876    * // => true
12877    *
12878    * _.isNative(_);
12879    * // => false
12880    */
12881   function isNative(value) {
12882     if (value == null) {
12883       return false;
12884     }
12885     if (objToString.call(value) == funcTag) {
12886       return reIsNative.test(fnToString.call(value));
12887     }
12888     return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);
12889   }
12890
12891   /**
12892    * Checks if `value` is a plain object, that is, an object created by the
12893    * `Object` constructor or one with a `[[Prototype]]` of `null`.
12894    *
12895    * **Note:** This method assumes objects created by the `Object` constructor
12896    * have no inherited enumerable properties.
12897    *
12898    * @static
12899    * @memberOf _
12900    * @category Lang
12901    * @param {*} value The value to check.
12902    * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
12903    * @example
12904    *
12905    * function Foo() {
12906    *   this.a = 1;
12907    * }
12908    *
12909    * _.isPlainObject(new Foo);
12910    * // => false
12911    *
12912    * _.isPlainObject([1, 2, 3]);
12913    * // => false
12914    *
12915    * _.isPlainObject({ 'x': 0, 'y': 0 });
12916    * // => true
12917    *
12918    * _.isPlainObject(Object.create(null));
12919    * // => true
12920    */
12921   var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {
12922     if (!(value && objToString.call(value) == objectTag) || (!lodash.support.argsTag && isArguments(value))) {
12923       return false;
12924     }
12925     var valueOf = getNative(value, 'valueOf'),
12926         objProto = valueOf && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);
12927
12928     return objProto
12929       ? (value == objProto || getPrototypeOf(value) == objProto)
12930       : shimIsPlainObject(value);
12931   };
12932
12933   /**
12934    * Checks if `value` is classified as a `String` primitive or object.
12935    *
12936    * @static
12937    * @memberOf _
12938    * @category Lang
12939    * @param {*} value The value to check.
12940    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12941    * @example
12942    *
12943    * _.isString('abc');
12944    * // => true
12945    *
12946    * _.isString(1);
12947    * // => false
12948    */
12949   function isString(value) {
12950     return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);
12951   }
12952
12953   /**
12954    * Checks if `value` is classified as a typed array.
12955    *
12956    * @static
12957    * @memberOf _
12958    * @category Lang
12959    * @param {*} value The value to check.
12960    * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
12961    * @example
12962    *
12963    * _.isTypedArray(new Uint8Array);
12964    * // => true
12965    *
12966    * _.isTypedArray([]);
12967    * // => false
12968    */
12969   function isTypedArray(value) {
12970     return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];
12971   }
12972
12973   /**
12974    * Converts `value` to a plain object flattening inherited enumerable
12975    * properties of `value` to own properties of the plain object.
12976    *
12977    * @static
12978    * @memberOf _
12979    * @category Lang
12980    * @param {*} value The value to convert.
12981    * @returns {Object} Returns the converted plain object.
12982    * @example
12983    *
12984    * function Foo() {
12985    *   this.b = 2;
12986    * }
12987    *
12988    * Foo.prototype.c = 3;
12989    *
12990    * _.assign({ 'a': 1 }, new Foo);
12991    * // => { 'a': 1, 'b': 2 }
12992    *
12993    * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
12994    * // => { 'a': 1, 'b': 2, 'c': 3 }
12995    */
12996   function toPlainObject(value) {
12997     return baseCopy(value, keysIn(value));
12998   }
12999
13000   /*------------------------------------------------------------------------*/
13001
13002   /**
13003    * Assigns own enumerable properties of source object(s) to the destination
13004    * object. Subsequent sources overwrite property assignments of previous sources.
13005    * If `customizer` is provided it is invoked to produce the assigned values.
13006    * The `customizer` is bound to `thisArg` and invoked with five arguments:
13007    * (objectValue, sourceValue, key, object, source).
13008    *
13009    * **Note:** This method mutates `object` and is based on
13010    * [`Object.assign`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign).
13011    *
13012    * @static
13013    * @memberOf _
13014    * @alias extend
13015    * @category Object
13016    * @param {Object} object The destination object.
13017    * @param {...Object} [sources] The source objects.
13018    * @param {Function} [customizer] The function to customize assigned values.
13019    * @param {*} [thisArg] The `this` binding of `customizer`.
13020    * @returns {Object} Returns `object`.
13021    * @example
13022    *
13023    * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
13024    * // => { 'user': 'fred', 'age': 40 }
13025    *
13026    * // using a customizer callback
13027    * var defaults = _.partialRight(_.assign, function(value, other) {
13028    *   return _.isUndefined(value) ? other : value;
13029    * });
13030    *
13031    * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
13032    * // => { 'user': 'barney', 'age': 36 }
13033    */
13034   var assign = createAssigner(function(object, source, customizer) {
13035     return customizer
13036       ? assignWith(object, source, customizer)
13037       : baseAssign(object, source);
13038   });
13039
13040   /**
13041    * Iterates over own enumerable properties of an object invoking `iteratee`
13042    * for each property. The `iteratee` is bound to `thisArg` and invoked with
13043    * three arguments: (value, key, object). Iteratee functions may exit iteration
13044    * early by explicitly returning `false`.
13045    *
13046    * @static
13047    * @memberOf _
13048    * @category Object
13049    * @param {Object} object The object to iterate over.
13050    * @param {Function} [iteratee=_.identity] The function invoked per iteration.
13051    * @param {*} [thisArg] The `this` binding of `iteratee`.
13052    * @returns {Object} Returns `object`.
13053    * @example
13054    *
13055    * function Foo() {
13056    *   this.a = 1;
13057    *   this.b = 2;
13058    * }
13059    *
13060    * Foo.prototype.c = 3;
13061    *
13062    * _.forOwn(new Foo, function(value, key) {
13063    *   console.log(key);
13064    * });
13065    * // => logs 'a' and 'b' (iteration order is not guaranteed)
13066    */
13067   var forOwn = createForOwn(baseForOwn);
13068
13069   /**
13070    * Creates an array of the own enumerable property names of `object`.
13071    *
13072    * **Note:** Non-object values are coerced to objects. See the
13073    * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys)
13074    * for more details.
13075    *
13076    * @static
13077    * @memberOf _
13078    * @category Object
13079    * @param {Object} object The object to query.
13080    * @returns {Array} Returns the array of property names.
13081    * @example
13082    *
13083    * function Foo() {
13084    *   this.a = 1;
13085    *   this.b = 2;
13086    * }
13087    *
13088    * Foo.prototype.c = 3;
13089    *
13090    * _.keys(new Foo);
13091    * // => ['a', 'b'] (iteration order is not guaranteed)
13092    *
13093    * _.keys('hi');
13094    * // => ['0', '1']
13095    */
13096   var keys = !nativeKeys ? shimKeys : function(object) {
13097     var Ctor = object == null ? null : object.constructor;
13098     if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
13099         (typeof object == 'function' ? lodash.support.enumPrototypes : isArrayLike(object))) {
13100       return shimKeys(object);
13101     }
13102     return isObject(object) ? nativeKeys(object) : [];
13103   };
13104
13105   /**
13106    * Creates an array of the own and inherited enumerable property names of `object`.
13107    *
13108    * **Note:** Non-object values are coerced to objects.
13109    *
13110    * @static
13111    * @memberOf _
13112    * @category Object
13113    * @param {Object} object The object to query.
13114    * @returns {Array} Returns the array of property names.
13115    * @example
13116    *
13117    * function Foo() {
13118    *   this.a = 1;
13119    *   this.b = 2;
13120    * }
13121    *
13122    * Foo.prototype.c = 3;
13123    *
13124    * _.keysIn(new Foo);
13125    * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
13126    */
13127   function keysIn(object) {
13128     if (object == null) {
13129       return [];
13130     }
13131     if (!isObject(object)) {
13132       object = Object(object);
13133     }
13134     var length = object.length,
13135         support = lodash.support;
13136
13137     length = (length && isLength(length) &&
13138       (isArray(object) || isArguments(object) || isString(object)) && length) || 0;
13139
13140     var Ctor = object.constructor,
13141         index = -1,
13142         proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,
13143         isProto = proto === object,
13144         result = Array(length),
13145         skipIndexes = length > 0,
13146         skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),
13147         skipProto = support.enumPrototypes && isFunction(object);
13148
13149     while (++index < length) {
13150       result[index] = (index + '');
13151     }
13152     // lodash skips the `constructor` property when it infers it is iterating
13153     // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`
13154     // attribute of an existing property and the `constructor` property of a
13155     // prototype defaults to non-enumerable.
13156     for (var key in object) {
13157       if (!(skipProto && key == 'prototype') &&
13158           !(skipErrorProps && (key == 'message' || key == 'name')) &&
13159           !(skipIndexes && isIndex(key, length)) &&
13160           !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
13161         result.push(key);
13162       }
13163     }
13164     if (support.nonEnumShadows && object !== objectProto) {
13165       var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),
13166           nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];
13167
13168       if (tag == objectTag) {
13169         proto = objectProto;
13170       }
13171       length = shadowProps.length;
13172       while (length--) {
13173         key = shadowProps[length];
13174         var nonEnum = nonEnums[key];
13175         if (!(isProto && nonEnum) &&
13176             (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {
13177           result.push(key);
13178         }
13179       }
13180     }
13181     return result;
13182   }
13183
13184   /**
13185    * Recursively merges own enumerable properties of the source object(s), that
13186    * don't resolve to `undefined` into the destination object. Subsequent sources
13187    * overwrite property assignments of previous sources. If `customizer` is
13188    * provided it is invoked to produce the merged values of the destination and
13189    * source properties. If `customizer` returns `undefined` merging is handled
13190    * by the method instead. The `customizer` is bound to `thisArg` and invoked
13191    * with five arguments: (objectValue, sourceValue, key, object, source).
13192    *
13193    * @static
13194    * @memberOf _
13195    * @category Object
13196    * @param {Object} object The destination object.
13197    * @param {...Object} [sources] The source objects.
13198    * @param {Function} [customizer] The function to customize assigned values.
13199    * @param {*} [thisArg] The `this` binding of `customizer`.
13200    * @returns {Object} Returns `object`.
13201    * @example
13202    *
13203    * var users = {
13204    *   'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
13205    * };
13206    *
13207    * var ages = {
13208    *   'data': [{ 'age': 36 }, { 'age': 40 }]
13209    * };
13210    *
13211    * _.merge(users, ages);
13212    * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
13213    *
13214    * // using a customizer callback
13215    * var object = {
13216    *   'fruits': ['apple'],
13217    *   'vegetables': ['beet']
13218    * };
13219    *
13220    * var other = {
13221    *   'fruits': ['banana'],
13222    *   'vegetables': ['carrot']
13223    * };
13224    *
13225    * _.merge(object, other, function(a, b) {
13226    *   if (_.isArray(a)) {
13227    *     return a.concat(b);
13228    *   }
13229    * });
13230    * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
13231    */
13232   var merge = createAssigner(baseMerge);
13233
13234   /**
13235    * The opposite of `_.pick`; this method creates an object composed of the
13236    * own and inherited enumerable properties of `object` that are not omitted.
13237    *
13238    * @static
13239    * @memberOf _
13240    * @category Object
13241    * @param {Object} object The source object.
13242    * @param {Function|...(string|string[])} [predicate] The function invoked per
13243    *  iteration or property names to omit, specified as individual property
13244    *  names or arrays of property names.
13245    * @param {*} [thisArg] The `this` binding of `predicate`.
13246    * @returns {Object} Returns the new object.
13247    * @example
13248    *
13249    * var object = { 'user': 'fred', 'age': 40 };
13250    *
13251    * _.omit(object, 'age');
13252    * // => { 'user': 'fred' }
13253    *
13254    * _.omit(object, _.isNumber);
13255    * // => { 'user': 'fred' }
13256    */
13257   var omit = restParam(function(object, props) {
13258     if (object == null) {
13259       return {};
13260     }
13261     if (typeof props[0] != 'function') {
13262       var props = arrayMap(baseFlatten(props), String);
13263       return pickByArray(object, baseDifference(keysIn(object), props));
13264     }
13265     var predicate = bindCallback(props[0], props[1], 3);
13266     return pickByCallback(object, function(value, key, object) {
13267       return !predicate(value, key, object);
13268     });
13269   });
13270
13271   /**
13272    * Creates a two dimensional array of the key-value pairs for `object`,
13273    * e.g. `[[key1, value1], [key2, value2]]`.
13274    *
13275    * @static
13276    * @memberOf _
13277    * @category Object
13278    * @param {Object} object The object to query.
13279    * @returns {Array} Returns the new array of key-value pairs.
13280    * @example
13281    *
13282    * _.pairs({ 'barney': 36, 'fred': 40 });
13283    * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
13284    */
13285   function pairs(object) {
13286     object = toObject(object);
13287
13288     var index = -1,
13289         props = keys(object),
13290         length = props.length,
13291         result = Array(length);
13292
13293     while (++index < length) {
13294       var key = props[index];
13295       result[index] = [key, object[key]];
13296     }
13297     return result;
13298   }
13299
13300   /**
13301    * Creates an object composed of the picked `object` properties. Property
13302    * names may be specified as individual arguments or as arrays of property
13303    * names. If `predicate` is provided it is invoked for each property of `object`
13304    * picking the properties `predicate` returns truthy for. The predicate is
13305    * bound to `thisArg` and invoked with three arguments: (value, key, object).
13306    *
13307    * @static
13308    * @memberOf _
13309    * @category Object
13310    * @param {Object} object The source object.
13311    * @param {Function|...(string|string[])} [predicate] The function invoked per
13312    *  iteration or property names to pick, specified as individual property
13313    *  names or arrays of property names.
13314    * @param {*} [thisArg] The `this` binding of `predicate`.
13315    * @returns {Object} Returns the new object.
13316    * @example
13317    *
13318    * var object = { 'user': 'fred', 'age': 40 };
13319    *
13320    * _.pick(object, 'user');
13321    * // => { 'user': 'fred' }
13322    *
13323    * _.pick(object, _.isString);
13324    * // => { 'user': 'fred' }
13325    */
13326   var pick = restParam(function(object, props) {
13327     if (object == null) {
13328       return {};
13329     }
13330     return typeof props[0] == 'function'
13331       ? pickByCallback(object, bindCallback(props[0], props[1], 3))
13332       : pickByArray(object, baseFlatten(props));
13333   });
13334
13335   /**
13336    * Creates an array of the own enumerable property values of `object`.
13337    *
13338    * **Note:** Non-object values are coerced to objects.
13339    *
13340    * @static
13341    * @memberOf _
13342    * @category Object
13343    * @param {Object} object The object to query.
13344    * @returns {Array} Returns the array of property values.
13345    * @example
13346    *
13347    * function Foo() {
13348    *   this.a = 1;
13349    *   this.b = 2;
13350    * }
13351    *
13352    * Foo.prototype.c = 3;
13353    *
13354    * _.values(new Foo);
13355    * // => [1, 2] (iteration order is not guaranteed)
13356    *
13357    * _.values('hi');
13358    * // => ['h', 'i']
13359    */
13360   function values(object) {
13361     return baseValues(object, keys(object));
13362   }
13363
13364   /*------------------------------------------------------------------------*/
13365
13366   /**
13367    * Escapes the `RegExp` special characters "\", "/", "^", "$", ".", "|", "?",
13368    * "*", "+", "(", ")", "[", "]", "{" and "}" in `string`.
13369    *
13370    * @static
13371    * @memberOf _
13372    * @category String
13373    * @param {string} [string=''] The string to escape.
13374    * @returns {string} Returns the escaped string.
13375    * @example
13376    *
13377    * _.escapeRegExp('[lodash](https://lodash.com/)');
13378    * // => '\[lodash\]\(https:\/\/lodash\.com\/\)'
13379    */
13380   function escapeRegExp(string) {
13381     string = baseToString(string);
13382     return (string && reHasRegExpChars.test(string))
13383       ? string.replace(reRegExpChars, '\\$&')
13384       : string;
13385   }
13386
13387   /*------------------------------------------------------------------------*/
13388
13389   /**
13390    * Creates a function that invokes `func` with the `this` binding of `thisArg`
13391    * and arguments of the created function. If `func` is a property name the
13392    * created callback returns the property value for a given element. If `func`
13393    * is an object the created callback returns `true` for elements that contain
13394    * the equivalent object properties, otherwise it returns `false`.
13395    *
13396    * @static
13397    * @memberOf _
13398    * @alias iteratee
13399    * @category Utility
13400    * @param {*} [func=_.identity] The value to convert to a callback.
13401    * @param {*} [thisArg] The `this` binding of `func`.
13402    * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
13403    * @returns {Function} Returns the callback.
13404    * @example
13405    *
13406    * var users = [
13407    *   { 'user': 'barney', 'age': 36 },
13408    *   { 'user': 'fred',   'age': 40 }
13409    * ];
13410    *
13411    * // wrap to create custom callback shorthands
13412    * _.callback = _.wrap(_.callback, function(callback, func, thisArg) {
13413    *   var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
13414    *   if (!match) {
13415    *     return callback(func, thisArg);
13416    *   }
13417    *   return function(object) {
13418    *     return match[2] == 'gt'
13419    *       ? object[match[1]] > match[3]
13420    *       : object[match[1]] < match[3];
13421    *   };
13422    * });
13423    *
13424    * _.filter(users, 'age__gt36');
13425    * // => [{ 'user': 'fred', 'age': 40 }]
13426    */
13427   function callback(func, thisArg, guard) {
13428     if (guard && isIterateeCall(func, thisArg, guard)) {
13429       thisArg = null;
13430     }
13431     return isObjectLike(func)
13432       ? matches(func)
13433       : baseCallback(func, thisArg);
13434   }
13435
13436   /**
13437    * Creates a function that returns `value`.
13438    *
13439    * @static
13440    * @memberOf _
13441    * @category Utility
13442    * @param {*} value The value to return from the new function.
13443    * @returns {Function} Returns the new function.
13444    * @example
13445    *
13446    * var object = { 'user': 'fred' };
13447    * var getter = _.constant(object);
13448    *
13449    * getter() === object;
13450    * // => true
13451    */
13452   function constant(value) {
13453     return function() {
13454       return value;
13455     };
13456   }
13457
13458   /**
13459    * This method returns the first argument provided to it.
13460    *
13461    * @static
13462    * @memberOf _
13463    * @category Utility
13464    * @param {*} value Any value.
13465    * @returns {*} Returns `value`.
13466    * @example
13467    *
13468    * var object = { 'user': 'fred' };
13469    *
13470    * _.identity(object) === object;
13471    * // => true
13472    */
13473   function identity(value) {
13474     return value;
13475   }
13476
13477   /**
13478    * Creates a function that performs a deep comparison between a given object
13479    * and `source`, returning `true` if the given object has equivalent property
13480    * values, else `false`.
13481    *
13482    * **Note:** This method supports comparing arrays, booleans, `Date` objects,
13483    * numbers, `Object` objects, regexes, and strings. Objects are compared by
13484    * their own, not inherited, enumerable properties. For comparing a single
13485    * own or inherited property value see `_.matchesProperty`.
13486    *
13487    * @static
13488    * @memberOf _
13489    * @category Utility
13490    * @param {Object} source The object of property values to match.
13491    * @returns {Function} Returns the new function.
13492    * @example
13493    *
13494    * var users = [
13495    *   { 'user': 'barney', 'age': 36, 'active': true },
13496    *   { 'user': 'fred',   'age': 40, 'active': false }
13497    * ];
13498    *
13499    * _.filter(users, _.matches({ 'age': 40, 'active': false }));
13500    * // => [{ 'user': 'fred', 'age': 40, 'active': false }]
13501    */
13502   function matches(source) {
13503     return baseMatches(baseClone(source, true));
13504   }
13505
13506   /**
13507    * Adds all own enumerable function properties of a source object to the
13508    * destination object. If `object` is a function then methods are added to
13509    * its prototype as well.
13510    *
13511    * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
13512    * avoid conflicts caused by modifying the original.
13513    *
13514    * @static
13515    * @memberOf _
13516    * @category Utility
13517    * @param {Function|Object} [object=lodash] The destination object.
13518    * @param {Object} source The object of functions to add.
13519    * @param {Object} [options] The options object.
13520    * @param {boolean} [options.chain=true] Specify whether the functions added
13521    *  are chainable.
13522    * @returns {Function|Object} Returns `object`.
13523    * @example
13524    *
13525    * function vowels(string) {
13526    *   return _.filter(string, function(v) {
13527    *     return /[aeiou]/i.test(v);
13528    *   });
13529    * }
13530    *
13531    * _.mixin({ 'vowels': vowels });
13532    * _.vowels('fred');
13533    * // => ['e']
13534    *
13535    * _('fred').vowels().value();
13536    * // => ['e']
13537    *
13538    * _.mixin({ 'vowels': vowels }, { 'chain': false });
13539    * _('fred').vowels();
13540    * // => ['e']
13541    */
13542   function mixin(object, source, options) {
13543     if (options == null) {
13544       var isObj = isObject(source),
13545           props = isObj ? keys(source) : null,
13546           methodNames = (props && props.length) ? baseFunctions(source, props) : null;
13547
13548       if (!(methodNames ? methodNames.length : isObj)) {
13549         methodNames = false;
13550         options = source;
13551         source = object;
13552         object = this;
13553       }
13554     }
13555     if (!methodNames) {
13556       methodNames = baseFunctions(source, keys(source));
13557     }
13558     var chain = true,
13559         index = -1,
13560         isFunc = isFunction(object),
13561         length = methodNames.length;
13562
13563     if (options === false) {
13564       chain = false;
13565     } else if (isObject(options) && 'chain' in options) {
13566       chain = options.chain;
13567     }
13568     while (++index < length) {
13569       var methodName = methodNames[index],
13570           func = source[methodName];
13571
13572       object[methodName] = func;
13573       if (isFunc) {
13574         object.prototype[methodName] = (function(func) {
13575           return function() {
13576             var chainAll = this.__chain__;
13577             if (chain || chainAll) {
13578               var result = object(this.__wrapped__),
13579                   actions = result.__actions__ = arrayCopy(this.__actions__);
13580
13581               actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
13582               result.__chain__ = chainAll;
13583               return result;
13584             }
13585             var args = [this.value()];
13586             push.apply(args, arguments);
13587             return func.apply(object, args);
13588           };
13589         }(func));
13590       }
13591     }
13592     return object;
13593   }
13594
13595   /**
13596    * A no-operation function that returns `undefined` regardless of the
13597    * arguments it receives.
13598    *
13599    * @static
13600    * @memberOf _
13601    * @category Utility
13602    * @example
13603    *
13604    * var object = { 'user': 'fred' };
13605    *
13606    * _.noop(object) === undefined;
13607    * // => true
13608    */
13609   function noop() {
13610     // No operation performed.
13611   }
13612
13613   /**
13614    * Creates a function that returns the property value at `path` on a
13615    * given object.
13616    *
13617    * @static
13618    * @memberOf _
13619    * @category Utility
13620    * @param {Array|string} path The path of the property to get.
13621    * @returns {Function} Returns the new function.
13622    * @example
13623    *
13624    * var objects = [
13625    *   { 'a': { 'b': { 'c': 2 } } },
13626    *   { 'a': { 'b': { 'c': 1 } } }
13627    * ];
13628    *
13629    * _.map(objects, _.property('a.b.c'));
13630    * // => [2, 1]
13631    *
13632    * _.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
13633    * // => [1, 2]
13634    */
13635   function property(path) {
13636     return isKey(path) ? baseProperty(path) : basePropertyDeep(path);
13637   }
13638
13639   /*------------------------------------------------------------------------*/
13640
13641   // Ensure wrappers are instances of `baseLodash`.
13642   lodash.prototype = baseLodash.prototype;
13643
13644   LodashWrapper.prototype = baseCreate(baseLodash.prototype);
13645   LodashWrapper.prototype.constructor = LodashWrapper;
13646
13647   LazyWrapper.prototype = baseCreate(baseLodash.prototype);
13648   LazyWrapper.prototype.constructor = LazyWrapper;
13649
13650   // Add functions to the `Set` cache.
13651   SetCache.prototype.push = cachePush;
13652
13653   // Add functions that return wrapped values when chaining.
13654   lodash.assign = assign;
13655   lodash.bind = bind;
13656   lodash.callback = callback;
13657   lodash.chain = chain;
13658   lodash.chunk = chunk;
13659   lodash.compact = compact;
13660   lodash.constant = constant;
13661   lodash.debounce = debounce;
13662   lodash.difference = difference;
13663   lodash.filter = filter;
13664   lodash.flatten = flatten;
13665   lodash.forEach = forEach;
13666   lodash.forOwn = forOwn;
13667   lodash.groupBy = groupBy;
13668   lodash.intersection = intersection;
13669   lodash.keys = keys;
13670   lodash.keysIn = keysIn;
13671   lodash.map = map;
13672   lodash.matches = matches;
13673   lodash.merge = merge;
13674   lodash.mixin = mixin;
13675   lodash.omit = omit;
13676   lodash.pairs = pairs;
13677   lodash.pick = pick;
13678   lodash.pluck = pluck;
13679   lodash.property = property;
13680   lodash.reject = reject;
13681   lodash.restParam = restParam;
13682   lodash.tap = tap;
13683   lodash.throttle = throttle;
13684   lodash.thru = thru;
13685   lodash.toPlainObject = toPlainObject;
13686   lodash.union = union;
13687   lodash.uniq = uniq;
13688   lodash.values = values;
13689   lodash.without = without;
13690
13691   // Add aliases.
13692   lodash.collect = map;
13693   lodash.each = forEach;
13694   lodash.extend = assign;
13695   lodash.iteratee = callback;
13696   lodash.select = filter;
13697   lodash.unique = uniq;
13698
13699   // Add functions to `lodash.prototype`.
13700   mixin(lodash, lodash);
13701
13702   /*------------------------------------------------------------------------*/
13703
13704   // Add functions that return unwrapped values when chaining.
13705   lodash.clone = clone;
13706   lodash.cloneDeep = cloneDeep;
13707   lodash.escapeRegExp = escapeRegExp;
13708   lodash.every = every;
13709   lodash.find = find;
13710   lodash.first = first;
13711   lodash.identity = identity;
13712   lodash.includes = includes;
13713   lodash.indexOf = indexOf;
13714   lodash.isArguments = isArguments;
13715   lodash.isArray = isArray;
13716   lodash.isEmpty = isEmpty;
13717   lodash.isEqual = isEqual;
13718   lodash.isFunction = isFunction;
13719   lodash.isNative = isNative;
13720   lodash.isObject = isObject;
13721   lodash.isPlainObject = isPlainObject;
13722   lodash.isString = isString;
13723   lodash.isTypedArray = isTypedArray;
13724   lodash.last = last;
13725   lodash.noop = noop;
13726   lodash.now = now;
13727   lodash.reduce = reduce;
13728   lodash.some = some;
13729
13730   // Add aliases.
13731   lodash.all = every;
13732   lodash.any = some;
13733   lodash.contains = includes;
13734   lodash.eq = isEqual;
13735   lodash.detect = find;
13736   lodash.foldl = reduce;
13737   lodash.head = first;
13738   lodash.include = includes;
13739   lodash.inject = reduce;
13740
13741   mixin(lodash, (function() {
13742     var source = {};
13743     baseForOwn(lodash, function(func, methodName) {
13744       if (!lodash.prototype[methodName]) {
13745         source[methodName] = func;
13746       }
13747     });
13748     return source;
13749   }()), false);
13750
13751   /*------------------------------------------------------------------------*/
13752
13753   lodash.prototype.sample = function(n) {
13754     if (!this.__chain__ && n == null) {
13755       return sample(this.value());
13756     }
13757     return this.thru(function(value) {
13758       return sample(value, n);
13759     });
13760   };
13761
13762   /*------------------------------------------------------------------------*/
13763
13764   /**
13765    * The semantic version number.
13766    *
13767    * @static
13768    * @memberOf _
13769    * @type string
13770    */
13771   lodash.VERSION = VERSION;
13772
13773   // Assign default placeholders.
13774   bind.placeholder = lodash;
13775
13776   // Add `LazyWrapper` methods that accept an `iteratee` value.
13777   arrayEach(['dropWhile', 'filter', 'map', 'takeWhile'], function(methodName, type) {
13778     var isFilter = type != LAZY_MAP_FLAG,
13779         isDropWhile = type == LAZY_DROP_WHILE_FLAG;
13780
13781     LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
13782       var filtered = this.__filtered__,
13783           result = (filtered && isDropWhile) ? new LazyWrapper(this) : this.clone(),
13784           iteratees = result.__iteratees__ || (result.__iteratees__ = []);
13785
13786       iteratees.push({
13787         'done': false,
13788         'count': 0,
13789         'index': 0,
13790         'iteratee': getCallback(iteratee, thisArg, 1),
13791         'limit': -1,
13792         'type': type
13793       });
13794
13795       result.__filtered__ = filtered || isFilter;
13796       return result;
13797     };
13798   });
13799
13800   // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
13801   arrayEach(['drop', 'take'], function(methodName, index) {
13802     var whileName = methodName + 'While';
13803
13804     LazyWrapper.prototype[methodName] = function(n) {
13805       var filtered = this.__filtered__,
13806           result = (filtered && !index) ? this.dropWhile() : this.clone();
13807
13808       n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
13809       if (filtered) {
13810         if (index) {
13811           result.__takeCount__ = nativeMin(result.__takeCount__, n);
13812         } else {
13813           last(result.__iteratees__).limit = n;
13814         }
13815       } else {
13816         var views = result.__views__ || (result.__views__ = []);
13817         views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
13818       }
13819       return result;
13820     };
13821
13822     LazyWrapper.prototype[methodName + 'Right'] = function(n) {
13823       return this.reverse()[methodName](n).reverse();
13824     };
13825
13826     LazyWrapper.prototype[methodName + 'RightWhile'] = function(predicate, thisArg) {
13827       return this.reverse()[whileName](predicate, thisArg).reverse();
13828     };
13829   });
13830
13831   // Add `LazyWrapper` methods for `_.first` and `_.last`.
13832   arrayEach(['first', 'last'], function(methodName, index) {
13833     var takeName = 'take' + (index ? 'Right' : '');
13834
13835     LazyWrapper.prototype[methodName] = function() {
13836       return this[takeName](1).value()[0];
13837     };
13838   });
13839
13840   // Add `LazyWrapper` methods for `_.initial` and `_.rest`.
13841   arrayEach(['initial', 'rest'], function(methodName, index) {
13842     var dropName = 'drop' + (index ? '' : 'Right');
13843
13844     LazyWrapper.prototype[methodName] = function() {
13845       return this[dropName](1);
13846     };
13847   });
13848
13849   // Add `LazyWrapper` methods for `_.pluck` and `_.where`.
13850   arrayEach(['pluck', 'where'], function(methodName, index) {
13851     var operationName = index ? 'filter' : 'map',
13852         createCallback = index ? baseMatches : property;
13853
13854     LazyWrapper.prototype[methodName] = function(value) {
13855       return this[operationName](createCallback(value));
13856     };
13857   });
13858
13859   LazyWrapper.prototype.compact = function() {
13860     return this.filter(identity);
13861   };
13862
13863   LazyWrapper.prototype.reject = function(predicate, thisArg) {
13864     predicate = getCallback(predicate, thisArg, 1);
13865     return this.filter(function(value) {
13866       return !predicate(value);
13867     });
13868   };
13869
13870   LazyWrapper.prototype.slice = function(start, end) {
13871     start = start == null ? 0 : (+start || 0);
13872
13873     var result = this;
13874     if (start < 0) {
13875       result = this.takeRight(-start);
13876     } else if (start) {
13877       result = this.drop(start);
13878     }
13879     if (end !== undefined) {
13880       end = (+end || 0);
13881       result = end < 0 ? result.dropRight(-end) : result.take(end - start);
13882     }
13883     return result;
13884   };
13885
13886   LazyWrapper.prototype.toArray = function() {
13887     return this.drop(0);
13888   };
13889
13890   // Add `LazyWrapper` methods to `lodash.prototype`.
13891   baseForOwn(LazyWrapper.prototype, function(func, methodName) {
13892     var lodashFunc = lodash[methodName];
13893     if (!lodashFunc) {
13894       return;
13895     }
13896     var checkIteratee = /^(?:filter|map|reject)|While$/.test(methodName),
13897         retUnwrapped = /^(?:first|last)$/.test(methodName);
13898
13899     lodash.prototype[methodName] = function() {
13900       var args = arguments,
13901           chainAll = this.__chain__,
13902           value = this.__wrapped__,
13903           isHybrid = !!this.__actions__.length,
13904           isLazy = value instanceof LazyWrapper,
13905           iteratee = args[0],
13906           useLazy = isLazy || isArray(value);
13907
13908       if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
13909         // avoid lazy use if the iteratee has a "length" value other than `1`
13910         isLazy = useLazy = false;
13911       }
13912       var onlyLazy = isLazy && !isHybrid;
13913       if (retUnwrapped && !chainAll) {
13914         return onlyLazy
13915           ? func.call(value)
13916           : lodashFunc.call(lodash, this.value());
13917       }
13918       var interceptor = function(value) {
13919         var otherArgs = [value];
13920         push.apply(otherArgs, args);
13921         return lodashFunc.apply(lodash, otherArgs);
13922       };
13923       if (useLazy) {
13924         var wrapper = onlyLazy ? value : new LazyWrapper(this),
13925             result = func.apply(wrapper, args);
13926
13927         if (!retUnwrapped && (isHybrid || result.__actions__)) {
13928           var actions = result.__actions__ || (result.__actions__ = []);
13929           actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
13930         }
13931         return new LodashWrapper(result, chainAll);
13932       }
13933       return this.thru(interceptor);
13934     };
13935   });
13936
13937   // Add `Array` and `String` methods to `lodash.prototype`.
13938   arrayEach(['concat', 'join', 'pop', 'push', 'replace', 'shift', 'sort', 'splice', 'split', 'unshift'], function(methodName) {
13939     var protoFunc = (/^(?:replace|split)$/.test(methodName) ? stringProto : arrayProto)[methodName],
13940         chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
13941         fixObjects = !support.spliceObjects && /^(?:pop|shift|splice)$/.test(methodName),
13942         retUnwrapped = /^(?:join|pop|replace|shift)$/.test(methodName);
13943
13944     // Avoid array-like object bugs with `Array#shift` and `Array#splice` in
13945     // IE < 9, Firefox < 10, and RingoJS.
13946     var func = !fixObjects ? protoFunc : function() {
13947       var result = protoFunc.apply(this, arguments);
13948       if (this.length === 0) {
13949         delete this[0];
13950       }
13951       return result;
13952     };
13953
13954     lodash.prototype[methodName] = function() {
13955       var args = arguments;
13956       if (retUnwrapped && !this.__chain__) {
13957         return func.apply(this.value(), args);
13958       }
13959       return this[chainName](function(value) {
13960         return func.apply(value, args);
13961       });
13962     };
13963   });
13964
13965   // Map minified function names to their real names.
13966   baseForOwn(LazyWrapper.prototype, function(func, methodName) {
13967     var lodashFunc = lodash[methodName];
13968     if (lodashFunc) {
13969       var key = lodashFunc.name,
13970           names = realNames[key] || (realNames[key] = []);
13971
13972       names.push({ 'name': methodName, 'func': lodashFunc });
13973     }
13974   });
13975
13976   realNames[createHybridWrapper(null, BIND_KEY_FLAG).name] = [{ 'name': 'wrapper', 'func': null }];
13977
13978   // Add functions to the lazy wrapper.
13979   LazyWrapper.prototype.clone = lazyClone;
13980   LazyWrapper.prototype.reverse = lazyReverse;
13981   LazyWrapper.prototype.value = lazyValue;
13982
13983   // Add chaining functions to the `lodash` wrapper.
13984   lodash.prototype.chain = wrapperChain;
13985   lodash.prototype.commit = wrapperCommit;
13986   lodash.prototype.plant = wrapperPlant;
13987   lodash.prototype.reverse = wrapperReverse;
13988   lodash.prototype.toString = wrapperToString;
13989   lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
13990
13991   // Add function aliases to the `lodash` wrapper.
13992   lodash.prototype.collect = lodash.prototype.map;
13993   lodash.prototype.head = lodash.prototype.first;
13994   lodash.prototype.select = lodash.prototype.filter;
13995   lodash.prototype.tail = lodash.prototype.rest;
13996
13997   /*--------------------------------------------------------------------------*/
13998
13999   if (freeExports && freeModule) {
14000     // Export for Node.js or RingoJS.
14001     if (moduleExports) {
14002       (freeModule.exports = lodash)._ = lodash;
14003     }
14004   }
14005   else {
14006     // Export for a browser or Rhino.
14007     root._ = lodash;
14008   }
14009 }.call(this));
14010 (function(e){if("function"==typeof bootstrap)bootstrap("osmauth",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeOsmAuth=e}else"undefined"!=typeof window?window.osmAuth=e():global.osmAuth=e()})(function(){var define,ses,bootstrap,module,exports;
14011 return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){
14012 'use strict';
14013
14014 var ohauth = require('ohauth'),
14015     xtend = require('xtend'),
14016     store = require('store');
14017
14018 // # osm-auth
14019 //
14020 // This code is only compatible with IE10+ because the [XDomainRequest](http://bit.ly/LfO7xo)
14021 // object, IE<10's idea of [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing),
14022 // does not support custom headers, which this uses everywhere.
14023 module.exports = function(o) {
14024
14025     var oauth = {};
14026
14027     // authenticated users will also have a request token secret, but it's
14028     // not used in transactions with the server
14029     oauth.authenticated = function() {
14030         return !!(token('oauth_token') && token('oauth_token_secret'));
14031     };
14032
14033     oauth.logout = function() {
14034         token('oauth_token', '');
14035         token('oauth_token_secret', '');
14036         token('oauth_request_token_secret', '');
14037         return oauth;
14038     };
14039
14040     // TODO: detect lack of click event
14041     oauth.authenticate = function(callback) {
14042         if (oauth.authenticated()) return callback();
14043
14044         oauth.logout();
14045
14046         // ## Getting a request token
14047         var params = timenonce(getAuth(o)),
14048             url = o.url + '/oauth/request_token';
14049
14050         params.oauth_signature = ohauth.signature(
14051             o.oauth_secret, '',
14052             ohauth.baseString('POST', url, params));
14053
14054         if (!o.singlepage) {
14055             // Create a 600x550 popup window in the center of the screen
14056             var w = 600, h = 550,
14057                 settings = [
14058                     ['width', w], ['height', h],
14059                     ['left', screen.width / 2 - w / 2],
14060                     ['top', screen.height / 2 - h / 2]].map(function(x) {
14061                         return x.join('=');
14062                     }).join(','),
14063                 popup = window.open('about:blank', 'oauth_window', settings);
14064         }
14065
14066         // Request a request token. When this is complete, the popup
14067         // window is redirected to OSM's authorization page.
14068         ohauth.xhr('POST', url, params, null, {}, reqTokenDone);
14069         o.loading();
14070
14071         function reqTokenDone(err, xhr) {
14072             o.done();
14073             if (err) return callback(err);
14074             var resp = ohauth.stringQs(xhr.response);
14075             token('oauth_request_token_secret', resp.oauth_token_secret);
14076             var authorize_url = o.url + '/oauth/authorize?' + ohauth.qsString({
14077                 oauth_token: resp.oauth_token,
14078                 oauth_callback: location.href.replace('index.html', '')
14079                     .replace(/#.*/, '') + o.landing
14080             });
14081
14082             if (o.singlepage) {
14083                 location.href = authorize_url;
14084             } else {
14085                 popup.location = authorize_url;
14086             }
14087         }
14088
14089         // Called by a function in a landing page, in the popup window. The
14090         // window closes itself.
14091         window.authComplete = function(token) {
14092             var oauth_token = ohauth.stringQs(token.split('?')[1]);
14093             get_access_token(oauth_token.oauth_token);
14094             delete window.authComplete;
14095         };
14096
14097         // ## Getting an request token
14098         //
14099         // At this point we have an `oauth_token`, brought in from a function
14100         // call on a landing page popup.
14101         function get_access_token(oauth_token) {
14102             var url = o.url + '/oauth/access_token',
14103                 params = timenonce(getAuth(o)),
14104                 request_token_secret = token('oauth_request_token_secret');
14105             params.oauth_token = oauth_token;
14106             params.oauth_signature = ohauth.signature(
14107                 o.oauth_secret,
14108                 request_token_secret,
14109                 ohauth.baseString('POST', url, params));
14110
14111             // ## Getting an access token
14112             //
14113             // The final token required for authentication. At this point
14114             // we have a `request token secret`
14115             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14116             o.loading();
14117         }
14118
14119         function accessTokenDone(err, xhr) {
14120             o.done();
14121             if (err) return callback(err);
14122             var access_token = ohauth.stringQs(xhr.response);
14123             token('oauth_token', access_token.oauth_token);
14124             token('oauth_token_secret', access_token.oauth_token_secret);
14125             callback(null, oauth);
14126         }
14127     };
14128
14129     oauth.bootstrapToken = function(oauth_token, callback) {
14130         // ## Getting an request token
14131         // At this point we have an `oauth_token`, brought in from a function
14132         // call on a landing page popup.
14133         function get_access_token(oauth_token) {
14134             var url = o.url + '/oauth/access_token',
14135                 params = timenonce(getAuth(o)),
14136                 request_token_secret = token('oauth_request_token_secret');
14137             params.oauth_token = oauth_token;
14138             params.oauth_signature = ohauth.signature(
14139                 o.oauth_secret,
14140                 request_token_secret,
14141                 ohauth.baseString('POST', url, params));
14142
14143             // ## Getting an access token
14144             // The final token required for authentication. At this point
14145             // we have a `request token secret`
14146             ohauth.xhr('POST', url, params, null, {}, accessTokenDone);
14147             o.loading();
14148         }
14149
14150         function accessTokenDone(err, xhr) {
14151             o.done();
14152             if (err) return callback(err);
14153             var access_token = ohauth.stringQs(xhr.response);
14154             token('oauth_token', access_token.oauth_token);
14155             token('oauth_token_secret', access_token.oauth_token_secret);
14156             callback(null, oauth);
14157         }
14158
14159         get_access_token(oauth_token);
14160     };
14161
14162     // # xhr
14163     //
14164     // A single XMLHttpRequest wrapper that does authenticated calls if the
14165     // user has logged in.
14166     oauth.xhr = function(options, callback) {
14167         if (!oauth.authenticated()) {
14168             if (o.auto) return oauth.authenticate(run);
14169             else return callback('not authenticated', null);
14170         } else return run();
14171
14172         function run() {
14173             var params = timenonce(getAuth(o)),
14174                 url = o.url + options.path,
14175                 oauth_token_secret = token('oauth_token_secret');
14176
14177             // https://tools.ietf.org/html/rfc5849#section-3.4.1.3.1
14178             if ((!options.options || !options.options.header ||
14179                 options.options.header['Content-Type'] === 'application/x-www-form-urlencoded') &&
14180                 options.content) {
14181                 params = xtend(params, ohauth.stringQs(options.content));
14182             }
14183
14184             params.oauth_token = token('oauth_token');
14185             params.oauth_signature = ohauth.signature(
14186                 o.oauth_secret,
14187                 oauth_token_secret,
14188                 ohauth.baseString(options.method, url, params));
14189
14190             ohauth.xhr(options.method,
14191                 url, params, options.content, options.options, done);
14192         }
14193
14194         function done(err, xhr) {
14195             if (err) return callback(err);
14196             else if (xhr.responseXML) return callback(err, xhr.responseXML);
14197             else return callback(err, xhr.response);
14198         }
14199     };
14200
14201     // pre-authorize this object, if we can just get a token and token_secret
14202     // from the start
14203     oauth.preauth = function(c) {
14204         if (!c) return;
14205         if (c.oauth_token) token('oauth_token', c.oauth_token);
14206         if (c.oauth_token_secret) token('oauth_token_secret', c.oauth_token_secret);
14207         return oauth;
14208     };
14209
14210     oauth.options = function(_) {
14211         if (!arguments.length) return o;
14212
14213         o = _;
14214
14215         o.url = o.url || 'http://www.openstreetmap.org';
14216         o.landing = o.landing || 'land.html';
14217
14218         o.singlepage = o.singlepage || false;
14219
14220         // Optional loading and loading-done functions for nice UI feedback.
14221         // by default, no-ops
14222         o.loading = o.loading || function() {};
14223         o.done = o.done || function() {};
14224
14225         return oauth.preauth(o);
14226     };
14227
14228     // 'stamp' an authentication object from `getAuth()`
14229     // with a [nonce](http://en.wikipedia.org/wiki/Cryptographic_nonce)
14230     // and timestamp
14231     function timenonce(o) {
14232         o.oauth_timestamp = ohauth.timestamp();
14233         o.oauth_nonce = ohauth.nonce();
14234         return o;
14235     }
14236
14237     // get/set tokens. These are prefixed with the base URL so that `osm-auth`
14238     // can be used with multiple APIs and the keys in `localStorage`
14239     // will not clash
14240     var token;
14241
14242     if (store.enabled) {
14243         token = function (x, y) {
14244             if (arguments.length === 1) return store.get(o.url + x);
14245             else if (arguments.length === 2) return store.set(o.url + x, y);
14246         };
14247     } else {
14248         var storage = {};
14249         token = function (x, y) {
14250             if (arguments.length === 1) return storage[o.url + x];
14251             else if (arguments.length === 2) return storage[o.url + x] = y;
14252         };
14253     }
14254
14255     // Get an authentication object. If you just add and remove properties
14256     // from a single object, you'll need to use `delete` to make sure that
14257     // it doesn't contain undesired properties for authentication
14258     function getAuth(o) {
14259         return {
14260             oauth_consumer_key: o.oauth_consumer_key,
14261             oauth_signature_method: "HMAC-SHA1"
14262         };
14263     }
14264
14265     // potentially pre-authorize
14266     oauth.options(o);
14267
14268     return oauth;
14269 };
14270
14271 },{"ohauth":2,"store":3,"xtend":4}],3:[function(require,module,exports){
14272 (function(global){;(function(win){
14273         var store = {},
14274                 doc = win.document,
14275                 localStorageName = 'localStorage',
14276                 storage
14277
14278         store.disabled = false
14279         store.set = function(key, value) {}
14280         store.get = function(key) {}
14281         store.remove = function(key) {}
14282         store.clear = function() {}
14283         store.transact = function(key, defaultVal, transactionFn) {
14284                 var val = store.get(key)
14285                 if (transactionFn == null) {
14286                         transactionFn = defaultVal
14287                         defaultVal = null
14288                 }
14289                 if (typeof val == 'undefined') { val = defaultVal || {} }
14290                 transactionFn(val)
14291                 store.set(key, val)
14292         }
14293         store.getAll = function() {}
14294         store.forEach = function() {}
14295
14296         store.serialize = function(value) {
14297                 return JSON.stringify(value)
14298         }
14299         store.deserialize = function(value) {
14300                 if (typeof value != 'string') { return undefined }
14301                 try { return JSON.parse(value) }
14302                 catch(e) { return value || undefined }
14303         }
14304
14305         // Functions to encapsulate questionable FireFox 3.6.13 behavior
14306         // when about.config::dom.storage.enabled === false
14307         // See https://github.com/marcuswestin/store.js/issues#issue/13
14308         function isLocalStorageNameSupported() {
14309                 try { return (localStorageName in win && win[localStorageName]) }
14310                 catch(err) { return false }
14311         }
14312
14313         if (isLocalStorageNameSupported()) {
14314                 storage = win[localStorageName]
14315                 store.set = function(key, val) {
14316                         if (val === undefined) { return store.remove(key) }
14317                         storage.setItem(key, store.serialize(val))
14318                         return val
14319                 }
14320                 store.get = function(key) { return store.deserialize(storage.getItem(key)) }
14321                 store.remove = function(key) { storage.removeItem(key) }
14322                 store.clear = function() { storage.clear() }
14323                 store.getAll = function() {
14324                         var ret = {}
14325                         store.forEach(function(key, val) {
14326                                 ret[key] = val
14327                         })
14328                         return ret
14329                 }
14330                 store.forEach = function(callback) {
14331                         for (var i=0; i<storage.length; i++) {
14332                                 var key = storage.key(i)
14333                                 callback(key, store.get(key))
14334                         }
14335                 }
14336         } else if (doc.documentElement.addBehavior) {
14337                 var storageOwner,
14338                         storageContainer
14339                 // Since #userData storage applies only to specific paths, we need to
14340                 // somehow link our data to a specific path.  We choose /favicon.ico
14341                 // as a pretty safe option, since all browsers already make a request to
14342                 // this URL anyway and being a 404 will not hurt us here.  We wrap an
14343                 // iframe pointing to the favicon in an ActiveXObject(htmlfile) object
14344                 // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)
14345                 // since the iframe access rules appear to allow direct access and
14346                 // manipulation of the document element, even for a 404 page.  This
14347                 // document can be used instead of the current document (which would
14348                 // have been limited to the current path) to perform #userData storage.
14349                 try {
14350                         storageContainer = new ActiveXObject('htmlfile')
14351                         storageContainer.open()
14352                         storageContainer.write('<s' + 'cript>document.w=window</s' + 'cript><iframe src="/favicon.ico"></iframe>')
14353                         storageContainer.close()
14354                         storageOwner = storageContainer.w.frames[0].document
14355                         storage = storageOwner.createElement('div')
14356                 } catch(e) {
14357                         // somehow ActiveXObject instantiation failed (perhaps some special
14358                         // security settings or otherwse), fall back to per-path storage
14359                         storage = doc.createElement('div')
14360                         storageOwner = doc.body
14361                 }
14362                 function withIEStorage(storeFunction) {
14363                         return function() {
14364                                 var args = Array.prototype.slice.call(arguments, 0)
14365                                 args.unshift(storage)
14366                                 // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
14367                                 // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
14368                                 storageOwner.appendChild(storage)
14369                                 storage.addBehavior('#default#userData')
14370                                 storage.load(localStorageName)
14371                                 var result = storeFunction.apply(store, args)
14372                                 storageOwner.removeChild(storage)
14373                                 return result
14374                         }
14375                 }
14376
14377                 // In IE7, keys may not contain special chars. See all of https://github.com/marcuswestin/store.js/issues/40
14378                 var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", "g")
14379                 function ieKeyFix(key) {
14380                         return key.replace(forbiddenCharsRegex, '___')
14381                 }
14382                 store.set = withIEStorage(function(storage, key, val) {
14383                         key = ieKeyFix(key)
14384                         if (val === undefined) { return store.remove(key) }
14385                         storage.setAttribute(key, store.serialize(val))
14386                         storage.save(localStorageName)
14387                         return val
14388                 })
14389                 store.get = withIEStorage(function(storage, key) {
14390                         key = ieKeyFix(key)
14391                         return store.deserialize(storage.getAttribute(key))
14392                 })
14393                 store.remove = withIEStorage(function(storage, key) {
14394                         key = ieKeyFix(key)
14395                         storage.removeAttribute(key)
14396                         storage.save(localStorageName)
14397                 })
14398                 store.clear = withIEStorage(function(storage) {
14399                         var attributes = storage.XMLDocument.documentElement.attributes
14400                         storage.load(localStorageName)
14401                         for (var i=0, attr; attr=attributes[i]; i++) {
14402                                 storage.removeAttribute(attr.name)
14403                         }
14404                         storage.save(localStorageName)
14405                 })
14406                 store.getAll = function(storage) {
14407                         var ret = {}
14408                         store.forEach(function(key, val) {
14409                                 ret[key] = val
14410                         })
14411                         return ret
14412                 }
14413                 store.forEach = withIEStorage(function(storage, callback) {
14414                         var attributes = storage.XMLDocument.documentElement.attributes
14415                         for (var i=0, attr; attr=attributes[i]; ++i) {
14416                                 callback(attr.name, store.deserialize(storage.getAttribute(attr.name)))
14417                         }
14418                 })
14419         }
14420
14421         try {
14422                 var testKey = '__storejs__'
14423                 store.set(testKey, testKey)
14424                 if (store.get(testKey) != testKey) { store.disabled = true }
14425                 store.remove(testKey)
14426         } catch(e) {
14427                 store.disabled = true
14428         }
14429         store.enabled = !store.disabled
14430         
14431         if (typeof module != 'undefined' && module.exports) { module.exports = store }
14432         else if (typeof define === 'function' && define.amd) { define(store) }
14433         else { win.store = store }
14434         
14435 })(this.window || global);
14436
14437 })(window)
14438 },{}],5:[function(require,module,exports){
14439 module.exports = hasKeys
14440
14441 function hasKeys(source) {
14442     return source !== null &&
14443         (typeof source === "object" ||
14444         typeof source === "function")
14445 }
14446
14447 },{}],4:[function(require,module,exports){
14448 var Keys = require("object-keys")
14449 var hasKeys = require("./has-keys")
14450
14451 module.exports = extend
14452
14453 function extend() {
14454     var target = {}
14455
14456     for (var i = 0; i < arguments.length; i++) {
14457         var source = arguments[i]
14458
14459         if (!hasKeys(source)) {
14460             continue
14461         }
14462
14463         var keys = Keys(source)
14464
14465         for (var j = 0; j < keys.length; j++) {
14466             var name = keys[j]
14467             target[name] = source[name]
14468         }
14469     }
14470
14471     return target
14472 }
14473
14474 },{"./has-keys":5,"object-keys":6}],7:[function(require,module,exports){
14475 (function(global){/**
14476  * jsHashes - A fast and independent hashing library pure JavaScript implemented (ES3 compliant) for both server and client side
14477  * 
14478  * @class Hashes
14479  * @author Tomas Aparicio <tomas@rijndael-project.com>
14480  * @license New BSD (see LICENSE file)
14481  * @version 1.0.4
14482  *
14483  * Algorithms specification:
14484  *
14485  * MD5 <http://www.ietf.org/rfc/rfc1321.txt>
14486  * RIPEMD-160 <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>
14487  * SHA1   <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14488  * SHA256 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14489  * SHA512 <http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf>
14490  * HMAC <http://www.ietf.org/rfc/rfc2104.txt>
14491  *
14492  */
14493 (function(){
14494   var Hashes;
14495   
14496   // private helper methods
14497   function utf8Encode(str) {
14498     var  x, y, output = '', i = -1, l;
14499     
14500     if (str && str.length) {
14501       l = str.length;
14502       while ((i+=1) < l) {
14503         /* Decode utf-16 surrogate pairs */
14504         x = str.charCodeAt(i);
14505         y = i + 1 < l ? str.charCodeAt(i + 1) : 0;
14506         if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
14507             x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
14508             i += 1;
14509         }
14510         /* Encode output as utf-8 */
14511         if (x <= 0x7F) {
14512             output += String.fromCharCode(x);
14513         } else if (x <= 0x7FF) {
14514             output += String.fromCharCode(0xC0 | ((x >>> 6 ) & 0x1F),
14515                         0x80 | ( x & 0x3F));
14516         } else if (x <= 0xFFFF) {
14517             output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F),
14518                         0x80 | ((x >>> 6 ) & 0x3F),
14519                         0x80 | ( x & 0x3F));
14520         } else if (x <= 0x1FFFFF) {
14521             output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07),
14522                         0x80 | ((x >>> 12) & 0x3F),
14523                         0x80 | ((x >>> 6 ) & 0x3F),
14524                         0x80 | ( x & 0x3F));
14525         }
14526       }
14527     }
14528     return output;
14529   }
14530   
14531   function utf8Decode(str) {
14532     var i, ac, c1, c2, c3, arr = [], l;
14533     i = ac = c1 = c2 = c3 = 0;
14534     
14535     if (str && str.length) {
14536       l = str.length;
14537       str += '';
14538     
14539       while (i < l) {
14540           c1 = str.charCodeAt(i);
14541           ac += 1;
14542           if (c1 < 128) {
14543               arr[ac] = String.fromCharCode(c1);
14544               i+=1;
14545           } else if (c1 > 191 && c1 < 224) {
14546               c2 = str.charCodeAt(i + 1);
14547               arr[ac] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
14548               i += 2;
14549           } else {
14550               c2 = str.charCodeAt(i + 1);
14551               c3 = str.charCodeAt(i + 2);
14552               arr[ac] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
14553               i += 3;
14554           }
14555       }
14556     }
14557     return arr.join('');
14558   }
14559
14560   /**
14561    * Add integers, wrapping at 2^32. This uses 16-bit operations internally
14562    * to work around bugs in some JS interpreters.
14563    */
14564   function safe_add(x, y) {
14565     var lsw = (x & 0xFFFF) + (y & 0xFFFF),
14566         msw = (x >> 16) + (y >> 16) + (lsw >> 16);
14567     return (msw << 16) | (lsw & 0xFFFF);
14568   }
14569
14570   /**
14571    * Bitwise rotate a 32-bit number to the left.
14572    */
14573   function bit_rol(num, cnt) {
14574     return (num << cnt) | (num >>> (32 - cnt));
14575   }
14576
14577   /**
14578    * Convert a raw string to a hex string
14579    */
14580   function rstr2hex(input, hexcase) {
14581     var hex_tab = hexcase ? '0123456789ABCDEF' : '0123456789abcdef',
14582         output = '', x, i = 0, l = input.length;
14583     for (; i < l; i+=1) {
14584       x = input.charCodeAt(i);
14585       output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F);
14586     }
14587     return output;
14588   }
14589
14590   /**
14591    * Encode a string as utf-16
14592    */
14593   function str2rstr_utf16le(input) {
14594     var i, l = input.length, output = '';
14595     for (i = 0; i < l; i+=1) {
14596       output += String.fromCharCode( input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);
14597     }
14598     return output;
14599   }
14600
14601   function str2rstr_utf16be(input) {
14602     var i, l = input.length, output = '';
14603     for (i = 0; i < l; i+=1) {
14604       output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);
14605     }
14606     return output;
14607   }
14608
14609   /**
14610    * Convert an array of big-endian words to a string
14611    */
14612   function binb2rstr(input) {
14613     var i, l = input.length * 32, output = '';
14614     for (i = 0; i < l; i += 8) {
14615         output += String.fromCharCode((input[i>>5] >>> (24 - i % 32)) & 0xFF);
14616     }
14617     return output;
14618   }
14619
14620   /**
14621    * Convert an array of little-endian words to a string
14622    */
14623   function binl2rstr(input) {
14624     var i, l = input.length * 32, output = '';
14625     for (i = 0;i < l; i += 8) {
14626       output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
14627     }
14628     return output;
14629   }
14630
14631   /**
14632    * Convert a raw string to an array of little-endian words
14633    * Characters >255 have their high-byte silently ignored.
14634    */
14635   function rstr2binl(input) {
14636     var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14637     for (i = 0; i < lo; i+=1) {
14638       output[i] = 0;
14639     }
14640     for (i = 0; i < l; i += 8) {
14641       output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (i%32);
14642     }
14643     return output;
14644   }
14645   
14646   /**
14647    * Convert a raw string to an array of big-endian words 
14648    * Characters >255 have their high-byte silently ignored.
14649    */
14650    function rstr2binb(input) {
14651       var i, l = input.length * 8, output = Array(input.length >> 2), lo = output.length;
14652       for (i = 0; i < lo; i+=1) {
14653             output[i] = 0;
14654         }
14655       for (i = 0; i < l; i += 8) {
14656             output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
14657         }
14658       return output;
14659    }
14660
14661   /**
14662    * Convert a raw string to an arbitrary string encoding
14663    */
14664   function rstr2any(input, encoding) {
14665     var divisor = encoding.length,
14666         remainders = Array(),
14667         i, q, x, ld, quotient, dividend, output, full_length;
14668   
14669     /* Convert to an array of 16-bit big-endian values, forming the dividend */
14670     dividend = Array(Math.ceil(input.length / 2));
14671     ld = dividend.length;
14672     for (i = 0; i < ld; i+=1) {
14673       dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1);
14674     }
14675   
14676     /**
14677      * Repeatedly perform a long division. The binary array forms the dividend,
14678      * the length of the encoding is the divisor. Once computed, the quotient
14679      * forms the dividend for the next step. We stop when the dividend is zerHashes.
14680      * All remainders are stored for later use.
14681      */
14682     while(dividend.length > 0) {
14683       quotient = Array();
14684       x = 0;
14685       for (i = 0; i < dividend.length; i+=1) {
14686         x = (x << 16) + dividend[i];
14687         q = Math.floor(x / divisor);
14688         x -= q * divisor;
14689         if (quotient.length > 0 || q > 0) {
14690           quotient[quotient.length] = q;
14691         }
14692       }
14693       remainders[remainders.length] = x;
14694       dividend = quotient;
14695     }
14696   
14697     /* Convert the remainders to the output string */
14698     output = '';
14699     for (i = remainders.length - 1; i >= 0; i--) {
14700       output += encoding.charAt(remainders[i]);
14701     }
14702   
14703     /* Append leading zero equivalents */
14704     full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
14705     for (i = output.length; i < full_length; i+=1) {
14706       output = encoding[0] + output;
14707     }
14708     return output;
14709   }
14710
14711   /**
14712    * Convert a raw string to a base-64 string
14713    */
14714   function rstr2b64(input, b64pad) {
14715     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14716         output = '',
14717         len = input.length, i, j, triplet;
14718     b64pad= b64pad || '=';
14719     for (i = 0; i < len; i += 3) {
14720       triplet = (input.charCodeAt(i) << 16)
14721             | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14722             | (i + 2 < len ? input.charCodeAt(i+2)      : 0);
14723       for (j = 0; j < 4; j+=1) {
14724         if (i * 8 + j * 6 > input.length * 8) { 
14725           output += b64pad; 
14726         } else { 
14727           output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F); 
14728         }
14729        }
14730     }
14731     return output;
14732   }
14733
14734   Hashes = {
14735   /**  
14736    * @property {String} version
14737    * @readonly
14738    */
14739   VERSION : '1.0.3',
14740   /**
14741    * @member Hashes
14742    * @class Base64
14743    * @constructor
14744    */
14745   Base64 : function () {
14746     // private properties
14747     var tab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
14748         pad = '=', // default pad according with the RFC standard
14749         url = false, // URL encoding support @todo
14750         utf8 = true; // by default enable UTF-8 support encoding
14751
14752     // public method for encoding
14753     this.encode = function (input) {
14754       var i, j, triplet,
14755           output = '', 
14756           len = input.length;
14757
14758       pad = pad || '=';
14759       input = (utf8) ? utf8Encode(input) : input;
14760
14761       for (i = 0; i < len; i += 3) {
14762         triplet = (input.charCodeAt(i) << 16)
14763               | (i + 1 < len ? input.charCodeAt(i+1) << 8 : 0)
14764               | (i + 2 < len ? input.charCodeAt(i+2) : 0);
14765         for (j = 0; j < 4; j+=1) {
14766           if (i * 8 + j * 6 > len * 8) {
14767               output += pad;
14768           } else {
14769               output += tab.charAt((triplet >>> 6*(3-j)) & 0x3F);
14770           }
14771         }
14772       }
14773       return output;    
14774     };
14775
14776     // public method for decoding
14777     this.decode = function (input) {
14778       // var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
14779       var i, o1, o2, o3, h1, h2, h3, h4, bits, ac,
14780         dec = '',
14781         arr = [];
14782       if (!input) { return input; }
14783
14784       i = ac = 0;
14785       input = input.replace(new RegExp('\\'+pad,'gi'),''); // use '='
14786       //input += '';
14787
14788       do { // unpack four hexets into three octets using index points in b64
14789         h1 = tab.indexOf(input.charAt(i+=1));
14790         h2 = tab.indexOf(input.charAt(i+=1));
14791         h3 = tab.indexOf(input.charAt(i+=1));
14792         h4 = tab.indexOf(input.charAt(i+=1));
14793
14794         bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
14795
14796         o1 = bits >> 16 & 0xff;
14797         o2 = bits >> 8 & 0xff;
14798         o3 = bits & 0xff;
14799         ac += 1;
14800
14801         if (h3 === 64) {
14802           arr[ac] = String.fromCharCode(o1);
14803         } else if (h4 === 64) {
14804           arr[ac] = String.fromCharCode(o1, o2);
14805         } else {
14806           arr[ac] = String.fromCharCode(o1, o2, o3);
14807         }
14808       } while (i < input.length);
14809
14810       dec = arr.join('');
14811       dec = (utf8) ? utf8Decode(dec) : dec;
14812
14813       return dec;
14814     };
14815
14816     // set custom pad string
14817     this.setPad = function (str) {
14818         pad = str || pad;
14819         return this;
14820     };
14821     // set custom tab string characters
14822     this.setTab = function (str) {
14823         tab = str || tab;
14824         return this;
14825     };
14826     this.setUTF8 = function (bool) {
14827         if (typeof bool === 'boolean') {
14828           utf8 = bool;
14829         }
14830         return this;
14831     };
14832   },
14833
14834   /**
14835    * CRC-32 calculation
14836    * @member Hashes
14837    * @method CRC32
14838    * @static
14839    * @param {String} str Input String
14840    * @return {String}
14841    */
14842   CRC32 : function (str) {
14843     var crc = 0, x = 0, y = 0, table, i, iTop;
14844     str = utf8Encode(str);
14845         
14846     table = [ 
14847         '00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 ',
14848         '79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 ',
14849         '84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F ',
14850         '63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD ',
14851         'A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC ',
14852         '51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 ',
14853         'B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 ',
14854         '06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 ',
14855         'E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 ',
14856         '12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 ',
14857         'D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 ',
14858         '33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 ',
14859         'CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 ',
14860         '9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E ',
14861         '7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D ',
14862         '806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 ',
14863         '60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA ',
14864         'AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 ', 
14865         '5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 ',
14866         'B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 ',
14867         '05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 ',
14868         'F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA ',
14869         '11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 ',
14870         'D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F ',
14871         '30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E ',
14872         'C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D'
14873     ].join('');
14874
14875     crc = crc ^ (-1);
14876     for (i = 0, iTop = str.length; i < iTop; i+=1 ) {
14877         y = ( crc ^ str.charCodeAt( i ) ) & 0xFF;
14878         x = '0x' + table.substr( y * 9, 8 );
14879         crc = ( crc >>> 8 ) ^ x;
14880     }
14881     // always return a positive number (that's what >>> 0 does)
14882     return (crc ^ (-1)) >>> 0;
14883   },
14884   /**
14885    * @member Hashes
14886    * @class MD5
14887    * @constructor
14888    * @param {Object} [config]
14889    * 
14890    * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
14891    * Digest Algorithm, as defined in RFC 1321.
14892    * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
14893    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
14894    * See <http://pajhome.org.uk/crypt/md5> for more infHashes.
14895    */
14896   MD5 : function (options) {  
14897     /**
14898      * Private config properties. You may need to tweak these to be compatible with
14899      * the server-side, but the defaults work in most cases.
14900      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
14901      */
14902     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
14903         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
14904         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
14905
14906     // privileged (public) methods 
14907     this.hex = function (s) { 
14908       return rstr2hex(rstr(s, utf8), hexcase);
14909     };
14910     this.b64 = function (s) { 
14911       return rstr2b64(rstr(s), b64pad);
14912     };
14913     this.any = function(s, e) { 
14914       return rstr2any(rstr(s, utf8), e); 
14915     };
14916     this.hex_hmac = function (k, d) { 
14917       return rstr2hex(rstr_hmac(k, d), hexcase); 
14918     };
14919     this.b64_hmac = function (k, d) { 
14920       return rstr2b64(rstr_hmac(k,d), b64pad); 
14921     };
14922     this.any_hmac = function (k, d, e) { 
14923       return rstr2any(rstr_hmac(k, d), e); 
14924     };
14925     /**
14926      * Perform a simple self-test to see if the VM is working
14927      * @return {String} Hexadecimal hash sample
14928      */
14929     this.vm_test = function () {
14930       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
14931     };
14932     /** 
14933      * Enable/disable uppercase hexadecimal returned string 
14934      * @param {Boolean} 
14935      * @return {Object} this
14936      */ 
14937     this.setUpperCase = function (a) {
14938       if (typeof a === 'boolean' ) {
14939         hexcase = a;
14940       }
14941       return this;
14942     };
14943     /** 
14944      * Defines a base64 pad string 
14945      * @param {String} Pad
14946      * @return {Object} this
14947      */ 
14948     this.setPad = function (a) {
14949       b64pad = a || b64pad;
14950       return this;
14951     };
14952     /** 
14953      * Defines a base64 pad string 
14954      * @param {Boolean} 
14955      * @return {Object} [this]
14956      */ 
14957     this.setUTF8 = function (a) {
14958       if (typeof a === 'boolean') { 
14959         utf8 = a;
14960       }
14961       return this;
14962     };
14963
14964     // private methods
14965
14966     /**
14967      * Calculate the MD5 of a raw string
14968      */
14969     function rstr(s) {
14970       s = (utf8) ? utf8Encode(s): s;
14971       return binl2rstr(binl(rstr2binl(s), s.length * 8));
14972     }
14973     
14974     /**
14975      * Calculate the HMAC-MD5, of a key and some data (raw strings)
14976      */
14977     function rstr_hmac(key, data) {
14978       var bkey, ipad, opad, hash, i;
14979
14980       key = (utf8) ? utf8Encode(key) : key;
14981       data = (utf8) ? utf8Encode(data) : data;
14982       bkey = rstr2binl(key);
14983       if (bkey.length > 16) { 
14984         bkey = binl(bkey, key.length * 8); 
14985       }
14986
14987       ipad = Array(16), opad = Array(16); 
14988       for (i = 0; i < 16; i+=1) {
14989           ipad[i] = bkey[i] ^ 0x36363636;
14990           opad[i] = bkey[i] ^ 0x5C5C5C5C;
14991       }
14992       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
14993       return binl2rstr(binl(opad.concat(hash), 512 + 128));
14994     }
14995
14996     /**
14997      * Calculate the MD5 of an array of little-endian words, and a bit length.
14998      */
14999     function binl(x, len) {
15000       var i, olda, oldb, oldc, oldd,
15001           a =  1732584193,
15002           b = -271733879,
15003           c = -1732584194,
15004           d =  271733878;
15005         
15006       /* append padding */
15007       x[len >> 5] |= 0x80 << ((len) % 32);
15008       x[(((len + 64) >>> 9) << 4) + 14] = len;
15009
15010       for (i = 0; i < x.length; i += 16) {
15011         olda = a;
15012         oldb = b;
15013         oldc = c;
15014         oldd = d;
15015
15016         a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
15017         d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
15018         c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
15019         b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
15020         a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
15021         d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
15022         c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
15023         b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
15024         a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
15025         d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
15026         c = md5_ff(c, d, a, b, x[i+10], 17, -42063);
15027         b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
15028         a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
15029         d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);
15030         c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
15031         b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
15032
15033         a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
15034         d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
15035         c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);
15036         b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
15037         a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
15038         d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
15039         c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);
15040         b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
15041         a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
15042         d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
15043         c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
15044         b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
15045         a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
15046         d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
15047         c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
15048         b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
15049
15050         a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
15051         d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
15052         c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
15053         b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);
15054         a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
15055         d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
15056         c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
15057         b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
15058         a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
15059         d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
15060         c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
15061         b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
15062         a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
15063         d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);
15064         c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);
15065         b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
15066
15067         a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
15068         d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
15069         c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
15070         b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
15071         a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
15072         d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
15073         c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);
15074         b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
15075         a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
15076         d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);
15077         c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
15078         b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
15079         a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
15080         d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
15081         c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
15082         b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
15083
15084         a = safe_add(a, olda);
15085         b = safe_add(b, oldb);
15086         c = safe_add(c, oldc);
15087         d = safe_add(d, oldd);
15088       }
15089       return Array(a, b, c, d);
15090     }
15091
15092     /**
15093      * These functions implement the four basic operations the algorithm uses.
15094      */
15095     function md5_cmn(q, a, b, x, s, t) {
15096       return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);
15097     }
15098     function md5_ff(a, b, c, d, x, s, t) {
15099       return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
15100     }
15101     function md5_gg(a, b, c, d, x, s, t) {
15102       return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
15103     }
15104     function md5_hh(a, b, c, d, x, s, t) {
15105       return md5_cmn(b ^ c ^ d, a, b, x, s, t);
15106     }
15107     function md5_ii(a, b, c, d, x, s, t) {
15108       return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
15109     }
15110   },
15111   /**
15112    * @member Hashes
15113    * @class Hashes.SHA1
15114    * @param {Object} [config]
15115    * @constructor
15116    * 
15117    * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined in FIPS 180-1
15118    * Version 2.2 Copyright Paul Johnston 2000 - 2009.
15119    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15120    * See http://pajhome.org.uk/crypt/md5 for details.
15121    */
15122   SHA1 : function (options) {
15123    /**
15124      * Private config properties. You may need to tweak these to be compatible with
15125      * the server-side, but the defaults work in most cases.
15126      * See {@link Hashes.MD5#method-setUpperCase} and {@link Hashes.SHA1#method-setUpperCase}
15127      */
15128     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase
15129         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', // base-64 pad character. Defaults to '=' for strict RFC compliance
15130         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true; // enable/disable utf8 encoding
15131
15132     // public methods
15133     this.hex = function (s) { 
15134         return rstr2hex(rstr(s, utf8), hexcase); 
15135     };
15136     this.b64 = function (s) { 
15137         return rstr2b64(rstr(s, utf8), b64pad);
15138     };
15139     this.any = function (s, e) { 
15140         return rstr2any(rstr(s, utf8), e);
15141     };
15142     this.hex_hmac = function (k, d) {
15143         return rstr2hex(rstr_hmac(k, d));
15144     };
15145     this.b64_hmac = function (k, d) { 
15146         return rstr2b64(rstr_hmac(k, d), b64pad); 
15147     };
15148     this.any_hmac = function (k, d, e) { 
15149         return rstr2any(rstr_hmac(k, d), e);
15150     };
15151     /**
15152      * Perform a simple self-test to see if the VM is working
15153      * @return {String} Hexadecimal hash sample
15154      * @public
15155      */
15156     this.vm_test = function () {
15157       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15158     };
15159     /** 
15160      * @description Enable/disable uppercase hexadecimal returned string 
15161      * @param {boolean} 
15162      * @return {Object} this
15163      * @public
15164      */ 
15165     this.setUpperCase = function (a) {
15166         if (typeof a === 'boolean') {
15167         hexcase = a;
15168       }
15169         return this;
15170     };
15171     /** 
15172      * @description Defines a base64 pad string 
15173      * @param {string} Pad
15174      * @return {Object} this
15175      * @public
15176      */ 
15177     this.setPad = function (a) {
15178       b64pad = a || b64pad;
15179         return this;
15180     };
15181     /** 
15182      * @description Defines a base64 pad string 
15183      * @param {boolean} 
15184      * @return {Object} this
15185      * @public
15186      */ 
15187     this.setUTF8 = function (a) {
15188         if (typeof a === 'boolean') {
15189         utf8 = a;
15190       }
15191         return this;
15192     };
15193
15194     // private methods
15195
15196     /**
15197          * Calculate the SHA-512 of a raw string
15198          */
15199         function rstr(s) {
15200       s = (utf8) ? utf8Encode(s) : s;
15201       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15202         }
15203
15204     /**
15205      * Calculate the HMAC-SHA1 of a key and some data (raw strings)
15206      */
15207     function rstr_hmac(key, data) {
15208         var bkey, ipad, opad, i, hash;
15209         key = (utf8) ? utf8Encode(key) : key;
15210         data = (utf8) ? utf8Encode(data) : data;
15211         bkey = rstr2binb(key);
15212
15213         if (bkey.length > 16) {
15214         bkey = binb(bkey, key.length * 8);
15215       }
15216         ipad = Array(16), opad = Array(16);
15217         for (i = 0; i < 16; i+=1) {
15218                 ipad[i] = bkey[i] ^ 0x36363636;
15219                 opad[i] = bkey[i] ^ 0x5C5C5C5C;
15220         }
15221         hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15222         return binb2rstr(binb(opad.concat(hash), 512 + 160));
15223     }
15224
15225     /**
15226      * Calculate the SHA-1 of an array of big-endian words, and a bit length
15227      */
15228     function binb(x, len) {
15229       var i, j, t, olda, oldb, oldc, oldd, olde,
15230           w = Array(80),
15231           a =  1732584193,
15232           b = -271733879,
15233           c = -1732584194,
15234           d =  271733878,
15235           e = -1009589776;
15236
15237       /* append padding */
15238       x[len >> 5] |= 0x80 << (24 - len % 32);
15239       x[((len + 64 >> 9) << 4) + 15] = len;
15240
15241       for (i = 0; i < x.length; i += 16) {
15242         olda = a,
15243         oldb = b;
15244         oldc = c;
15245         oldd = d;
15246         olde = e;
15247       
15248         for (j = 0; j < 80; j+=1)       {
15249           if (j < 16) { 
15250             w[j] = x[i + j]; 
15251           } else { 
15252             w[j] = bit_rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); 
15253           }
15254           t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)),
15255                                            safe_add(safe_add(e, w[j]), sha1_kt(j)));
15256           e = d;
15257           d = c;
15258           c = bit_rol(b, 30);
15259           b = a;
15260           a = t;
15261         }
15262
15263         a = safe_add(a, olda);
15264         b = safe_add(b, oldb);
15265         c = safe_add(c, oldc);
15266         d = safe_add(d, oldd);
15267         e = safe_add(e, olde);
15268       }
15269       return Array(a, b, c, d, e);
15270     }
15271
15272     /**
15273      * Perform the appropriate triplet combination function for the current
15274      * iteration
15275      */
15276     function sha1_ft(t, b, c, d) {
15277       if (t < 20) { return (b & c) | ((~b) & d); }
15278       if (t < 40) { return b ^ c ^ d; }
15279       if (t < 60) { return (b & c) | (b & d) | (c & d); }
15280       return b ^ c ^ d;
15281     }
15282
15283     /**
15284      * Determine the appropriate additive constant for the current iteration
15285      */
15286     function sha1_kt(t) {
15287       return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
15288                  (t < 60) ? -1894007588 : -899497514;
15289     }
15290   },
15291   /**
15292    * @class Hashes.SHA256
15293    * @param {config}
15294    * 
15295    * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined in FIPS 180-2
15296    * Version 2.2 Copyright Angel Marin, Paul Johnston 2000 - 2009.
15297    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15298    * See http://pajhome.org.uk/crypt/md5 for details.
15299    * Also http://anmar.eu.org/projects/jssha2/
15300    */
15301   SHA256 : function (options) {
15302     /**
15303      * Private properties configuration variables. You may need to tweak these to be compatible with
15304      * the server-side, but the defaults work in most cases.
15305      * @see this.setUpperCase() method
15306      * @see this.setPad() method
15307      */
15308     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false, // hexadecimal output case format. false - lowercase; true - uppercase  */
15309               b64pad = (options && typeof options.pad === 'string') ? options.pda : '=', /* base-64 pad character. Default '=' for strict RFC compliance   */
15310               utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15311               sha256_K;
15312
15313     /* privileged (public) methods */
15314     this.hex = function (s) { 
15315       return rstr2hex(rstr(s, utf8)); 
15316     };
15317     this.b64 = function (s) { 
15318       return rstr2b64(rstr(s, utf8), b64pad);
15319     };
15320     this.any = function (s, e) { 
15321       return rstr2any(rstr(s, utf8), e); 
15322     };
15323     this.hex_hmac = function (k, d) { 
15324       return rstr2hex(rstr_hmac(k, d)); 
15325     };
15326     this.b64_hmac = function (k, d) { 
15327       return rstr2b64(rstr_hmac(k, d), b64pad);
15328     };
15329     this.any_hmac = function (k, d, e) { 
15330       return rstr2any(rstr_hmac(k, d), e); 
15331     };
15332     /**
15333      * Perform a simple self-test to see if the VM is working
15334      * @return {String} Hexadecimal hash sample
15335      * @public
15336      */
15337     this.vm_test = function () {
15338       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15339     };
15340     /** 
15341      * Enable/disable uppercase hexadecimal returned string 
15342      * @param {boolean} 
15343      * @return {Object} this
15344      * @public
15345      */ 
15346     this.setUpperCase = function (a) {
15347       if (typeof a === 'boolean') { 
15348         hexcase = a;
15349       }
15350       return this;
15351     };
15352     /** 
15353      * @description Defines a base64 pad string 
15354      * @param {string} Pad
15355      * @return {Object} this
15356      * @public
15357      */ 
15358     this.setPad = function (a) {
15359       b64pad = a || b64pad;
15360       return this;
15361     };
15362     /** 
15363      * Defines a base64 pad string 
15364      * @param {boolean} 
15365      * @return {Object} this
15366      * @public
15367      */ 
15368     this.setUTF8 = function (a) {
15369       if (typeof a === 'boolean') {
15370         utf8 = a;
15371       }
15372       return this;
15373     };
15374     
15375     // private methods
15376
15377     /**
15378      * Calculate the SHA-512 of a raw string
15379      */
15380     function rstr(s, utf8) {
15381       s = (utf8) ? utf8Encode(s) : s;
15382       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15383     }
15384
15385     /**
15386      * Calculate the HMAC-sha256 of a key and some data (raw strings)
15387      */
15388     function rstr_hmac(key, data) {
15389       key = (utf8) ? utf8Encode(key) : key;
15390       data = (utf8) ? utf8Encode(data) : data;
15391       var hash, i = 0,
15392           bkey = rstr2binb(key), 
15393           ipad = Array(16), 
15394           opad = Array(16);
15395
15396       if (bkey.length > 16) { bkey = binb(bkey, key.length * 8); }
15397       
15398       for (; i < 16; i+=1) {
15399         ipad[i] = bkey[i] ^ 0x36363636;
15400         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15401       }
15402       
15403       hash = binb(ipad.concat(rstr2binb(data)), 512 + data.length * 8);
15404       return binb2rstr(binb(opad.concat(hash), 512 + 256));
15405     }
15406     
15407     /*
15408      * Main sha256 function, with its support functions
15409      */
15410     function sha256_S (X, n) {return ( X >>> n ) | (X << (32 - n));}
15411     function sha256_R (X, n) {return ( X >>> n );}
15412     function sha256_Ch(x, y, z) {return ((x & y) ^ ((~x) & z));}
15413     function sha256_Maj(x, y, z) {return ((x & y) ^ (x & z) ^ (y & z));}
15414     function sha256_Sigma0256(x) {return (sha256_S(x, 2) ^ sha256_S(x, 13) ^ sha256_S(x, 22));}
15415     function sha256_Sigma1256(x) {return (sha256_S(x, 6) ^ sha256_S(x, 11) ^ sha256_S(x, 25));}
15416     function sha256_Gamma0256(x) {return (sha256_S(x, 7) ^ sha256_S(x, 18) ^ sha256_R(x, 3));}
15417     function sha256_Gamma1256(x) {return (sha256_S(x, 17) ^ sha256_S(x, 19) ^ sha256_R(x, 10));}
15418     function sha256_Sigma0512(x) {return (sha256_S(x, 28) ^ sha256_S(x, 34) ^ sha256_S(x, 39));}
15419     function sha256_Sigma1512(x) {return (sha256_S(x, 14) ^ sha256_S(x, 18) ^ sha256_S(x, 41));}
15420     function sha256_Gamma0512(x) {return (sha256_S(x, 1)  ^ sha256_S(x, 8) ^ sha256_R(x, 7));}
15421     function sha256_Gamma1512(x) {return (sha256_S(x, 19) ^ sha256_S(x, 61) ^ sha256_R(x, 6));}
15422     
15423     sha256_K = [
15424       1116352408, 1899447441, -1245643825, -373957723, 961987163, 1508970993,
15425       -1841331548, -1424204075, -670586216, 310598401, 607225278, 1426881987,
15426       1925078388, -2132889090, -1680079193, -1046744716, -459576895, -272742522,
15427       264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,
15428       -1740746414, -1473132947, -1341970488, -1084653625, -958395405, -710438585,
15429       113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291,
15430       1695183700, 1986661051, -2117940946, -1838011259, -1564481375, -1474664885,
15431       -1035236496, -949202525, -778901479, -694614492, -200395387, 275423344,
15432       430227734, 506948616, 659060556, 883997877, 958139571, 1322822218,
15433       1537002063, 1747873779, 1955562222, 2024104815, -2067236844, -1933114872,
15434       -1866530822, -1538233109, -1090935817, -965641998
15435     ];
15436     
15437     function binb(m, l) {
15438       var HASH = [1779033703, -1150833019, 1013904242, -1521486534,
15439                  1359893119, -1694144372, 528734635, 1541459225];
15440       var W = new Array(64);
15441       var a, b, c, d, e, f, g, h;
15442       var i, j, T1, T2;
15443     
15444       /* append padding */
15445       m[l >> 5] |= 0x80 << (24 - l % 32);
15446       m[((l + 64 >> 9) << 4) + 15] = l;
15447     
15448       for (i = 0; i < m.length; i += 16)
15449       {
15450       a = HASH[0];
15451       b = HASH[1];
15452       c = HASH[2];
15453       d = HASH[3];
15454       e = HASH[4];
15455       f = HASH[5];
15456       g = HASH[6];
15457       h = HASH[7];
15458     
15459       for (j = 0; j < 64; j+=1)
15460       {
15461         if (j < 16) { 
15462           W[j] = m[j + i];
15463         } else { 
15464           W[j] = safe_add(safe_add(safe_add(sha256_Gamma1256(W[j - 2]), W[j - 7]),
15465                           sha256_Gamma0256(W[j - 15])), W[j - 16]);
15466         }
15467     
15468         T1 = safe_add(safe_add(safe_add(safe_add(h, sha256_Sigma1256(e)), sha256_Ch(e, f, g)),
15469                                   sha256_K[j]), W[j]);
15470         T2 = safe_add(sha256_Sigma0256(a), sha256_Maj(a, b, c));
15471         h = g;
15472         g = f;
15473         f = e;
15474         e = safe_add(d, T1);
15475         d = c;
15476         c = b;
15477         b = a;
15478         a = safe_add(T1, T2);
15479       }
15480     
15481       HASH[0] = safe_add(a, HASH[0]);
15482       HASH[1] = safe_add(b, HASH[1]);
15483       HASH[2] = safe_add(c, HASH[2]);
15484       HASH[3] = safe_add(d, HASH[3]);
15485       HASH[4] = safe_add(e, HASH[4]);
15486       HASH[5] = safe_add(f, HASH[5]);
15487       HASH[6] = safe_add(g, HASH[6]);
15488       HASH[7] = safe_add(h, HASH[7]);
15489       }
15490       return HASH;
15491     }
15492
15493   },
15494
15495   /**
15496    * @class Hashes.SHA512
15497    * @param {config}
15498    * 
15499    * A JavaScript implementation of the Secure Hash Algorithm, SHA-512, as defined in FIPS 180-2
15500    * Version 2.2 Copyright Anonymous Contributor, Paul Johnston 2000 - 2009.
15501    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15502    * See http://pajhome.org.uk/crypt/md5 for details. 
15503    */
15504   SHA512 : function (options) {
15505     /**
15506      * Private properties configuration variables. You may need to tweak these to be compatible with
15507      * the server-side, but the defaults work in most cases.
15508      * @see this.setUpperCase() method
15509      * @see this.setPad() method
15510      */
15511     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false , /* hexadecimal output case format. false - lowercase; true - uppercase  */
15512         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15513         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15514         sha512_k;
15515
15516     /* privileged (public) methods */
15517     this.hex = function (s) { 
15518       return rstr2hex(rstr(s)); 
15519     };
15520     this.b64 = function (s) { 
15521       return rstr2b64(rstr(s), b64pad);  
15522     };
15523     this.any = function (s, e) { 
15524       return rstr2any(rstr(s), e);
15525     };
15526     this.hex_hmac = function (k, d) {
15527       return rstr2hex(rstr_hmac(k, d));
15528     };
15529     this.b64_hmac = function (k, d) { 
15530       return rstr2b64(rstr_hmac(k, d), b64pad);
15531     };
15532     this.any_hmac = function (k, d, e) { 
15533       return rstr2any(rstr_hmac(k, d), e);
15534     };
15535     /**
15536      * Perform a simple self-test to see if the VM is working
15537      * @return {String} Hexadecimal hash sample
15538      * @public
15539      */
15540     this.vm_test = function () {
15541       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15542     };
15543     /** 
15544      * @description Enable/disable uppercase hexadecimal returned string 
15545      * @param {boolean} 
15546      * @return {Object} this
15547      * @public
15548      */ 
15549     this.setUpperCase = function (a) {
15550       if (typeof a === 'boolean') {
15551         hexcase = a;
15552       }
15553       return this;
15554     };
15555     /** 
15556      * @description Defines a base64 pad string 
15557      * @param {string} Pad
15558      * @return {Object} this
15559      * @public
15560      */ 
15561     this.setPad = function (a) {
15562       b64pad = a || b64pad;
15563       return this;
15564     };
15565     /** 
15566      * @description Defines a base64 pad string 
15567      * @param {boolean} 
15568      * @return {Object} this
15569      * @public
15570      */ 
15571     this.setUTF8 = function (a) {
15572       if (typeof a === 'boolean') {
15573         utf8 = a;
15574       }
15575       return this;
15576     };
15577
15578     /* private methods */
15579     
15580     /**
15581      * Calculate the SHA-512 of a raw string
15582      */
15583     function rstr(s) {
15584       s = (utf8) ? utf8Encode(s) : s;
15585       return binb2rstr(binb(rstr2binb(s), s.length * 8));
15586     }
15587     /*
15588      * Calculate the HMAC-SHA-512 of a key and some data (raw strings)
15589      */
15590     function rstr_hmac(key, data) {
15591       key = (utf8) ? utf8Encode(key) : key;
15592       data = (utf8) ? utf8Encode(data) : data;
15593       
15594       var hash, i = 0, 
15595           bkey = rstr2binb(key),
15596           ipad = Array(32), opad = Array(32);
15597
15598       if (bkey.length > 32) { bkey = binb(bkey, key.length * 8); }
15599       
15600       for (; i < 32; i+=1) {
15601         ipad[i] = bkey[i] ^ 0x36363636;
15602         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15603       }
15604       
15605       hash = binb(ipad.concat(rstr2binb(data)), 1024 + data.length * 8);
15606       return binb2rstr(binb(opad.concat(hash), 1024 + 512));
15607     }
15608             
15609     /**
15610      * Calculate the SHA-512 of an array of big-endian dwords, and a bit length
15611      */
15612     function binb(x, len) {
15613       var j, i, l,
15614           W = new Array(80),
15615           hash = new Array(16),
15616           //Initial hash values
15617           H = [
15618             new int64(0x6a09e667, -205731576),
15619             new int64(-1150833019, -2067093701),
15620             new int64(0x3c6ef372, -23791573),
15621             new int64(-1521486534, 0x5f1d36f1),
15622             new int64(0x510e527f, -1377402159),
15623             new int64(-1694144372, 0x2b3e6c1f),
15624             new int64(0x1f83d9ab, -79577749),
15625             new int64(0x5be0cd19, 0x137e2179)
15626           ],
15627           T1 = new int64(0, 0),
15628           T2 = new int64(0, 0),
15629           a = new int64(0,0),
15630           b = new int64(0,0),
15631           c = new int64(0,0),
15632           d = new int64(0,0),
15633           e = new int64(0,0),
15634           f = new int64(0,0),
15635           g = new int64(0,0),
15636           h = new int64(0,0),
15637           //Temporary variables not specified by the document
15638           s0 = new int64(0, 0),
15639           s1 = new int64(0, 0),
15640           Ch = new int64(0, 0),
15641           Maj = new int64(0, 0),
15642           r1 = new int64(0, 0),
15643           r2 = new int64(0, 0),
15644           r3 = new int64(0, 0);
15645
15646       if (sha512_k === undefined) {
15647           //SHA512 constants
15648           sha512_k = [
15649             new int64(0x428a2f98, -685199838), new int64(0x71374491, 0x23ef65cd),
15650             new int64(-1245643825, -330482897), new int64(-373957723, -2121671748),
15651             new int64(0x3956c25b, -213338824), new int64(0x59f111f1, -1241133031),
15652             new int64(-1841331548, -1357295717), new int64(-1424204075, -630357736),
15653             new int64(-670586216, -1560083902), new int64(0x12835b01, 0x45706fbe),
15654             new int64(0x243185be, 0x4ee4b28c), new int64(0x550c7dc3, -704662302),
15655             new int64(0x72be5d74, -226784913), new int64(-2132889090, 0x3b1696b1),
15656             new int64(-1680079193, 0x25c71235), new int64(-1046744716, -815192428),
15657             new int64(-459576895, -1628353838), new int64(-272742522, 0x384f25e3),
15658             new int64(0xfc19dc6, -1953704523), new int64(0x240ca1cc, 0x77ac9c65),
15659             new int64(0x2de92c6f, 0x592b0275), new int64(0x4a7484aa, 0x6ea6e483),
15660             new int64(0x5cb0a9dc, -1119749164), new int64(0x76f988da, -2096016459),
15661             new int64(-1740746414, -295247957), new int64(-1473132947, 0x2db43210),
15662             new int64(-1341970488, -1728372417), new int64(-1084653625, -1091629340),
15663             new int64(-958395405, 0x3da88fc2), new int64(-710438585, -1828018395),
15664             new int64(0x6ca6351, -536640913), new int64(0x14292967, 0xa0e6e70),
15665             new int64(0x27b70a85, 0x46d22ffc), new int64(0x2e1b2138, 0x5c26c926),
15666             new int64(0x4d2c6dfc, 0x5ac42aed), new int64(0x53380d13, -1651133473),
15667             new int64(0x650a7354, -1951439906), new int64(0x766a0abb, 0x3c77b2a8),
15668             new int64(-2117940946, 0x47edaee6), new int64(-1838011259, 0x1482353b),
15669             new int64(-1564481375, 0x4cf10364), new int64(-1474664885, -1136513023),
15670             new int64(-1035236496, -789014639), new int64(-949202525, 0x654be30),
15671             new int64(-778901479, -688958952), new int64(-694614492, 0x5565a910),
15672             new int64(-200395387, 0x5771202a), new int64(0x106aa070, 0x32bbd1b8),
15673             new int64(0x19a4c116, -1194143544), new int64(0x1e376c08, 0x5141ab53),
15674             new int64(0x2748774c, -544281703), new int64(0x34b0bcb5, -509917016),
15675             new int64(0x391c0cb3, -976659869), new int64(0x4ed8aa4a, -482243893),
15676             new int64(0x5b9cca4f, 0x7763e373), new int64(0x682e6ff3, -692930397),
15677             new int64(0x748f82ee, 0x5defb2fc), new int64(0x78a5636f, 0x43172f60),
15678             new int64(-2067236844, -1578062990), new int64(-1933114872, 0x1a6439ec),
15679             new int64(-1866530822, 0x23631e28), new int64(-1538233109, -561857047),
15680             new int64(-1090935817, -1295615723), new int64(-965641998, -479046869),
15681             new int64(-903397682, -366583396), new int64(-779700025, 0x21c0c207),
15682             new int64(-354779690, -840897762), new int64(-176337025, -294727304),
15683             new int64(0x6f067aa, 0x72176fba), new int64(0xa637dc5, -1563912026),
15684             new int64(0x113f9804, -1090974290), new int64(0x1b710b35, 0x131c471b),
15685             new int64(0x28db77f5, 0x23047d84), new int64(0x32caab7b, 0x40c72493),
15686             new int64(0x3c9ebe0a, 0x15c9bebc), new int64(0x431d67c4, -1676669620),
15687             new int64(0x4cc5d4be, -885112138), new int64(0x597f299c, -60457430),
15688             new int64(0x5fcb6fab, 0x3ad6faec), new int64(0x6c44198c, 0x4a475817)
15689           ];
15690       }
15691   
15692       for (i=0; i<80; i+=1) {
15693         W[i] = new int64(0, 0);
15694       }
15695     
15696       // append padding to the source string. The format is described in the FIPS.
15697       x[len >> 5] |= 0x80 << (24 - (len & 0x1f));
15698       x[((len + 128 >> 10)<< 5) + 31] = len;
15699       l = x.length;
15700       for (i = 0; i<l; i+=32) { //32 dwords is the block size
15701         int64copy(a, H[0]);
15702         int64copy(b, H[1]);
15703         int64copy(c, H[2]);
15704         int64copy(d, H[3]);
15705         int64copy(e, H[4]);
15706         int64copy(f, H[5]);
15707         int64copy(g, H[6]);
15708         int64copy(h, H[7]);
15709       
15710         for (j=0; j<16; j+=1) {
15711           W[j].h = x[i + 2*j];
15712           W[j].l = x[i + 2*j + 1];
15713         }
15714       
15715         for (j=16; j<80; j+=1) {
15716           //sigma1
15717           int64rrot(r1, W[j-2], 19);
15718           int64revrrot(r2, W[j-2], 29);
15719           int64shr(r3, W[j-2], 6);
15720           s1.l = r1.l ^ r2.l ^ r3.l;
15721           s1.h = r1.h ^ r2.h ^ r3.h;
15722           //sigma0
15723           int64rrot(r1, W[j-15], 1);
15724           int64rrot(r2, W[j-15], 8);
15725           int64shr(r3, W[j-15], 7);
15726           s0.l = r1.l ^ r2.l ^ r3.l;
15727           s0.h = r1.h ^ r2.h ^ r3.h;
15728       
15729           int64add4(W[j], s1, W[j-7], s0, W[j-16]);
15730         }
15731       
15732         for (j = 0; j < 80; j+=1) {
15733           //Ch
15734           Ch.l = (e.l & f.l) ^ (~e.l & g.l);
15735           Ch.h = (e.h & f.h) ^ (~e.h & g.h);
15736       
15737           //Sigma1
15738           int64rrot(r1, e, 14);
15739           int64rrot(r2, e, 18);
15740           int64revrrot(r3, e, 9);
15741           s1.l = r1.l ^ r2.l ^ r3.l;
15742           s1.h = r1.h ^ r2.h ^ r3.h;
15743       
15744           //Sigma0
15745           int64rrot(r1, a, 28);
15746           int64revrrot(r2, a, 2);
15747           int64revrrot(r3, a, 7);
15748           s0.l = r1.l ^ r2.l ^ r3.l;
15749           s0.h = r1.h ^ r2.h ^ r3.h;
15750       
15751           //Maj
15752           Maj.l = (a.l & b.l) ^ (a.l & c.l) ^ (b.l & c.l);
15753           Maj.h = (a.h & b.h) ^ (a.h & c.h) ^ (b.h & c.h);
15754       
15755           int64add5(T1, h, s1, Ch, sha512_k[j], W[j]);
15756           int64add(T2, s0, Maj);
15757       
15758           int64copy(h, g);
15759           int64copy(g, f);
15760           int64copy(f, e);
15761           int64add(e, d, T1);
15762           int64copy(d, c);
15763           int64copy(c, b);
15764           int64copy(b, a);
15765           int64add(a, T1, T2);
15766         }
15767         int64add(H[0], H[0], a);
15768         int64add(H[1], H[1], b);
15769         int64add(H[2], H[2], c);
15770         int64add(H[3], H[3], d);
15771         int64add(H[4], H[4], e);
15772         int64add(H[5], H[5], f);
15773         int64add(H[6], H[6], g);
15774         int64add(H[7], H[7], h);
15775       }
15776     
15777       //represent the hash as an array of 32-bit dwords
15778       for (i=0; i<8; i+=1) {
15779         hash[2*i] = H[i].h;
15780         hash[2*i + 1] = H[i].l;
15781       }
15782       return hash;
15783     }
15784     
15785     //A constructor for 64-bit numbers
15786     function int64(h, l) {
15787       this.h = h;
15788       this.l = l;
15789       //this.toString = int64toString;
15790     }
15791     
15792     //Copies src into dst, assuming both are 64-bit numbers
15793     function int64copy(dst, src) {
15794       dst.h = src.h;
15795       dst.l = src.l;
15796     }
15797     
15798     //Right-rotates a 64-bit number by shift
15799     //Won't handle cases of shift>=32
15800     //The function revrrot() is for that
15801     function int64rrot(dst, x, shift) {
15802       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15803       dst.h = (x.h >>> shift) | (x.l << (32-shift));
15804     }
15805     
15806     //Reverses the dwords of the source and then rotates right by shift.
15807     //This is equivalent to rotation by 32+shift
15808     function int64revrrot(dst, x, shift) {
15809       dst.l = (x.h >>> shift) | (x.l << (32-shift));
15810       dst.h = (x.l >>> shift) | (x.h << (32-shift));
15811     }
15812     
15813     //Bitwise-shifts right a 64-bit number by shift
15814     //Won't handle shift>=32, but it's never needed in SHA512
15815     function int64shr(dst, x, shift) {
15816       dst.l = (x.l >>> shift) | (x.h << (32-shift));
15817       dst.h = (x.h >>> shift);
15818     }
15819     
15820     //Adds two 64-bit numbers
15821     //Like the original implementation, does not rely on 32-bit operations
15822     function int64add(dst, x, y) {
15823        var w0 = (x.l & 0xffff) + (y.l & 0xffff);
15824        var w1 = (x.l >>> 16) + (y.l >>> 16) + (w0 >>> 16);
15825        var w2 = (x.h & 0xffff) + (y.h & 0xffff) + (w1 >>> 16);
15826        var w3 = (x.h >>> 16) + (y.h >>> 16) + (w2 >>> 16);
15827        dst.l = (w0 & 0xffff) | (w1 << 16);
15828        dst.h = (w2 & 0xffff) | (w3 << 16);
15829     }
15830     
15831     //Same, except with 4 addends. Works faster than adding them one by one.
15832     function int64add4(dst, a, b, c, d) {
15833        var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff);
15834        var w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (w0 >>> 16);
15835        var w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (w1 >>> 16);
15836        var w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (w2 >>> 16);
15837        dst.l = (w0 & 0xffff) | (w1 << 16);
15838        dst.h = (w2 & 0xffff) | (w3 << 16);
15839     }
15840     
15841     //Same, except with 5 addends
15842     function int64add5(dst, a, b, c, d, e) {
15843       var w0 = (a.l & 0xffff) + (b.l & 0xffff) + (c.l & 0xffff) + (d.l & 0xffff) + (e.l & 0xffff),
15844           w1 = (a.l >>> 16) + (b.l >>> 16) + (c.l >>> 16) + (d.l >>> 16) + (e.l >>> 16) + (w0 >>> 16),
15845           w2 = (a.h & 0xffff) + (b.h & 0xffff) + (c.h & 0xffff) + (d.h & 0xffff) + (e.h & 0xffff) + (w1 >>> 16),
15846           w3 = (a.h >>> 16) + (b.h >>> 16) + (c.h >>> 16) + (d.h >>> 16) + (e.h >>> 16) + (w2 >>> 16);
15847        dst.l = (w0 & 0xffff) | (w1 << 16);
15848        dst.h = (w2 & 0xffff) | (w3 << 16);
15849     }
15850   },
15851   /**
15852    * @class Hashes.RMD160
15853    * @constructor
15854    * @param {Object} [config]
15855    * 
15856    * A JavaScript implementation of the RIPEMD-160 Algorithm
15857    * Version 2.2 Copyright Jeremy Lin, Paul Johnston 2000 - 2009.
15858    * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
15859    * See http://pajhome.org.uk/crypt/md5 for details.
15860    * Also http://www.ocf.berkeley.edu/~jjlin/jsotp/
15861    */
15862   RMD160 : function (options) {
15863     /**
15864      * Private properties configuration variables. You may need to tweak these to be compatible with
15865      * the server-side, but the defaults work in most cases.
15866      * @see this.setUpperCase() method
15867      * @see this.setPad() method
15868      */
15869     var hexcase = (options && typeof options.uppercase === 'boolean') ? options.uppercase : false,   /* hexadecimal output case format. false - lowercase; true - uppercase  */
15870         b64pad = (options && typeof options.pad === 'string') ? options.pda : '=',  /* base-64 pad character. Default '=' for strict RFC compliance   */
15871         utf8 = (options && typeof options.utf8 === 'boolean') ? options.utf8 : true, /* enable/disable utf8 encoding */
15872         rmd160_r1 = [
15873            0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
15874            7,  4, 13,  1, 10,  6, 15,  3, 12,  0,  9,  5,  2, 14, 11,  8,
15875            3, 10, 14,  4,  9, 15,  8,  1,  2,  7,  0,  6, 13, 11,  5, 12,
15876            1,  9, 11, 10,  0,  8, 12,  4, 13,  3,  7, 15, 14,  5,  6,  2,
15877            4,  0,  5,  9,  7, 12,  2, 10, 14,  1,  3,  8, 11,  6, 15, 13
15878         ],
15879         rmd160_r2 = [
15880            5, 14,  7,  0,  9,  2, 11,  4, 13,  6, 15,  8,  1, 10,  3, 12,
15881            6, 11,  3,  7,  0, 13,  5, 10, 14, 15,  8, 12,  4,  9,  1,  2,
15882           15,  5,  1,  3,  7, 14,  6,  9, 11,  8, 12,  2, 10,  0,  4, 13,
15883            8,  6,  4,  1,  3, 11, 15,  0,  5, 12,  2, 13,  9,  7, 10, 14,
15884           12, 15, 10,  4,  1,  5,  8,  7,  6,  2, 13, 14,  0,  3,  9, 11
15885         ],
15886         rmd160_s1 = [
15887           11, 14, 15, 12,  5,  8,  7,  9, 11, 13, 14, 15,  6,  7,  9,  8,
15888            7,  6,  8, 13, 11,  9,  7, 15,  7, 12, 15,  9, 11,  7, 13, 12,
15889           11, 13,  6,  7, 14,  9, 13, 15, 14,  8, 13,  6,  5, 12,  7,  5,
15890           11, 12, 14, 15, 14, 15,  9,  8,  9, 14,  5,  6,  8,  6,  5, 12,
15891            9, 15,  5, 11,  6,  8, 13, 12,  5, 12, 13, 14, 11,  8,  5,  6
15892         ],
15893         rmd160_s2 = [
15894            8,  9,  9, 11, 13, 15, 15,  5,  7,  7,  8, 11, 14, 14, 12,  6,
15895            9, 13, 15,  7, 12,  8,  9, 11,  7,  7, 12,  7,  6, 15, 13, 11,
15896            9,  7, 15, 11,  8,  6,  6, 14, 12, 13,  5, 14, 13, 13,  7,  5,
15897           15,  5,  8, 11, 14, 14,  6, 14,  6,  9, 12,  9, 12,  5, 15,  8,
15898            8,  5, 12,  9, 12,  5, 14,  6,  8, 13,  6,  5, 15, 13, 11, 11
15899         ];
15900
15901     /* privileged (public) methods */
15902     this.hex = function (s) {
15903       return rstr2hex(rstr(s, utf8)); 
15904     };
15905     this.b64 = function (s) {
15906       return rstr2b64(rstr(s, utf8), b64pad);
15907     };
15908     this.any = function (s, e) { 
15909       return rstr2any(rstr(s, utf8), e);
15910     };
15911     this.hex_hmac = function (k, d) { 
15912       return rstr2hex(rstr_hmac(k, d));
15913     };
15914     this.b64_hmac = function (k, d) { 
15915       return rstr2b64(rstr_hmac(k, d), b64pad);
15916     };
15917     this.any_hmac = function (k, d, e) { 
15918       return rstr2any(rstr_hmac(k, d), e); 
15919     };
15920     /**
15921      * Perform a simple self-test to see if the VM is working
15922      * @return {String} Hexadecimal hash sample
15923      * @public
15924      */
15925     this.vm_test = function () {
15926       return hex('abc').toLowerCase() === '900150983cd24fb0d6963f7d28e17f72';
15927     };
15928     /** 
15929      * @description Enable/disable uppercase hexadecimal returned string 
15930      * @param {boolean} 
15931      * @return {Object} this
15932      * @public
15933      */ 
15934     this.setUpperCase = function (a) {
15935       if (typeof a === 'boolean' ) { hexcase = a; }
15936       return this;
15937     };
15938     /** 
15939      * @description Defines a base64 pad string 
15940      * @param {string} Pad
15941      * @return {Object} this
15942      * @public
15943      */ 
15944     this.setPad = function (a) {
15945       if (typeof a !== 'undefined' ) { b64pad = a; }
15946       return this;
15947     };
15948     /** 
15949      * @description Defines a base64 pad string 
15950      * @param {boolean} 
15951      * @return {Object} this
15952      * @public
15953      */ 
15954     this.setUTF8 = function (a) {
15955       if (typeof a === 'boolean') { utf8 = a; }
15956       return this;
15957     };
15958
15959     /* private methods */
15960
15961     /**
15962      * Calculate the rmd160 of a raw string
15963      */
15964     function rstr(s) {
15965       s = (utf8) ? utf8Encode(s) : s;
15966       return binl2rstr(binl(rstr2binl(s), s.length * 8));
15967     }
15968
15969     /**
15970      * Calculate the HMAC-rmd160 of a key and some data (raw strings)
15971      */
15972     function rstr_hmac(key, data) {
15973       key = (utf8) ? utf8Encode(key) : key;
15974       data = (utf8) ? utf8Encode(data) : data;
15975       var i, hash,
15976           bkey = rstr2binl(key),
15977           ipad = Array(16), opad = Array(16);
15978
15979       if (bkey.length > 16) { 
15980         bkey = binl(bkey, key.length * 8); 
15981       }
15982       
15983       for (i = 0; i < 16; i+=1) {
15984         ipad[i] = bkey[i] ^ 0x36363636;
15985         opad[i] = bkey[i] ^ 0x5C5C5C5C;
15986       }
15987       hash = binl(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
15988       return binl2rstr(binl(opad.concat(hash), 512 + 160));
15989     }
15990
15991     /**
15992      * Convert an array of little-endian words to a string
15993      */
15994     function binl2rstr(input) {
15995       var i, output = '', l = input.length * 32;
15996       for (i = 0; i < l; i += 8) {
15997         output += String.fromCharCode((input[i>>5] >>> (i % 32)) & 0xFF);
15998       }
15999       return output;
16000     }
16001
16002     /**
16003      * Calculate the RIPE-MD160 of an array of little-endian words, and a bit length.
16004      */
16005     function binl(x, len) {
16006       var T, j, i, l,
16007           h0 = 0x67452301,
16008           h1 = 0xefcdab89,
16009           h2 = 0x98badcfe,
16010           h3 = 0x10325476,
16011           h4 = 0xc3d2e1f0,
16012           A1, B1, C1, D1, E1,
16013           A2, B2, C2, D2, E2;
16014
16015       /* append padding */
16016       x[len >> 5] |= 0x80 << (len % 32);
16017       x[(((len + 64) >>> 9) << 4) + 14] = len;
16018       l = x.length;
16019       
16020       for (i = 0; i < l; i+=16) {
16021         A1 = A2 = h0; B1 = B2 = h1; C1 = C2 = h2; D1 = D2 = h3; E1 = E2 = h4;
16022         for (j = 0; j <= 79; j+=1) {
16023           T = safe_add(A1, rmd160_f(j, B1, C1, D1));
16024           T = safe_add(T, x[i + rmd160_r1[j]]);
16025           T = safe_add(T, rmd160_K1(j));
16026           T = safe_add(bit_rol(T, rmd160_s1[j]), E1);
16027           A1 = E1; E1 = D1; D1 = bit_rol(C1, 10); C1 = B1; B1 = T;
16028           T = safe_add(A2, rmd160_f(79-j, B2, C2, D2));
16029           T = safe_add(T, x[i + rmd160_r2[j]]);
16030           T = safe_add(T, rmd160_K2(j));
16031           T = safe_add(bit_rol(T, rmd160_s2[j]), E2);
16032           A2 = E2; E2 = D2; D2 = bit_rol(C2, 10); C2 = B2; B2 = T;
16033         }
16034
16035         T = safe_add(h1, safe_add(C1, D2));
16036         h1 = safe_add(h2, safe_add(D1, E2));
16037         h2 = safe_add(h3, safe_add(E1, A2));
16038         h3 = safe_add(h4, safe_add(A1, B2));
16039         h4 = safe_add(h0, safe_add(B1, C2));
16040         h0 = T;
16041       }
16042       return [h0, h1, h2, h3, h4];
16043     }
16044
16045     // specific algorithm methods 
16046     function rmd160_f(j, x, y, z) {
16047       return ( 0 <= j && j <= 15) ? (x ^ y ^ z) :
16048          (16 <= j && j <= 31) ? (x & y) | (~x & z) :
16049          (32 <= j && j <= 47) ? (x | ~y) ^ z :
16050          (48 <= j && j <= 63) ? (x & z) | (y & ~z) :
16051          (64 <= j && j <= 79) ? x ^ (y | ~z) :
16052          'rmd160_f: j out of range';
16053     }
16054
16055     function rmd160_K1(j) {
16056       return ( 0 <= j && j <= 15) ? 0x00000000 :
16057          (16 <= j && j <= 31) ? 0x5a827999 :
16058          (32 <= j && j <= 47) ? 0x6ed9eba1 :
16059          (48 <= j && j <= 63) ? 0x8f1bbcdc :
16060          (64 <= j && j <= 79) ? 0xa953fd4e :
16061          'rmd160_K1: j out of range';
16062     }
16063
16064     function rmd160_K2(j){
16065       return ( 0 <= j && j <= 15) ? 0x50a28be6 :
16066          (16 <= j && j <= 31) ? 0x5c4dd124 :
16067          (32 <= j && j <= 47) ? 0x6d703ef3 :
16068          (48 <= j && j <= 63) ? 0x7a6d76e9 :
16069          (64 <= j && j <= 79) ? 0x00000000 :
16070          'rmd160_K2: j out of range';
16071     }
16072   }
16073 };
16074
16075   // exposes Hashes
16076   (function( window, undefined ) {
16077     var freeExports = false;
16078     if (typeof exports === 'object' ) {
16079       freeExports = exports;
16080       if (exports && typeof global === 'object' && global && global === global.global ) { window = global; }
16081     }
16082
16083     if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {
16084       // define as an anonymous module, so, through path mapping, it can be aliased
16085       define(function () { return Hashes; });
16086     }
16087     else if ( freeExports ) {
16088       // in Node.js or RingoJS v0.8.0+
16089       if ( typeof module === 'object' && module && module.exports === freeExports ) {
16090         module.exports = Hashes;
16091       }
16092       // in Narwhal or RingoJS v0.7.0-
16093       else {
16094         freeExports.Hashes = Hashes;
16095       }
16096     }
16097     else {
16098       // in a browser or Rhino
16099       window.Hashes = Hashes;
16100     }
16101   }( this ));
16102 }()); // IIFE
16103
16104 })(window)
16105 },{}],2:[function(require,module,exports){
16106 'use strict';
16107
16108 var hashes = require('jshashes'),
16109     xtend = require('xtend'),
16110     sha1 = new hashes.SHA1();
16111
16112 var ohauth = {};
16113
16114 ohauth.qsString = function(obj) {
16115     return Object.keys(obj).sort().map(function(key) {
16116         return ohauth.percentEncode(key) + '=' +
16117             ohauth.percentEncode(obj[key]);
16118     }).join('&');
16119 };
16120
16121 ohauth.stringQs = function(str) {
16122     return str.split('&').reduce(function(obj, pair){
16123         var parts = pair.split('=');
16124         obj[decodeURIComponent(parts[0])] = (null === parts[1]) ?
16125             '' : decodeURIComponent(parts[1]);
16126         return obj;
16127     }, {});
16128 };
16129
16130 ohauth.rawxhr = function(method, url, data, headers, callback) {
16131     var xhr = new XMLHttpRequest(),
16132         twoHundred = /^20\d$/;
16133     xhr.onreadystatechange = function() {
16134         if (4 == xhr.readyState && 0 !== xhr.status) {
16135             if (twoHundred.test(xhr.status)) callback(null, xhr);
16136             else return callback(xhr, null);
16137         }
16138     };
16139     xhr.onerror = function(e) { return callback(e, null); };
16140     xhr.open(method, url, true);
16141     for (var h in headers) xhr.setRequestHeader(h, headers[h]);
16142     xhr.send(data);
16143 };
16144
16145 ohauth.xhr = function(method, url, auth, data, options, callback) {
16146     var headers = (options && options.header) || {
16147         'Content-Type': 'application/x-www-form-urlencoded'
16148     };
16149     headers.Authorization = 'OAuth ' + ohauth.authHeader(auth);
16150     ohauth.rawxhr(method, url, data, headers, callback);
16151 };
16152
16153 ohauth.nonce = function() {
16154     for (var o = ''; o.length < 6;) {
16155         o += '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'[Math.floor(Math.random() * 61)];
16156     }
16157     return o;
16158 };
16159
16160 ohauth.authHeader = function(obj) {
16161     return Object.keys(obj).sort().map(function(key) {
16162         return encodeURIComponent(key) + '="' + encodeURIComponent(obj[key]) + '"';
16163     }).join(', ');
16164 };
16165
16166 ohauth.timestamp = function() { return ~~((+new Date()) / 1000); };
16167
16168 ohauth.percentEncode = function(s) {
16169     return encodeURIComponent(s)
16170         .replace(/\!/g, '%21').replace(/\'/g, '%27')
16171         .replace(/\*/g, '%2A').replace(/\(/g, '%28').replace(/\)/g, '%29');
16172 };
16173
16174 ohauth.baseString = function(method, url, params) {
16175     if (params.oauth_signature) delete params.oauth_signature;
16176     return [
16177         method,
16178         ohauth.percentEncode(url),
16179         ohauth.percentEncode(ohauth.qsString(params))].join('&');
16180 };
16181
16182 ohauth.signature = function(oauth_secret, token_secret, baseString) {
16183     return sha1.b64_hmac(
16184         ohauth.percentEncode(oauth_secret) + '&' +
16185         ohauth.percentEncode(token_secret),
16186         baseString);
16187 };
16188
16189 /**
16190  * Takes an options object for configuration (consumer_key,
16191  * consumer_secret, version, signature_method, token) and returns a
16192  * function that generates the Authorization header for given data.
16193  *
16194  * The returned function takes these parameters:
16195  * - method: GET/POST/...
16196  * - uri: full URI with protocol, port, path and query string
16197  * - extra_params: any extra parameters (that are passed in the POST data),
16198  *   can be an object or a from-urlencoded string.
16199  *
16200  * Returned function returns full OAuth header with "OAuth" string in it.
16201  */
16202
16203 ohauth.headerGenerator = function(options) {
16204     options = options || {};
16205     var consumer_key = options.consumer_key || '',
16206         consumer_secret = options.consumer_secret || '',
16207         signature_method = options.signature_method || 'HMAC-SHA1',
16208         version = options.version || '1.0',
16209         token = options.token || '';
16210
16211     return function(method, uri, extra_params) {
16212         method = method.toUpperCase();
16213         if (typeof extra_params === 'string' && extra_params.length > 0) {
16214             extra_params = ohauth.stringQs(extra_params);
16215         }
16216
16217         var uri_parts = uri.split('?', 2),
16218         base_uri = uri_parts[0];
16219
16220         var query_params = uri_parts.length === 2 ?
16221             ohauth.stringQs(uri_parts[1]) : {};
16222
16223         var oauth_params = {
16224             oauth_consumer_key: consumer_key,
16225             oauth_signature_method: signature_method,
16226             oauth_version: version,
16227             oauth_timestamp: ohauth.timestamp(),
16228             oauth_nonce: ohauth.nonce()
16229         };
16230
16231         if (token) oauth_params.oauth_token = token;
16232
16233         var all_params = xtend({}, oauth_params, query_params, extra_params),
16234             base_str = ohauth.baseString(method, base_uri, all_params);
16235
16236         oauth_params.oauth_signature = ohauth.signature(consumer_secret, token, base_str);
16237
16238         return 'OAuth ' + ohauth.authHeader(oauth_params);
16239     };
16240 };
16241
16242 module.exports = ohauth;
16243
16244 },{"jshashes":7,"xtend":4}],6:[function(require,module,exports){
16245 module.exports = Object.keys || require('./shim');
16246
16247
16248 },{"./shim":8}],8:[function(require,module,exports){
16249 (function () {
16250         "use strict";
16251
16252         // modified from https://github.com/kriskowal/es5-shim
16253         var has = Object.prototype.hasOwnProperty,
16254                 is = require('is'),
16255                 forEach = require('foreach'),
16256                 hasDontEnumBug = !({'toString': null}).propertyIsEnumerable('toString'),
16257                 dontEnums = [
16258                         "toString",
16259                         "toLocaleString",
16260                         "valueOf",
16261                         "hasOwnProperty",
16262                         "isPrototypeOf",
16263                         "propertyIsEnumerable",
16264                         "constructor"
16265                 ],
16266                 keysShim;
16267
16268         keysShim = function keys(object) {
16269                 if (!is.object(object) && !is.array(object)) {
16270                         throw new TypeError("Object.keys called on a non-object");
16271                 }
16272
16273                 var name, theKeys = [];
16274                 for (name in object) {
16275                         if (has.call(object, name)) {
16276                                 theKeys.push(name);
16277                         }
16278                 }
16279
16280                 if (hasDontEnumBug) {
16281                         forEach(dontEnums, function (dontEnum) {
16282                                 if (has.call(object, dontEnum)) {
16283                                         theKeys.push(dontEnum);
16284                                 }
16285                         });
16286                 }
16287                 return theKeys;
16288         };
16289
16290         module.exports = keysShim;
16291 }());
16292
16293
16294 },{"is":9,"foreach":10}],9:[function(require,module,exports){
16295
16296 /**!
16297  * is
16298  * the definitive JavaScript type testing library
16299  * 
16300  * @copyright 2013 Enrico Marino
16301  * @license MIT
16302  */
16303
16304 var objProto = Object.prototype;
16305 var owns = objProto.hasOwnProperty;
16306 var toString = objProto.toString;
16307 var isActualNaN = function (value) {
16308   return value !== value;
16309 };
16310 var NON_HOST_TYPES = {
16311   "boolean": 1,
16312   "number": 1,
16313   "string": 1,
16314   "undefined": 1
16315 };
16316
16317 /**
16318  * Expose `is`
16319  */
16320
16321 var is = module.exports = {};
16322
16323 /**
16324  * Test general.
16325  */
16326
16327 /**
16328  * is.type
16329  * Test if `value` is a type of `type`.
16330  *
16331  * @param {Mixed} value value to test
16332  * @param {String} type type
16333  * @return {Boolean} true if `value` is a type of `type`, false otherwise
16334  * @api public
16335  */
16336
16337 is.a =
16338 is.type = function (value, type) {
16339   return typeof value === type;
16340 };
16341
16342 /**
16343  * is.defined
16344  * Test if `value` is defined.
16345  *
16346  * @param {Mixed} value value to test
16347  * @return {Boolean} true if 'value' is defined, false otherwise
16348  * @api public
16349  */
16350
16351 is.defined = function (value) {
16352   return value !== undefined;
16353 };
16354
16355 /**
16356  * is.empty
16357  * Test if `value` is empty.
16358  *
16359  * @param {Mixed} value value to test
16360  * @return {Boolean} true if `value` is empty, false otherwise
16361  * @api public
16362  */
16363
16364 is.empty = function (value) {
16365   var type = toString.call(value);
16366   var key;
16367
16368   if ('[object Array]' === type || '[object Arguments]' === type) {
16369     return value.length === 0;
16370   }
16371
16372   if ('[object Object]' === type) {
16373     for (key in value) if (owns.call(value, key)) return false;
16374     return true;
16375   }
16376
16377   if ('[object String]' === type) {
16378     return '' === value;
16379   }
16380
16381   return false;
16382 };
16383
16384 /**
16385  * is.equal
16386  * Test if `value` is equal to `other`.
16387  *
16388  * @param {Mixed} value value to test
16389  * @param {Mixed} other value to compare with
16390  * @return {Boolean} true if `value` is equal to `other`, false otherwise
16391  */
16392
16393 is.equal = function (value, other) {
16394   var type = toString.call(value)
16395   var key;
16396
16397   if (type !== toString.call(other)) {
16398     return false;
16399   }
16400
16401   if ('[object Object]' === type) {
16402     for (key in value) {
16403       if (!is.equal(value[key], other[key])) {
16404         return false;
16405       }
16406     }
16407     return true;
16408   }
16409
16410   if ('[object Array]' === type) {
16411     key = value.length;
16412     if (key !== other.length) {
16413       return false;
16414     }
16415     while (--key) {
16416       if (!is.equal(value[key], other[key])) {
16417         return false;
16418       }
16419     }
16420     return true;
16421   }
16422
16423   if ('[object Function]' === type) {
16424     return value.prototype === other.prototype;
16425   }
16426
16427   if ('[object Date]' === type) {
16428     return value.getTime() === other.getTime();
16429   }
16430
16431   return value === other;
16432 };
16433
16434 /**
16435  * is.hosted
16436  * Test if `value` is hosted by `host`.
16437  *
16438  * @param {Mixed} value to test
16439  * @param {Mixed} host host to test with
16440  * @return {Boolean} true if `value` is hosted by `host`, false otherwise
16441  * @api public
16442  */
16443
16444 is.hosted = function (value, host) {
16445   var type = typeof host[value];
16446   return type === 'object' ? !!host[value] : !NON_HOST_TYPES[type];
16447 };
16448
16449 /**
16450  * is.instance
16451  * Test if `value` is an instance of `constructor`.
16452  *
16453  * @param {Mixed} value value to test
16454  * @return {Boolean} true if `value` is an instance of `constructor`
16455  * @api public
16456  */
16457
16458 is.instance = is['instanceof'] = function (value, constructor) {
16459   return value instanceof constructor;
16460 };
16461
16462 /**
16463  * is.null
16464  * Test if `value` is null.
16465  *
16466  * @param {Mixed} value value to test
16467  * @return {Boolean} true if `value` is null, false otherwise
16468  * @api public
16469  */
16470
16471 is['null'] = function (value) {
16472   return value === null;
16473 };
16474
16475 /**
16476  * is.undefined
16477  * Test if `value` is undefined.
16478  *
16479  * @param {Mixed} value value to test
16480  * @return {Boolean} true if `value` is undefined, false otherwise
16481  * @api public
16482  */
16483
16484 is.undefined = function (value) {
16485   return value === undefined;
16486 };
16487
16488 /**
16489  * Test arguments.
16490  */
16491
16492 /**
16493  * is.arguments
16494  * Test if `value` is an arguments object.
16495  *
16496  * @param {Mixed} value value to test
16497  * @return {Boolean} true if `value` is an arguments object, false otherwise
16498  * @api public
16499  */
16500
16501 is.arguments = function (value) {
16502   var isStandardArguments = '[object Arguments]' === toString.call(value);
16503   var isOldArguments = !is.array(value) && is.arraylike(value) && is.object(value) && is.fn(value.callee);
16504   return isStandardArguments || isOldArguments;
16505 };
16506
16507 /**
16508  * Test array.
16509  */
16510
16511 /**
16512  * is.array
16513  * Test if 'value' is an array.
16514  *
16515  * @param {Mixed} value value to test
16516  * @return {Boolean} true if `value` is an array, false otherwise
16517  * @api public
16518  */
16519
16520 is.array = function (value) {
16521   return '[object Array]' === toString.call(value);
16522 };
16523
16524 /**
16525  * is.arguments.empty
16526  * Test if `value` is an empty arguments object.
16527  *
16528  * @param {Mixed} value value to test
16529  * @return {Boolean} true if `value` is an empty arguments object, false otherwise
16530  * @api public
16531  */
16532 is.arguments.empty = function (value) {
16533   return is.arguments(value) && value.length === 0;
16534 };
16535
16536 /**
16537  * is.array.empty
16538  * Test if `value` is an empty array.
16539  *
16540  * @param {Mixed} value value to test
16541  * @return {Boolean} true if `value` is an empty array, false otherwise
16542  * @api public
16543  */
16544 is.array.empty = function (value) {
16545   return is.array(value) && value.length === 0;
16546 };
16547
16548 /**
16549  * is.arraylike
16550  * Test if `value` is an arraylike object.
16551  *
16552  * @param {Mixed} value value to test
16553  * @return {Boolean} true if `value` is an arguments object, false otherwise
16554  * @api public
16555  */
16556
16557 is.arraylike = function (value) {
16558   return !!value && !is.boolean(value)
16559     && owns.call(value, 'length')
16560     && isFinite(value.length)
16561     && is.number(value.length)
16562     && value.length >= 0;
16563 };
16564
16565 /**
16566  * Test boolean.
16567  */
16568
16569 /**
16570  * is.boolean
16571  * Test if `value` is a boolean.
16572  *
16573  * @param {Mixed} value value to test
16574  * @return {Boolean} true if `value` is a boolean, false otherwise
16575  * @api public
16576  */
16577
16578 is.boolean = function (value) {
16579   return '[object Boolean]' === toString.call(value);
16580 };
16581
16582 /**
16583  * is.false
16584  * Test if `value` is false.
16585  *
16586  * @param {Mixed} value value to test
16587  * @return {Boolean} true if `value` is false, false otherwise
16588  * @api public
16589  */
16590
16591 is['false'] = function (value) {
16592   return is.boolean(value) && (value === false || value.valueOf() === false);
16593 };
16594
16595 /**
16596  * is.true
16597  * Test if `value` is true.
16598  *
16599  * @param {Mixed} value value to test
16600  * @return {Boolean} true if `value` is true, false otherwise
16601  * @api public
16602  */
16603
16604 is['true'] = function (value) {
16605   return is.boolean(value) && (value === true || value.valueOf() === true);
16606 };
16607
16608 /**
16609  * Test date.
16610  */
16611
16612 /**
16613  * is.date
16614  * Test if `value` is a date.
16615  *
16616  * @param {Mixed} value value to test
16617  * @return {Boolean} true if `value` is a date, false otherwise
16618  * @api public
16619  */
16620
16621 is.date = function (value) {
16622   return '[object Date]' === toString.call(value);
16623 };
16624
16625 /**
16626  * Test element.
16627  */
16628
16629 /**
16630  * is.element
16631  * Test if `value` is an html element.
16632  *
16633  * @param {Mixed} value value to test
16634  * @return {Boolean} true if `value` is an HTML Element, false otherwise
16635  * @api public
16636  */
16637
16638 is.element = function (value) {
16639   return value !== undefined
16640     && typeof HTMLElement !== 'undefined'
16641     && value instanceof HTMLElement
16642     && value.nodeType === 1;
16643 };
16644
16645 /**
16646  * Test error.
16647  */
16648
16649 /**
16650  * is.error
16651  * Test if `value` is an error object.
16652  *
16653  * @param {Mixed} value value to test
16654  * @return {Boolean} true if `value` is an error object, false otherwise
16655  * @api public
16656  */
16657
16658 is.error = function (value) {
16659   return '[object Error]' === toString.call(value);
16660 };
16661
16662 /**
16663  * Test function.
16664  */
16665
16666 /**
16667  * is.fn / is.function (deprecated)
16668  * Test if `value` is a function.
16669  *
16670  * @param {Mixed} value value to test
16671  * @return {Boolean} true if `value` is a function, false otherwise
16672  * @api public
16673  */
16674
16675 is.fn = is['function'] = function (value) {
16676   var isAlert = typeof window !== 'undefined' && value === window.alert;
16677   return isAlert || '[object Function]' === toString.call(value);
16678 };
16679
16680 /**
16681  * Test number.
16682  */
16683
16684 /**
16685  * is.number
16686  * Test if `value` is a number.
16687  *
16688  * @param {Mixed} value value to test
16689  * @return {Boolean} true if `value` is a number, false otherwise
16690  * @api public
16691  */
16692
16693 is.number = function (value) {
16694   return '[object Number]' === toString.call(value);
16695 };
16696
16697 /**
16698  * is.infinite
16699  * Test if `value` is positive or negative infinity.
16700  *
16701  * @param {Mixed} value value to test
16702  * @return {Boolean} true if `value` is positive or negative Infinity, false otherwise
16703  * @api public
16704  */
16705 is.infinite = function (value) {
16706   return value === Infinity || value === -Infinity;
16707 };
16708
16709 /**
16710  * is.decimal
16711  * Test if `value` is a decimal number.
16712  *
16713  * @param {Mixed} value value to test
16714  * @return {Boolean} true if `value` is a decimal number, false otherwise
16715  * @api public
16716  */
16717
16718 is.decimal = function (value) {
16719   return is.number(value) && !isActualNaN(value) && value % 1 !== 0;
16720 };
16721
16722 /**
16723  * is.divisibleBy
16724  * Test if `value` is divisible by `n`.
16725  *
16726  * @param {Number} value value to test
16727  * @param {Number} n dividend
16728  * @return {Boolean} true if `value` is divisible by `n`, false otherwise
16729  * @api public
16730  */
16731
16732 is.divisibleBy = function (value, n) {
16733   var isDividendInfinite = is.infinite(value);
16734   var isDivisorInfinite = is.infinite(n);
16735   var isNonZeroNumber = is.number(value) && !isActualNaN(value) && is.number(n) && !isActualNaN(n) && n !== 0;
16736   return isDividendInfinite || isDivisorInfinite || (isNonZeroNumber && value % n === 0);
16737 };
16738
16739 /**
16740  * is.int
16741  * Test if `value` is an integer.
16742  *
16743  * @param value to test
16744  * @return {Boolean} true if `value` is an integer, false otherwise
16745  * @api public
16746  */
16747
16748 is.int = function (value) {
16749   return is.number(value) && !isActualNaN(value) && value % 1 === 0;
16750 };
16751
16752 /**
16753  * is.maximum
16754  * Test if `value` is greater than 'others' values.
16755  *
16756  * @param {Number} value value to test
16757  * @param {Array} others values to compare with
16758  * @return {Boolean} true if `value` is greater than `others` values
16759  * @api public
16760  */
16761
16762 is.maximum = function (value, others) {
16763   if (isActualNaN(value)) {
16764     throw new TypeError('NaN is not a valid value');
16765   } else if (!is.arraylike(others)) {
16766     throw new TypeError('second argument must be array-like');
16767   }
16768   var len = others.length;
16769
16770   while (--len >= 0) {
16771     if (value < others[len]) {
16772       return false;
16773     }
16774   }
16775
16776   return true;
16777 };
16778
16779 /**
16780  * is.minimum
16781  * Test if `value` is less than `others` values.
16782  *
16783  * @param {Number} value value to test
16784  * @param {Array} others values to compare with
16785  * @return {Boolean} true if `value` is less than `others` values
16786  * @api public
16787  */
16788
16789 is.minimum = function (value, others) {
16790   if (isActualNaN(value)) {
16791     throw new TypeError('NaN is not a valid value');
16792   } else if (!is.arraylike(others)) {
16793     throw new TypeError('second argument must be array-like');
16794   }
16795   var len = others.length;
16796
16797   while (--len >= 0) {
16798     if (value > others[len]) {
16799       return false;
16800     }
16801   }
16802
16803   return true;
16804 };
16805
16806 /**
16807  * is.nan
16808  * Test if `value` is not a number.
16809  *
16810  * @param {Mixed} value value to test
16811  * @return {Boolean} true if `value` is not a number, false otherwise
16812  * @api public
16813  */
16814
16815 is.nan = function (value) {
16816   return !is.number(value) || value !== value;
16817 };
16818
16819 /**
16820  * is.even
16821  * Test if `value` is an even number.
16822  *
16823  * @param {Number} value value to test
16824  * @return {Boolean} true if `value` is an even number, false otherwise
16825  * @api public
16826  */
16827
16828 is.even = function (value) {
16829   return is.infinite(value) || (is.number(value) && value === value && value % 2 === 0);
16830 };
16831
16832 /**
16833  * is.odd
16834  * Test if `value` is an odd number.
16835  *
16836  * @param {Number} value value to test
16837  * @return {Boolean} true if `value` is an odd number, false otherwise
16838  * @api public
16839  */
16840
16841 is.odd = function (value) {
16842   return is.infinite(value) || (is.number(value) && value === value && value % 2 !== 0);
16843 };
16844
16845 /**
16846  * is.ge
16847  * Test if `value` is greater than or equal to `other`.
16848  *
16849  * @param {Number} value value to test
16850  * @param {Number} other value to compare with
16851  * @return {Boolean}
16852  * @api public
16853  */
16854
16855 is.ge = function (value, other) {
16856   if (isActualNaN(value) || isActualNaN(other)) {
16857     throw new TypeError('NaN is not a valid value');
16858   }
16859   return !is.infinite(value) && !is.infinite(other) && value >= other;
16860 };
16861
16862 /**
16863  * is.gt
16864  * Test if `value` is greater than `other`.
16865  *
16866  * @param {Number} value value to test
16867  * @param {Number} other value to compare with
16868  * @return {Boolean}
16869  * @api public
16870  */
16871
16872 is.gt = function (value, other) {
16873   if (isActualNaN(value) || isActualNaN(other)) {
16874     throw new TypeError('NaN is not a valid value');
16875   }
16876   return !is.infinite(value) && !is.infinite(other) && value > other;
16877 };
16878
16879 /**
16880  * is.le
16881  * Test if `value` is less than or equal to `other`.
16882  *
16883  * @param {Number} value value to test
16884  * @param {Number} other value to compare with
16885  * @return {Boolean} if 'value' is less than or equal to 'other'
16886  * @api public
16887  */
16888
16889 is.le = function (value, other) {
16890   if (isActualNaN(value) || isActualNaN(other)) {
16891     throw new TypeError('NaN is not a valid value');
16892   }
16893   return !is.infinite(value) && !is.infinite(other) && value <= other;
16894 };
16895
16896 /**
16897  * is.lt
16898  * Test if `value` is less than `other`.
16899  *
16900  * @param {Number} value value to test
16901  * @param {Number} other value to compare with
16902  * @return {Boolean} if `value` is less than `other`
16903  * @api public
16904  */
16905
16906 is.lt = function (value, other) {
16907   if (isActualNaN(value) || isActualNaN(other)) {
16908     throw new TypeError('NaN is not a valid value');
16909   }
16910   return !is.infinite(value) && !is.infinite(other) && value < other;
16911 };
16912
16913 /**
16914  * is.within
16915  * Test if `value` is within `start` and `finish`.
16916  *
16917  * @param {Number} value value to test
16918  * @param {Number} start lower bound
16919  * @param {Number} finish upper bound
16920  * @return {Boolean} true if 'value' is is within 'start' and 'finish'
16921  * @api public
16922  */
16923 is.within = function (value, start, finish) {
16924   if (isActualNaN(value) || isActualNaN(start) || isActualNaN(finish)) {
16925     throw new TypeError('NaN is not a valid value');
16926   } else if (!is.number(value) || !is.number(start) || !is.number(finish)) {
16927     throw new TypeError('all arguments must be numbers');
16928   }
16929   var isAnyInfinite = is.infinite(value) || is.infinite(start) || is.infinite(finish);
16930   return isAnyInfinite || (value >= start && value <= finish);
16931 };
16932
16933 /**
16934  * Test object.
16935  */
16936
16937 /**
16938  * is.object
16939  * Test if `value` is an object.
16940  *
16941  * @param {Mixed} value value to test
16942  * @return {Boolean} true if `value` is an object, false otherwise
16943  * @api public
16944  */
16945
16946 is.object = function (value) {
16947   return value && '[object Object]' === toString.call(value);
16948 };
16949
16950 /**
16951  * is.hash
16952  * Test if `value` is a hash - a plain object literal.
16953  *
16954  * @param {Mixed} value value to test
16955  * @return {Boolean} true if `value` is a hash, false otherwise
16956  * @api public
16957  */
16958
16959 is.hash = function (value) {
16960   return is.object(value) && value.constructor === Object && !value.nodeType && !value.setInterval;
16961 };
16962
16963 /**
16964  * Test regexp.
16965  */
16966
16967 /**
16968  * is.regexp
16969  * Test if `value` is a regular expression.
16970  *
16971  * @param {Mixed} value value to test
16972  * @return {Boolean} true if `value` is a regexp, false otherwise
16973  * @api public
16974  */
16975
16976 is.regexp = function (value) {
16977   return '[object RegExp]' === toString.call(value);
16978 };
16979
16980 /**
16981  * Test string.
16982  */
16983
16984 /**
16985  * is.string
16986  * Test if `value` is a string.
16987  *
16988  * @param {Mixed} value value to test
16989  * @return {Boolean} true if 'value' is a string, false otherwise
16990  * @api public
16991  */
16992
16993 is.string = function (value) {
16994   return '[object String]' === toString.call(value);
16995 };
16996
16997
16998 },{}],10:[function(require,module,exports){
16999
17000 var hasOwn = Object.prototype.hasOwnProperty;
17001 var toString = Object.prototype.toString;
17002
17003 module.exports = function forEach (obj, fn, ctx) {
17004     if (toString.call(fn) !== '[object Function]') {
17005         throw new TypeError('iterator must be a function');
17006     }
17007     var l = obj.length;
17008     if (l === +l) {
17009         for (var i = 0; i < l; i++) {
17010             fn.call(ctx, obj[i], i, obj);
17011         }
17012     } else {
17013         for (var k in obj) {
17014             if (hasOwn.call(obj, k)) {
17015                 fn.call(ctx, obj[k], k, obj);
17016             }
17017         }
17018     }
17019 };
17020
17021
17022 },{}]},{},[1])(1)
17023 });
17024 ;/*
17025  (c) 2013, Vladimir Agafonkin
17026  RBush, a JavaScript library for high-performance 2D spatial indexing of points and rectangles.
17027  https://github.com/mourner/rbush
17028 */
17029
17030 (function () { 'use strict';
17031
17032 function rbush(maxEntries, format) {
17033
17034     // jshint newcap: false, validthis: true
17035     if (!(this instanceof rbush)) return new rbush(maxEntries, format);
17036
17037     // max entries in a node is 9 by default; min node fill is 40% for best performance
17038     this._maxEntries = Math.max(4, maxEntries || 9);
17039     this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));
17040
17041     if (format) {
17042         this._initFormat(format);
17043     }
17044
17045     this.clear();
17046 }
17047
17048 rbush.prototype = {
17049
17050     all: function () {
17051         return this._all(this.data, []);
17052     },
17053
17054     search: function (bbox) {
17055
17056         var node = this.data,
17057             result = [],
17058             toBBox = this.toBBox;
17059
17060         if (!intersects(bbox, node.bbox)) return result;
17061
17062         var nodesToSearch = [],
17063             i, len, child, childBBox;
17064
17065         while (node) {
17066             for (i = 0, len = node.children.length; i < len; i++) {
17067
17068                 child = node.children[i];
17069                 childBBox = node.leaf ? toBBox(child) : child.bbox;
17070
17071                 if (intersects(bbox, childBBox)) {
17072                     if (node.leaf) result.push(child);
17073                     else if (contains(bbox, childBBox)) this._all(child, result);
17074                     else nodesToSearch.push(child);
17075                 }
17076             }
17077             node = nodesToSearch.pop();
17078         }
17079
17080         return result;
17081     },
17082
17083     load: function (data) {
17084         if (!(data && data.length)) return this;
17085
17086         if (data.length < this._minEntries) {
17087             for (var i = 0, len = data.length; i < len; i++) {
17088                 this.insert(data[i]);
17089             }
17090             return this;
17091         }
17092
17093         // recursively build the tree with the given data from stratch using OMT algorithm
17094         var node = this._build(data.slice(), 0, data.length - 1, 0);
17095
17096         if (!this.data.children.length) {
17097             // save as is if tree is empty
17098             this.data = node;
17099
17100         } else if (this.data.height === node.height) {
17101             // split root if trees have the same height
17102             this._splitRoot(this.data, node);
17103
17104         } else {
17105             if (this.data.height < node.height) {
17106                 // swap trees if inserted one is bigger
17107                 var tmpNode = this.data;
17108                 this.data = node;
17109                 node = tmpNode;
17110             }
17111
17112             // insert the small tree into the large tree at appropriate level
17113             this._insert(node, this.data.height - node.height - 1, true);
17114         }
17115
17116         return this;
17117     },
17118
17119     insert: function (item) {
17120         if (item) this._insert(item, this.data.height - 1);
17121         return this;
17122     },
17123
17124     clear: function () {
17125         this.data = {
17126             children: [],
17127             height: 1,
17128             bbox: empty(),
17129             leaf: true
17130         };
17131         return this;
17132     },
17133
17134     remove: function (item) {
17135         if (!item) return this;
17136
17137         var node = this.data,
17138             bbox = this.toBBox(item),
17139             path = [],
17140             indexes = [],
17141             i, parent, index, goingUp;
17142
17143         // depth-first iterative tree traversal
17144         while (node || path.length) {
17145
17146             if (!node) { // go up
17147                 node = path.pop();
17148                 parent = path[path.length - 1];
17149                 i = indexes.pop();
17150                 goingUp = true;
17151             }
17152
17153             if (node.leaf) { // check current node
17154                 index = node.children.indexOf(item);
17155
17156                 if (index !== -1) {
17157                     // item found, remove the item and condense tree upwards
17158                     node.children.splice(index, 1);
17159                     path.push(node);
17160                     this._condense(path);
17161                     return this;
17162                 }
17163             }
17164
17165             if (!goingUp && !node.leaf && contains(node.bbox, bbox)) { // go down
17166                 path.push(node);
17167                 indexes.push(i);
17168                 i = 0;
17169                 parent = node;
17170                 node = node.children[0];
17171
17172             } else if (parent) { // go right
17173                 i++;
17174                 node = parent.children[i];
17175                 goingUp = false;
17176
17177             } else node = null; // nothing found
17178         }
17179
17180         return this;
17181     },
17182
17183     toBBox: function (item) { return item; },
17184
17185     compareMinX: function (a, b) { return a[0] - b[0]; },
17186     compareMinY: function (a, b) { return a[1] - b[1]; },
17187
17188     toJSON: function () { return this.data; },
17189
17190     fromJSON: function (data) {
17191         this.data = data;
17192         return this;
17193     },
17194
17195     _all: function (node, result) {
17196         var nodesToSearch = [];
17197         while (node) {
17198             if (node.leaf) result.push.apply(result, node.children);
17199             else nodesToSearch.push.apply(nodesToSearch, node.children);
17200
17201             node = nodesToSearch.pop();
17202         }
17203         return result;
17204     },
17205
17206     _build: function (items, left, right, level, height) {
17207
17208         var N = right - left + 1,
17209             M = this._maxEntries,
17210             node;
17211
17212         if (N <= M) {
17213             node = {
17214                 children: items.slice(left, right + 1),
17215                 height: 1,
17216                 bbox: null,
17217                 leaf: true
17218             };
17219             calcBBox(node, this.toBBox);
17220             return node;
17221         }
17222
17223         if (!level) {
17224             // target height of the bulk-loaded tree
17225             height = Math.ceil(Math.log(N) / Math.log(M));
17226
17227             // target number of root entries to maximize storage utilization
17228             M = Math.ceil(N / Math.pow(M, height - 1));
17229         }
17230
17231         // TODO eliminate recursion?
17232
17233         node = {
17234             children: [],
17235             height: height,
17236             bbox: null
17237         };
17238
17239         var N2 = Math.ceil(N / M),
17240             N1 = N2 * Math.ceil(Math.sqrt(M)),
17241             i, j, right2, childNode;
17242
17243         // split the items into M mostly square tiles
17244         for (i = left; i <= right; i += N1) {
17245
17246             if (i + N1 <= right) partitionSort(items, i, right, i + N1, this.compareMinX);
17247             right2 = Math.min(i + N1 - 1, right);
17248
17249             for (j = i; j <= right2; j += N2) {
17250
17251                 if (j + N2 <= right2) partitionSort(items, j, right2, j + N2, this.compareMinY);
17252
17253                 // pack each entry recursively
17254                 childNode = this._build(items, j, Math.min(j + N2 - 1, right2), level + 1, height - 1);
17255                 node.children.push(childNode);
17256             }
17257         }
17258
17259         calcBBox(node, this.toBBox);
17260
17261         return node;
17262     },
17263
17264     _chooseSubtree: function (bbox, node, level, path) {
17265
17266         var i, len, child, targetNode, area, enlargement, minArea, minEnlargement;
17267
17268         while (true) {
17269             path.push(node);
17270
17271             if (node.leaf || path.length - 1 === level) break;
17272
17273             minArea = minEnlargement = Infinity;
17274
17275             for (i = 0, len = node.children.length; i < len; i++) {
17276                 child = node.children[i];
17277                 area = bboxArea(child.bbox);
17278                 enlargement = enlargedArea(bbox, child.bbox) - area;
17279
17280                 // choose entry with the least area enlargement
17281                 if (enlargement < minEnlargement) {
17282                     minEnlargement = enlargement;
17283                     minArea = area < minArea ? area : minArea;
17284                     targetNode = child;
17285
17286                 } else if (enlargement === minEnlargement) {
17287                     // otherwise choose one with the smallest area
17288                     if (area < minArea) {
17289                         minArea = area;
17290                         targetNode = child;
17291                     }
17292                 }
17293             }
17294
17295             node = targetNode;
17296         }
17297
17298         return node;
17299     },
17300
17301     _insert: function (item, level, isNode) {
17302
17303         var toBBox = this.toBBox,
17304             bbox = isNode ? item.bbox : toBBox(item),
17305             insertPath = [];
17306
17307         // find the best node for accommodating the item, saving all nodes along the path too
17308         var node = this._chooseSubtree(bbox, this.data, level, insertPath);
17309
17310         // put the item into the node
17311         node.children.push(item);
17312         extend(node.bbox, bbox);
17313
17314         // split on node overflow; propagate upwards if necessary
17315         while (level >= 0) {
17316             if (insertPath[level].children.length > this._maxEntries) {
17317                 this._split(insertPath, level);
17318                 level--;
17319             } else break;
17320         }
17321
17322         // adjust bboxes along the insertion path
17323         this._adjustParentBBoxes(bbox, insertPath, level);
17324     },
17325
17326     // split overflowed node into two
17327     _split: function (insertPath, level) {
17328
17329         var node = insertPath[level],
17330             M = node.children.length,
17331             m = this._minEntries;
17332
17333         this._chooseSplitAxis(node, m, M);
17334
17335         var newNode = {
17336             children: node.children.splice(this._chooseSplitIndex(node, m, M)),
17337             height: node.height
17338         };
17339
17340         if (node.leaf) newNode.leaf = true;
17341
17342         calcBBox(node, this.toBBox);
17343         calcBBox(newNode, this.toBBox);
17344
17345         if (level) insertPath[level - 1].children.push(newNode);
17346         else this._splitRoot(node, newNode);
17347     },
17348
17349     _splitRoot: function (node, newNode) {
17350         // split root node
17351         this.data = {
17352             children: [node, newNode],
17353             height: node.height + 1
17354         };
17355         calcBBox(this.data, this.toBBox);
17356     },
17357
17358     _chooseSplitIndex: function (node, m, M) {
17359
17360         var i, bbox1, bbox2, overlap, area, minOverlap, minArea, index;
17361
17362         minOverlap = minArea = Infinity;
17363
17364         for (i = m; i <= M - m; i++) {
17365             bbox1 = distBBox(node, 0, i, this.toBBox);
17366             bbox2 = distBBox(node, i, M, this.toBBox);
17367
17368             overlap = intersectionArea(bbox1, bbox2);
17369             area = bboxArea(bbox1) + bboxArea(bbox2);
17370
17371             // choose distribution with minimum overlap
17372             if (overlap < minOverlap) {
17373                 minOverlap = overlap;
17374                 index = i;
17375
17376                 minArea = area < minArea ? area : minArea;
17377
17378             } else if (overlap === minOverlap) {
17379                 // otherwise choose distribution with minimum area
17380                 if (area < minArea) {
17381                     minArea = area;
17382                     index = i;
17383                 }
17384             }
17385         }
17386
17387         return index;
17388     },
17389
17390     // sorts node children by the best axis for split
17391     _chooseSplitAxis: function (node, m, M) {
17392
17393         var compareMinX = node.leaf ? this.compareMinX : compareNodeMinX,
17394             compareMinY = node.leaf ? this.compareMinY : compareNodeMinY,
17395             xMargin = this._allDistMargin(node, m, M, compareMinX),
17396             yMargin = this._allDistMargin(node, m, M, compareMinY);
17397
17398         // if total distributions margin value is minimal for x, sort by minX,
17399         // otherwise it's already sorted by minY
17400         if (xMargin < yMargin) node.children.sort(compareMinX);
17401     },
17402
17403     // total margin of all possible split distributions where each node is at least m full
17404     _allDistMargin: function (node, m, M, compare) {
17405
17406         node.children.sort(compare);
17407
17408         var toBBox = this.toBBox,
17409             leftBBox = distBBox(node, 0, m, toBBox),
17410             rightBBox = distBBox(node, M - m, M, toBBox),
17411             margin = bboxMargin(leftBBox) + bboxMargin(rightBBox),
17412             i, child;
17413
17414         for (i = m; i < M - m; i++) {
17415             child = node.children[i];
17416             extend(leftBBox, node.leaf ? toBBox(child) : child.bbox);
17417             margin += bboxMargin(leftBBox);
17418         }
17419
17420         for (i = M - m - 1; i >= m; i--) {
17421             child = node.children[i];
17422             extend(rightBBox, node.leaf ? toBBox(child) : child.bbox);
17423             margin += bboxMargin(rightBBox);
17424         }
17425
17426         return margin;
17427     },
17428
17429     _adjustParentBBoxes: function (bbox, path, level) {
17430         // adjust bboxes along the given tree path
17431         for (var i = level; i >= 0; i--) {
17432             extend(path[i].bbox, bbox);
17433         }
17434     },
17435
17436     _condense: function (path) {
17437         // go through the path, removing empty nodes and updating bboxes
17438         for (var i = path.length - 1, siblings; i >= 0; i--) {
17439             if (path[i].children.length === 0) {
17440                 if (i > 0) {
17441                     siblings = path[i - 1].children;
17442                     siblings.splice(siblings.indexOf(path[i]), 1);
17443
17444                 } else this.clear();
17445
17446             } else calcBBox(path[i], this.toBBox);
17447         }
17448     },
17449
17450     _initFormat: function (format) {
17451         // data format (minX, minY, maxX, maxY accessors)
17452
17453         // uses eval-type function compilation instead of just accepting a toBBox function
17454         // because the algorithms are very sensitive to sorting functions performance,
17455         // so they should be dead simple and without inner calls
17456
17457         // jshint evil: true
17458
17459         var compareArr = ['return a', ' - b', ';'];
17460
17461         this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));
17462         this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));
17463
17464         this.toBBox = new Function('a', 'return [a' + format.join(', a') + '];');
17465     }
17466 };
17467
17468 // calculate node's bbox from bboxes of its children
17469 function calcBBox(node, toBBox) {
17470     node.bbox = distBBox(node, 0, node.children.length, toBBox);
17471 }
17472
17473 // min bounding rectangle of node children from k to p-1
17474 function distBBox(node, k, p, toBBox) {
17475     var bbox = empty();
17476
17477     for (var i = k, child; i < p; i++) {
17478         child = node.children[i];
17479         extend(bbox, node.leaf ? toBBox(child) : child.bbox);
17480     }
17481
17482     return bbox;
17483 }
17484
17485
17486 function empty() { return [Infinity, Infinity, -Infinity, -Infinity]; }
17487
17488 function extend(a, b) {
17489     a[0] = Math.min(a[0], b[0]);
17490     a[1] = Math.min(a[1], b[1]);
17491     a[2] = Math.max(a[2], b[2]);
17492     a[3] = Math.max(a[3], b[3]);
17493     return a;
17494 }
17495
17496 function compareNodeMinX(a, b) { return a.bbox[0] - b.bbox[0]; }
17497 function compareNodeMinY(a, b) { return a.bbox[1] - b.bbox[1]; }
17498
17499 function bboxArea(a)   { return (a[2] - a[0]) * (a[3] - a[1]); }
17500 function bboxMargin(a) { return (a[2] - a[0]) + (a[3] - a[1]); }
17501
17502 function enlargedArea(a, b) {
17503     return (Math.max(b[2], a[2]) - Math.min(b[0], a[0])) *
17504            (Math.max(b[3], a[3]) - Math.min(b[1], a[1]));
17505 }
17506
17507 function intersectionArea (a, b) {
17508     var minX = Math.max(a[0], b[0]),
17509         minY = Math.max(a[1], b[1]),
17510         maxX = Math.min(a[2], b[2]),
17511         maxY = Math.min(a[3], b[3]);
17512
17513     return Math.max(0, maxX - minX) *
17514            Math.max(0, maxY - minY);
17515 }
17516
17517 function contains(a, b) {
17518     return a[0] <= b[0] &&
17519            a[1] <= b[1] &&
17520            b[2] <= a[2] &&
17521            b[3] <= a[3];
17522 }
17523
17524 function intersects (a, b) {
17525     return b[0] <= a[2] &&
17526            b[1] <= a[3] &&
17527            b[2] >= a[0] &&
17528            b[3] >= a[1];
17529 }
17530
17531
17532 function partitionSort(arr, left, right, k, compare) {
17533     var pivot;
17534
17535     while (true) {
17536         pivot = Math.floor((left + right) / 2);
17537         pivot = partition(arr, left, right, pivot, compare);
17538
17539         if (k === pivot) break;
17540         else if (k < pivot) right = pivot - 1;
17541         else left = pivot + 1;
17542     }
17543
17544     partition(arr, left, right, k, compare);
17545 }
17546
17547 function partition(arr, left, right, pivot, compare) {
17548     var k = left,
17549         value = arr[pivot];
17550
17551     swap(arr, pivot, right);
17552
17553     for (var i = left; i < right; i++) {
17554         if (compare(arr[i], value) < 0) {
17555             swap(arr, k, i);
17556             k++;
17557         }
17558     }
17559     swap(arr, right, k);
17560
17561     return k;
17562 }
17563
17564 function swap(arr, i, j) {
17565     var tmp = arr[i];
17566     arr[i] = arr[j];
17567     arr[j] = tmp;
17568 }
17569
17570
17571 // export as AMD/CommonJS module or global variable
17572 if (typeof define === 'function' && define.amd) define(function() { return rbush; });
17573 else if (typeof module !== 'undefined') module.exports = rbush;
17574 else if (typeof self !== 'undefined') self.rbush = rbush;
17575 else window.rbush = rbush;
17576
17577 })();(function(e){if("function"==typeof bootstrap)bootstrap("sexagesimal",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeSexagesimal=e}else"undefined"!=typeof window?window.sexagesimal=e():global.sexagesimal=e()})(function(){var define,ses,bootstrap,module,exports;
17578 return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
17579 module.exports = element;
17580 module.exports.pair = pair;
17581 module.exports.format = format;
17582 module.exports.formatPair = formatPair;
17583
17584 function element(x, dims) {
17585     return search(x, dims).val;
17586 }
17587
17588 function formatPair(x) {
17589     return format(x.lat, 'lat') + ' ' + format(x.lon, 'lon');
17590 }
17591
17592 // Is 0 North or South?
17593 function format(x, dim) {
17594     var dirs = {
17595             lat: ['N', 'S'],
17596             lon: ['E', 'W']
17597         }[dim] || '',
17598         dir = dirs[x >= 0 ? 0 : 1],
17599         abs = Math.abs(x),
17600         whole = Math.floor(abs),
17601         fraction = abs - whole,
17602         fractionMinutes = fraction * 60,
17603         minutes = Math.floor(fractionMinutes),
17604         seconds = Math.floor((fractionMinutes - minutes) * 60);
17605
17606     return whole + '° ' +
17607         (minutes ? minutes + "' " : '') +
17608         (seconds ? seconds + '" ' : '') + dir;
17609 }
17610
17611 function search(x, dims, r) {
17612     if (!dims) dims = 'NSEW';
17613     if (typeof x !== 'string') return { val: null, regex: r };
17614     r = r || /[\s\,]*([\-|\—|\―]?[0-9.]+)°? *(?:([0-9.]+)['’′‘] *)?(?:([0-9.]+)(?:''|"|”|″) *)?([NSEW])?/gi;
17615     var m = r.exec(x);
17616     if (!m) return { val: null, regex: r };
17617     else if (m[4] && dims.indexOf(m[4]) === -1) return { val: null, regex: r };
17618     else return {
17619         val: (((m[1]) ? parseFloat(m[1]) : 0) +
17620             ((m[2] ? parseFloat(m[2]) / 60 : 0)) +
17621             ((m[3] ? parseFloat(m[3]) / 3600 : 0))) *
17622             ((m[4] && m[4] === 'S' || m[4] === 'W') ? -1 : 1),
17623         regex: r,
17624         raw: m[0],
17625         dim: m[4]
17626     };
17627 }
17628
17629 function pair(x, dims) {
17630     x = x.trim();
17631     var one = search(x, dims);
17632     if (one.val === null) return null;
17633     var two = search(x, dims, one.regex);
17634     if (two.val === null) return null;
17635     // null if one/two are not contiguous.
17636     if (one.raw + two.raw !== x) return null;
17637     if (one.dim) return swapdim(one.val, two.val, one.dim);
17638     else return [one.val, two.val];
17639 }
17640
17641 function swapdim(a, b, dim) {
17642     if (dim == 'N' || dim == 'S') return [a, b];
17643     if (dim == 'W' || dim == 'E') return [b, a];
17644 }
17645
17646 },{}]},{},[1])
17647 (1)
17648 });
17649 ;toGeoJSON = (function() {
17650     'use strict';
17651
17652     var removeSpace = (/\s*/g),
17653         trimSpace = (/^\s*|\s*$/g),
17654         splitSpace = (/\s+/);
17655     // generate a short, numeric hash of a string
17656     function okhash(x) {
17657         if (!x || !x.length) return 0;
17658         for (var i = 0, h = 0; i < x.length; i++) {
17659             h = ((h << 5) - h) + x.charCodeAt(i) | 0;
17660         } return h;
17661     }
17662     // all Y children of X
17663     function get(x, y) { return x.getElementsByTagName(y); }
17664     function attr(x, y) { return x.getAttribute(y); }
17665     function attrf(x, y) { return parseFloat(attr(x, y)); }
17666     // one Y child of X, if any, otherwise null
17667     function get1(x, y) { var n = get(x, y); return n.length ? n[0] : null; }
17668     // https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize
17669     function norm(el) { if (el.normalize) { el.normalize(); } return el; }
17670     // cast array x into numbers
17671     function numarray(x) {
17672         for (var j = 0, o = []; j < x.length; j++) o[j] = parseFloat(x[j]);
17673         return o;
17674     }
17675     function clean(x) {
17676         var o = {};
17677         for (var i in x) if (x[i]) o[i] = x[i];
17678         return o;
17679     }
17680     // get the content of a text node, if any
17681     function nodeVal(x) { if (x) {norm(x);} return x && x.firstChild && x.firstChild.nodeValue; }
17682     // get one coordinate from a coordinate array, if any
17683     function coord1(v) { return numarray(v.replace(removeSpace, '').split(',')); }
17684     // get all coordinates from a coordinate array as [[],[]]
17685     function coord(v) {
17686         var coords = v.replace(trimSpace, '').split(splitSpace),
17687             o = [];
17688         for (var i = 0; i < coords.length; i++) {
17689             o.push(coord1(coords[i]));
17690         }
17691         return o;
17692     }
17693     function coordPair(x) { return [attrf(x, 'lon'), attrf(x, 'lat')]; }
17694
17695     // create a new feature collection parent object
17696     function fc() {
17697         return {
17698             type: 'FeatureCollection',
17699             features: []
17700         };
17701     }
17702
17703     var styleSupport = false;
17704     if (typeof XMLSerializer !== 'undefined') {
17705         var serializer = new XMLSerializer();
17706         styleSupport = true;
17707     }
17708     function xml2str(str) { return serializer.serializeToString(str); }
17709
17710     var t = {
17711         kml: function(doc, o) {
17712             o = o || {};
17713
17714             var gj = fc(),
17715                 // styleindex keeps track of hashed styles in order to match features
17716                 styleIndex = {},
17717                 // atomic geospatial types supported by KML - MultiGeometry is
17718                 // handled separately
17719                 geotypes = ['Polygon', 'LineString', 'Point', 'Track'],
17720                 // all root placemarks in the file
17721                 placemarks = get(doc, 'Placemark'),
17722                 styles = get(doc, 'Style');
17723
17724             if (styleSupport) for (var k = 0; k < styles.length; k++) {
17725                 styleIndex['#' + attr(styles[k], 'id')] = okhash(xml2str(styles[k])).toString(16);
17726             }
17727             for (var j = 0; j < placemarks.length; j++) {
17728                 gj.features = gj.features.concat(getPlacemark(placemarks[j]));
17729             }
17730             function gxCoord(v) { return numarray(v.split(' ')); }
17731             function gxCoords(root) {
17732                 var elems = get(root, 'coord', 'gx'), coords = [];
17733                 for (var i = 0; i < elems.length; i++) coords.push(gxCoord(nodeVal(elems[i])));
17734                 return coords;
17735             }
17736             function getGeometry(root) {
17737                 var geomNode, geomNodes, i, j, k, geoms = [];
17738                 if (get1(root, 'MultiGeometry')) return getGeometry(get1(root, 'MultiGeometry'));
17739                 if (get1(root, 'MultiTrack')) return getGeometry(get1(root, 'MultiTrack'));
17740                 for (i = 0; i < geotypes.length; i++) {
17741                     geomNodes = get(root, geotypes[i]);
17742                     if (geomNodes) {
17743                         for (j = 0; j < geomNodes.length; j++) {
17744                             geomNode = geomNodes[j];
17745                             if (geotypes[i] == 'Point') {
17746                                 geoms.push({
17747                                     type: 'Point',
17748                                     coordinates: coord1(nodeVal(get1(geomNode, 'coordinates')))
17749                                 });
17750                             } else if (geotypes[i] == 'LineString') {
17751                                 geoms.push({
17752                                     type: 'LineString',
17753                                     coordinates: coord(nodeVal(get1(geomNode, 'coordinates')))
17754                                 });
17755                             } else if (geotypes[i] == 'Polygon') {
17756                                 var rings = get(geomNode, 'LinearRing'),
17757                                     coords = [];
17758                                 for (k = 0; k < rings.length; k++) {
17759                                     coords.push(coord(nodeVal(get1(rings[k], 'coordinates'))));
17760                                 }
17761                                 geoms.push({
17762                                     type: 'Polygon',
17763                                     coordinates: coords
17764                                 });
17765                             } else if (geotypes[i] == 'Track') {
17766                                 geoms.push({
17767                                     type: 'LineString',
17768                                     coordinates: gxCoords(geomNode)
17769                                 });
17770                             }
17771                         }
17772                     }
17773                 }
17774                 return geoms;
17775             }
17776             function getPlacemark(root) {
17777                 var geoms = getGeometry(root), i, properties = {},
17778                     name = nodeVal(get1(root, 'name')),
17779                     styleUrl = nodeVal(get1(root, 'styleUrl')),
17780                     description = nodeVal(get1(root, 'description')),
17781                     extendedData = get1(root, 'ExtendedData');
17782
17783                 if (!geoms.length) return [];
17784                 if (name) properties.name = name;
17785                 if (styleUrl && styleIndex[styleUrl]) {
17786                     properties.styleUrl = styleUrl;
17787                     properties.styleHash = styleIndex[styleUrl];
17788                 }
17789                 if (description) properties.description = description;
17790                 if (extendedData) {
17791                     var datas = get(extendedData, 'Data'),
17792                         simpleDatas = get(extendedData, 'SimpleData');
17793
17794                     for (i = 0; i < datas.length; i++) {
17795                         properties[datas[i].getAttribute('name')] = nodeVal(get1(datas[i], 'value'));
17796                     }
17797                     for (i = 0; i < simpleDatas.length; i++) {
17798                         properties[simpleDatas[i].getAttribute('name')] = nodeVal(simpleDatas[i]);
17799                     }
17800                 }
17801                 return [{
17802                     type: 'Feature',
17803                     geometry: (geoms.length === 1) ? geoms[0] : {
17804                         type: 'GeometryCollection',
17805                         geometries: geoms
17806                     },
17807                     properties: properties
17808                 }];
17809             }
17810             return gj;
17811         },
17812         gpx: function(doc, o) {
17813             var i,
17814                 tracks = get(doc, 'trk'),
17815                 routes = get(doc, 'rte'),
17816                 waypoints = get(doc, 'wpt'),
17817                 // a feature collection
17818                 gj = fc();
17819             for (i = 0; i < tracks.length; i++) {
17820                 gj.features.push(getLinestring(tracks[i], 'trkpt'));
17821             }
17822             for (i = 0; i < routes.length; i++) {
17823                 gj.features.push(getLinestring(routes[i], 'rtept'));
17824             }
17825             for (i = 0; i < waypoints.length; i++) {
17826                 gj.features.push(getPoint(waypoints[i]));
17827             }
17828             function getLinestring(node, pointname) {
17829                 var j, pts = get(node, pointname), line = [];
17830                 for (j = 0; j < pts.length; j++) {
17831                     line.push(coordPair(pts[j]));
17832                 }
17833                 return {
17834                     type: 'Feature',
17835                     properties: getProperties(node),
17836                     geometry: {
17837                         type: 'LineString',
17838                         coordinates: line
17839                     }
17840                 };
17841             }
17842             function getPoint(node) {
17843                 var prop = getProperties(node);
17844                 prop.ele = nodeVal(get1(node, 'ele'));
17845                 prop.sym = nodeVal(get1(node, 'sym'));
17846                 return {
17847                     type: 'Feature',
17848                     properties: prop,
17849                     geometry: {
17850                         type: 'Point',
17851                         coordinates: coordPair(node)
17852                     }
17853                 };
17854             }
17855             function getProperties(node) {
17856                 var meta = ['name', 'desc', 'author', 'copyright', 'link',
17857                             'time', 'keywords'],
17858                     prop = {},
17859                     k;
17860                 for (k = 0; k < meta.length; k++) {
17861                     prop[meta[k]] = nodeVal(get1(node, meta[k]));
17862                 }
17863                 return clean(prop);
17864             }
17865             return gj;
17866         }
17867     };
17868     return t;
17869 })();
17870
17871 if (typeof module !== 'undefined') module.exports = toGeoJSON;
17872 /**
17873  * marked - a markdown parser
17874  * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed)
17875  * https://github.com/chjj/marked
17876  */
17877
17878 ;(function() {
17879
17880 /**
17881  * Block-Level Grammar
17882  */
17883
17884 var block = {
17885   newline: /^\n+/,
17886   code: /^( {4}[^\n]+\n*)+/,
17887   fences: noop,
17888   hr: /^( *[-*_]){3,} *(?:\n+|$)/,
17889   heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
17890   nptable: noop,
17891   lheading: /^([^\n]+)\n *(=|-){3,} *\n*/,
17892   blockquote: /^( *>[^\n]+(\n[^\n]+)*\n*)+/,
17893   list: /^( *)(bull) [\s\S]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
17894   html: /^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,
17895   def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
17896   table: noop,
17897   paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
17898   text: /^[^\n]+/
17899 };
17900
17901 block.bullet = /(?:[*+-]|\d+\.)/;
17902 block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
17903 block.item = replace(block.item, 'gm')
17904   (/bull/g, block.bullet)
17905   ();
17906
17907 block.list = replace(block.list)
17908   (/bull/g, block.bullet)
17909   ('hr', /\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)
17910   ();
17911
17912 block._tag = '(?!(?:'
17913   + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
17914   + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
17915   + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b';
17916
17917 block.html = replace(block.html)
17918   ('comment', /<!--[\s\S]*?-->/)
17919   ('closed', /<(tag)[\s\S]+?<\/\1>/)
17920   ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
17921   (/tag/g, block._tag)
17922   ();
17923
17924 block.paragraph = replace(block.paragraph)
17925   ('hr', block.hr)
17926   ('heading', block.heading)
17927   ('lheading', block.lheading)
17928   ('blockquote', block.blockquote)
17929   ('tag', '<' + block._tag)
17930   ('def', block.def)
17931   ();
17932
17933 /**
17934  * Normal Block Grammar
17935  */
17936
17937 block.normal = merge({}, block);
17938
17939 /**
17940  * GFM Block Grammar
17941  */
17942
17943 block.gfm = merge({}, block.normal, {
17944   fences: /^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,
17945   paragraph: /^/
17946 });
17947
17948 block.gfm.paragraph = replace(block.paragraph)
17949   ('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|')
17950   ();
17951
17952 /**
17953  * GFM + Tables Block Grammar
17954  */
17955
17956 block.tables = merge({}, block.gfm, {
17957   nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
17958   table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
17959 });
17960
17961 /**
17962  * Block Lexer
17963  */
17964
17965 function Lexer(options) {
17966   this.tokens = [];
17967   this.tokens.links = {};
17968   this.options = options || marked.defaults;
17969   this.rules = block.normal;
17970
17971   if (this.options.gfm) {
17972     if (this.options.tables) {
17973       this.rules = block.tables;
17974     } else {
17975       this.rules = block.gfm;
17976     }
17977   }
17978 }
17979
17980 /**
17981  * Expose Block Rules
17982  */
17983
17984 Lexer.rules = block;
17985
17986 /**
17987  * Static Lex Method
17988  */
17989
17990 Lexer.lex = function(src, options) {
17991   var lexer = new Lexer(options);
17992   return lexer.lex(src);
17993 };
17994
17995 /**
17996  * Preprocessing
17997  */
17998
17999 Lexer.prototype.lex = function(src) {
18000   src = src
18001     .replace(/\r\n|\r/g, '\n')
18002     .replace(/\t/g, '    ')
18003     .replace(/\u00a0/g, ' ')
18004     .replace(/\u2424/g, '\n');
18005
18006   return this.token(src, true);
18007 };
18008
18009 /**
18010  * Lexing
18011  */
18012
18013 Lexer.prototype.token = function(src, top) {
18014   var src = src.replace(/^ +$/gm, '')
18015     , next
18016     , loose
18017     , cap
18018     , bull
18019     , b
18020     , item
18021     , space
18022     , i
18023     , l;
18024
18025   while (src) {
18026     // newline
18027     if (cap = this.rules.newline.exec(src)) {
18028       src = src.substring(cap[0].length);
18029       if (cap[0].length > 1) {
18030         this.tokens.push({
18031           type: 'space'
18032         });
18033       }
18034     }
18035
18036     // code
18037     if (cap = this.rules.code.exec(src)) {
18038       src = src.substring(cap[0].length);
18039       cap = cap[0].replace(/^ {4}/gm, '');
18040       this.tokens.push({
18041         type: 'code',
18042         text: !this.options.pedantic
18043           ? cap.replace(/\n+$/, '')
18044           : cap
18045       });
18046       continue;
18047     }
18048
18049     // fences (gfm)
18050     if (cap = this.rules.fences.exec(src)) {
18051       src = src.substring(cap[0].length);
18052       this.tokens.push({
18053         type: 'code',
18054         lang: cap[2],
18055         text: cap[3]
18056       });
18057       continue;
18058     }
18059
18060     // heading
18061     if (cap = this.rules.heading.exec(src)) {
18062       src = src.substring(cap[0].length);
18063       this.tokens.push({
18064         type: 'heading',
18065         depth: cap[1].length,
18066         text: cap[2]
18067       });
18068       continue;
18069     }
18070
18071     // table no leading pipe (gfm)
18072     if (top && (cap = this.rules.nptable.exec(src))) {
18073       src = src.substring(cap[0].length);
18074
18075       item = {
18076         type: 'table',
18077         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18078         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18079         cells: cap[3].replace(/\n$/, '').split('\n')
18080       };
18081
18082       for (i = 0; i < item.align.length; i++) {
18083         if (/^ *-+: *$/.test(item.align[i])) {
18084           item.align[i] = 'right';
18085         } else if (/^ *:-+: *$/.test(item.align[i])) {
18086           item.align[i] = 'center';
18087         } else if (/^ *:-+ *$/.test(item.align[i])) {
18088           item.align[i] = 'left';
18089         } else {
18090           item.align[i] = null;
18091         }
18092       }
18093
18094       for (i = 0; i < item.cells.length; i++) {
18095         item.cells[i] = item.cells[i].split(/ *\| */);
18096       }
18097
18098       this.tokens.push(item);
18099
18100       continue;
18101     }
18102
18103     // lheading
18104     if (cap = this.rules.lheading.exec(src)) {
18105       src = src.substring(cap[0].length);
18106       this.tokens.push({
18107         type: 'heading',
18108         depth: cap[2] === '=' ? 1 : 2,
18109         text: cap[1]
18110       });
18111       continue;
18112     }
18113
18114     // hr
18115     if (cap = this.rules.hr.exec(src)) {
18116       src = src.substring(cap[0].length);
18117       this.tokens.push({
18118         type: 'hr'
18119       });
18120       continue;
18121     }
18122
18123     // blockquote
18124     if (cap = this.rules.blockquote.exec(src)) {
18125       src = src.substring(cap[0].length);
18126
18127       this.tokens.push({
18128         type: 'blockquote_start'
18129       });
18130
18131       cap = cap[0].replace(/^ *> ?/gm, '');
18132
18133       // Pass `top` to keep the current
18134       // "toplevel" state. This is exactly
18135       // how markdown.pl works.
18136       this.token(cap, top);
18137
18138       this.tokens.push({
18139         type: 'blockquote_end'
18140       });
18141
18142       continue;
18143     }
18144
18145     // list
18146     if (cap = this.rules.list.exec(src)) {
18147       src = src.substring(cap[0].length);
18148       bull = cap[2];
18149
18150       this.tokens.push({
18151         type: 'list_start',
18152         ordered: bull.length > 1
18153       });
18154
18155       // Get each top-level item.
18156       cap = cap[0].match(this.rules.item);
18157
18158       next = false;
18159       l = cap.length;
18160       i = 0;
18161
18162       for (; i < l; i++) {
18163         item = cap[i];
18164
18165         // Remove the list item's bullet
18166         // so it is seen as the next token.
18167         space = item.length;
18168         item = item.replace(/^ *([*+-]|\d+\.) +/, '');
18169
18170         // Outdent whatever the
18171         // list item contains. Hacky.
18172         if (~item.indexOf('\n ')) {
18173           space -= item.length;
18174           item = !this.options.pedantic
18175             ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
18176             : item.replace(/^ {1,4}/gm, '');
18177         }
18178
18179         // Determine whether the next list item belongs here.
18180         // Backpedal if it does not belong in this list.
18181         if (this.options.smartLists && i !== l - 1) {
18182           b = block.bullet.exec(cap[i+1])[0];
18183           if (bull !== b && !(bull.length > 1 && b.length > 1)) {
18184             src = cap.slice(i + 1).join('\n') + src;
18185             i = l - 1;
18186           }
18187         }
18188
18189         // Determine whether item is loose or not.
18190         // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
18191         // for discount behavior.
18192         loose = next || /\n\n(?!\s*$)/.test(item);
18193         if (i !== l - 1) {
18194           next = item[item.length-1] === '\n';
18195           if (!loose) loose = next;
18196         }
18197
18198         this.tokens.push({
18199           type: loose
18200             ? 'loose_item_start'
18201             : 'list_item_start'
18202         });
18203
18204         // Recurse.
18205         this.token(item, false);
18206
18207         this.tokens.push({
18208           type: 'list_item_end'
18209         });
18210       }
18211
18212       this.tokens.push({
18213         type: 'list_end'
18214       });
18215
18216       continue;
18217     }
18218
18219     // html
18220     if (cap = this.rules.html.exec(src)) {
18221       src = src.substring(cap[0].length);
18222       this.tokens.push({
18223         type: this.options.sanitize
18224           ? 'paragraph'
18225           : 'html',
18226         pre: cap[1] === 'pre' || cap[1] === 'script',
18227         text: cap[0]
18228       });
18229       continue;
18230     }
18231
18232     // def
18233     if (top && (cap = this.rules.def.exec(src))) {
18234       src = src.substring(cap[0].length);
18235       this.tokens.links[cap[1].toLowerCase()] = {
18236         href: cap[2],
18237         title: cap[3]
18238       };
18239       continue;
18240     }
18241
18242     // table (gfm)
18243     if (top && (cap = this.rules.table.exec(src))) {
18244       src = src.substring(cap[0].length);
18245
18246       item = {
18247         type: 'table',
18248         header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
18249         align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
18250         cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
18251       };
18252
18253       for (i = 0; i < item.align.length; i++) {
18254         if (/^ *-+: *$/.test(item.align[i])) {
18255           item.align[i] = 'right';
18256         } else if (/^ *:-+: *$/.test(item.align[i])) {
18257           item.align[i] = 'center';
18258         } else if (/^ *:-+ *$/.test(item.align[i])) {
18259           item.align[i] = 'left';
18260         } else {
18261           item.align[i] = null;
18262         }
18263       }
18264
18265       for (i = 0; i < item.cells.length; i++) {
18266         item.cells[i] = item.cells[i]
18267           .replace(/^ *\| *| *\| *$/g, '')
18268           .split(/ *\| */);
18269       }
18270
18271       this.tokens.push(item);
18272
18273       continue;
18274     }
18275
18276     // top-level paragraph
18277     if (top && (cap = this.rules.paragraph.exec(src))) {
18278       src = src.substring(cap[0].length);
18279       this.tokens.push({
18280         type: 'paragraph',
18281         text: cap[1][cap[1].length-1] === '\n'
18282           ? cap[1].slice(0, -1)
18283           : cap[1]
18284       });
18285       continue;
18286     }
18287
18288     // text
18289     if (cap = this.rules.text.exec(src)) {
18290       // Top-level should never reach here.
18291       src = src.substring(cap[0].length);
18292       this.tokens.push({
18293         type: 'text',
18294         text: cap[0]
18295       });
18296       continue;
18297     }
18298
18299     if (src) {
18300       throw new
18301         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18302     }
18303   }
18304
18305   return this.tokens;
18306 };
18307
18308 /**
18309  * Inline-Level Grammar
18310  */
18311
18312 var inline = {
18313   escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
18314   autolink: /^<([^ >]+(@|:\/)[^ >]+)>/,
18315   url: noop,
18316   tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,
18317   link: /^!?\[(inside)\]\(href\)/,
18318   reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
18319   nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
18320   strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
18321   em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
18322   code: /^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,
18323   br: /^ {2,}\n(?!\s*$)/,
18324   del: noop,
18325   text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
18326 };
18327
18328 inline._inside = /(?:\[[^\]]*\]|[^\]]|\](?=[^\[]*\]))*/;
18329 inline._href = /\s*<?([^\s]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
18330
18331 inline.link = replace(inline.link)
18332   ('inside', inline._inside)
18333   ('href', inline._href)
18334   ();
18335
18336 inline.reflink = replace(inline.reflink)
18337   ('inside', inline._inside)
18338   ();
18339
18340 /**
18341  * Normal Inline Grammar
18342  */
18343
18344 inline.normal = merge({}, inline);
18345
18346 /**
18347  * Pedantic Inline Grammar
18348  */
18349
18350 inline.pedantic = merge({}, inline.normal, {
18351   strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
18352   em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
18353 });
18354
18355 /**
18356  * GFM Inline Grammar
18357  */
18358
18359 inline.gfm = merge({}, inline.normal, {
18360   escape: replace(inline.escape)('])', '~|])')(),
18361   url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
18362   del: /^~~(?=\S)([\s\S]*?\S)~~/,
18363   text: replace(inline.text)
18364     (']|', '~]|')
18365     ('|', '|https?://|')
18366     ()
18367 });
18368
18369 /**
18370  * GFM + Line Breaks Inline Grammar
18371  */
18372
18373 inline.breaks = merge({}, inline.gfm, {
18374   br: replace(inline.br)('{2,}', '*')(),
18375   text: replace(inline.gfm.text)('{2,}', '*')()
18376 });
18377
18378 /**
18379  * Inline Lexer & Compiler
18380  */
18381
18382 function InlineLexer(links, options) {
18383   this.options = options || marked.defaults;
18384   this.links = links;
18385   this.rules = inline.normal;
18386
18387   if (!this.links) {
18388     throw new
18389       Error('Tokens array requires a `links` property.');
18390   }
18391
18392   if (this.options.gfm) {
18393     if (this.options.breaks) {
18394       this.rules = inline.breaks;
18395     } else {
18396       this.rules = inline.gfm;
18397     }
18398   } else if (this.options.pedantic) {
18399     this.rules = inline.pedantic;
18400   }
18401 }
18402
18403 /**
18404  * Expose Inline Rules
18405  */
18406
18407 InlineLexer.rules = inline;
18408
18409 /**
18410  * Static Lexing/Compiling Method
18411  */
18412
18413 InlineLexer.output = function(src, links, options) {
18414   var inline = new InlineLexer(links, options);
18415   return inline.output(src);
18416 };
18417
18418 /**
18419  * Lexing/Compiling
18420  */
18421
18422 InlineLexer.prototype.output = function(src) {
18423   var out = ''
18424     , link
18425     , text
18426     , href
18427     , cap;
18428
18429   while (src) {
18430     // escape
18431     if (cap = this.rules.escape.exec(src)) {
18432       src = src.substring(cap[0].length);
18433       out += cap[1];
18434       continue;
18435     }
18436
18437     // autolink
18438     if (cap = this.rules.autolink.exec(src)) {
18439       src = src.substring(cap[0].length);
18440       if (cap[2] === '@') {
18441         text = cap[1][6] === ':'
18442           ? this.mangle(cap[1].substring(7))
18443           : this.mangle(cap[1]);
18444         href = this.mangle('mailto:') + text;
18445       } else {
18446         text = escape(cap[1]);
18447         href = text;
18448       }
18449       out += '<a href="'
18450         + href
18451         + '">'
18452         + text
18453         + '</a>';
18454       continue;
18455     }
18456
18457     // url (gfm)
18458     if (cap = this.rules.url.exec(src)) {
18459       src = src.substring(cap[0].length);
18460       text = escape(cap[1]);
18461       href = text;
18462       out += '<a href="'
18463         + href
18464         + '">'
18465         + text
18466         + '</a>';
18467       continue;
18468     }
18469
18470     // tag
18471     if (cap = this.rules.tag.exec(src)) {
18472       src = src.substring(cap[0].length);
18473       out += this.options.sanitize
18474         ? escape(cap[0])
18475         : cap[0];
18476       continue;
18477     }
18478
18479     // link
18480     if (cap = this.rules.link.exec(src)) {
18481       src = src.substring(cap[0].length);
18482       out += this.outputLink(cap, {
18483         href: cap[2],
18484         title: cap[3]
18485       });
18486       continue;
18487     }
18488
18489     // reflink, nolink
18490     if ((cap = this.rules.reflink.exec(src))
18491         || (cap = this.rules.nolink.exec(src))) {
18492       src = src.substring(cap[0].length);
18493       link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
18494       link = this.links[link.toLowerCase()];
18495       if (!link || !link.href) {
18496         out += cap[0][0];
18497         src = cap[0].substring(1) + src;
18498         continue;
18499       }
18500       out += this.outputLink(cap, link);
18501       continue;
18502     }
18503
18504     // strong
18505     if (cap = this.rules.strong.exec(src)) {
18506       src = src.substring(cap[0].length);
18507       out += '<strong>'
18508         + this.output(cap[2] || cap[1])
18509         + '</strong>';
18510       continue;
18511     }
18512
18513     // em
18514     if (cap = this.rules.em.exec(src)) {
18515       src = src.substring(cap[0].length);
18516       out += '<em>'
18517         + this.output(cap[2] || cap[1])
18518         + '</em>';
18519       continue;
18520     }
18521
18522     // code
18523     if (cap = this.rules.code.exec(src)) {
18524       src = src.substring(cap[0].length);
18525       out += '<code>'
18526         + escape(cap[2], true)
18527         + '</code>';
18528       continue;
18529     }
18530
18531     // br
18532     if (cap = this.rules.br.exec(src)) {
18533       src = src.substring(cap[0].length);
18534       out += '<br>';
18535       continue;
18536     }
18537
18538     // del (gfm)
18539     if (cap = this.rules.del.exec(src)) {
18540       src = src.substring(cap[0].length);
18541       out += '<del>'
18542         + this.output(cap[1])
18543         + '</del>';
18544       continue;
18545     }
18546
18547     // text
18548     if (cap = this.rules.text.exec(src)) {
18549       src = src.substring(cap[0].length);
18550       out += escape(cap[0]);
18551       continue;
18552     }
18553
18554     if (src) {
18555       throw new
18556         Error('Infinite loop on byte: ' + src.charCodeAt(0));
18557     }
18558   }
18559
18560   return out;
18561 };
18562
18563 /**
18564  * Compile Link
18565  */
18566
18567 InlineLexer.prototype.outputLink = function(cap, link) {
18568   if (cap[0][0] !== '!') {
18569     return '<a href="'
18570       + escape(link.href)
18571       + '"'
18572       + (link.title
18573       ? ' title="'
18574       + escape(link.title)
18575       + '"'
18576       : '')
18577       + '>'
18578       + this.output(cap[1])
18579       + '</a>';
18580   } else {
18581     return '<img src="'
18582       + escape(link.href)
18583       + '" alt="'
18584       + escape(cap[1])
18585       + '"'
18586       + (link.title
18587       ? ' title="'
18588       + escape(link.title)
18589       + '"'
18590       : '')
18591       + '>';
18592   }
18593 };
18594
18595 /**
18596  * Smartypants Transformations
18597  */
18598
18599 InlineLexer.prototype.smartypants = function(text) {
18600   if (!this.options.smartypants) return text;
18601   return text
18602     .replace(/--/g, '—')
18603     .replace(/'([^']*)'/g, '‘$1’')
18604     .replace(/"([^"]*)"/g, '“$1”')
18605     .replace(/\.{3}/g, '…');
18606 };
18607
18608 /**
18609  * Mangle Links
18610  */
18611
18612 InlineLexer.prototype.mangle = function(text) {
18613   var out = ''
18614     , l = text.length
18615     , i = 0
18616     , ch;
18617
18618   for (; i < l; i++) {
18619     ch = text.charCodeAt(i);
18620     if (Math.random() > 0.5) {
18621       ch = 'x' + ch.toString(16);
18622     }
18623     out += '&#' + ch + ';';
18624   }
18625
18626   return out;
18627 };
18628
18629 /**
18630  * Parsing & Compiling
18631  */
18632
18633 function Parser(options) {
18634   this.tokens = [];
18635   this.token = null;
18636   this.options = options || marked.defaults;
18637 }
18638
18639 /**
18640  * Static Parse Method
18641  */
18642
18643 Parser.parse = function(src, options) {
18644   var parser = new Parser(options);
18645   return parser.parse(src);
18646 };
18647
18648 /**
18649  * Parse Loop
18650  */
18651
18652 Parser.prototype.parse = function(src) {
18653   this.inline = new InlineLexer(src.links, this.options);
18654   this.tokens = src.reverse();
18655
18656   var out = '';
18657   while (this.next()) {
18658     out += this.tok();
18659   }
18660
18661   return out;
18662 };
18663
18664 /**
18665  * Next Token
18666  */
18667
18668 Parser.prototype.next = function() {
18669   return this.token = this.tokens.pop();
18670 };
18671
18672 /**
18673  * Preview Next Token
18674  */
18675
18676 Parser.prototype.peek = function() {
18677   return this.tokens[this.tokens.length-1] || 0;
18678 };
18679
18680 /**
18681  * Parse Text Tokens
18682  */
18683
18684 Parser.prototype.parseText = function() {
18685   var body = this.token.text;
18686
18687   while (this.peek().type === 'text') {
18688     body += '\n' + this.next().text;
18689   }
18690
18691   return this.inline.output(body);
18692 };
18693
18694 /**
18695  * Parse Current Token
18696  */
18697
18698 Parser.prototype.tok = function() {
18699   switch (this.token.type) {
18700     case 'space': {
18701       return '';
18702     }
18703     case 'hr': {
18704       return '<hr>\n';
18705     }
18706     case 'heading': {
18707       return '<h'
18708         + this.token.depth
18709         + '>'
18710         + this.inline.output(this.token.text)
18711         + '</h'
18712         + this.token.depth
18713         + '>\n';
18714     }
18715     case 'code': {
18716       if (this.options.highlight) {
18717         var code = this.options.highlight(this.token.text, this.token.lang);
18718         if (code != null && code !== this.token.text) {
18719           this.token.escaped = true;
18720           this.token.text = code;
18721         }
18722       }
18723
18724       if (!this.token.escaped) {
18725         this.token.text = escape(this.token.text, true);
18726       }
18727
18728       return '<pre><code'
18729         + (this.token.lang
18730         ? ' class="'
18731         + this.options.langPrefix
18732         + this.token.lang
18733         + '"'
18734         : '')
18735         + '>'
18736         + this.token.text
18737         + '</code></pre>\n';
18738     }
18739     case 'table': {
18740       var body = ''
18741         , heading
18742         , i
18743         , row
18744         , cell
18745         , j;
18746
18747       // header
18748       body += '<thead>\n<tr>\n';
18749       for (i = 0; i < this.token.header.length; i++) {
18750         heading = this.inline.output(this.token.header[i]);
18751         body += this.token.align[i]
18752           ? '<th align="' + this.token.align[i] + '">' + heading + '</th>\n'
18753           : '<th>' + heading + '</th>\n';
18754       }
18755       body += '</tr>\n</thead>\n';
18756
18757       // body
18758       body += '<tbody>\n'
18759       for (i = 0; i < this.token.cells.length; i++) {
18760         row = this.token.cells[i];
18761         body += '<tr>\n';
18762         for (j = 0; j < row.length; j++) {
18763           cell = this.inline.output(row[j]);
18764           body += this.token.align[j]
18765             ? '<td align="' + this.token.align[j] + '">' + cell + '</td>\n'
18766             : '<td>' + cell + '</td>\n';
18767         }
18768         body += '</tr>\n';
18769       }
18770       body += '</tbody>\n';
18771
18772       return '<table>\n'
18773         + body
18774         + '</table>\n';
18775     }
18776     case 'blockquote_start': {
18777       var body = '';
18778
18779       while (this.next().type !== 'blockquote_end') {
18780         body += this.tok();
18781       }
18782
18783       return '<blockquote>\n'
18784         + body
18785         + '</blockquote>\n';
18786     }
18787     case 'list_start': {
18788       var type = this.token.ordered ? 'ol' : 'ul'
18789         , body = '';
18790
18791       while (this.next().type !== 'list_end') {
18792         body += this.tok();
18793       }
18794
18795       return '<'
18796         + type
18797         + '>\n'
18798         + body
18799         + '</'
18800         + type
18801         + '>\n';
18802     }
18803     case 'list_item_start': {
18804       var body = '';
18805
18806       while (this.next().type !== 'list_item_end') {
18807         body += this.token.type === 'text'
18808           ? this.parseText()
18809           : this.tok();
18810       }
18811
18812       return '<li>'
18813         + body
18814         + '</li>\n';
18815     }
18816     case 'loose_item_start': {
18817       var body = '';
18818
18819       while (this.next().type !== 'list_item_end') {
18820         body += this.tok();
18821       }
18822
18823       return '<li>'
18824         + body
18825         + '</li>\n';
18826     }
18827     case 'html': {
18828       return !this.token.pre && !this.options.pedantic
18829         ? this.inline.output(this.token.text)
18830         : this.token.text;
18831     }
18832     case 'paragraph': {
18833       return '<p>'
18834         + this.inline.output(this.token.text)
18835         + '</p>\n';
18836     }
18837     case 'text': {
18838       return '<p>'
18839         + this.parseText()
18840         + '</p>\n';
18841     }
18842   }
18843 };
18844
18845 /**
18846  * Helpers
18847  */
18848
18849 function escape(html, encode) {
18850   return html
18851     .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
18852     .replace(/</g, '&lt;')
18853     .replace(/>/g, '&gt;')
18854     .replace(/"/g, '&quot;')
18855     .replace(/'/g, '&#39;');
18856 }
18857
18858 function replace(regex, opt) {
18859   regex = regex.source;
18860   opt = opt || '';
18861   return function self(name, val) {
18862     if (!name) return new RegExp(regex, opt);
18863     val = val.source || val;
18864     val = val.replace(/(^|[^\[])\^/g, '$1');
18865     regex = regex.replace(name, val);
18866     return self;
18867   };
18868 }
18869
18870 function noop() {}
18871 noop.exec = noop;
18872
18873 function merge(obj) {
18874   var i = 1
18875     , target
18876     , key;
18877
18878   for (; i < arguments.length; i++) {
18879     target = arguments[i];
18880     for (key in target) {
18881       if (Object.prototype.hasOwnProperty.call(target, key)) {
18882         obj[key] = target[key];
18883       }
18884     }
18885   }
18886
18887   return obj;
18888 }
18889
18890 /**
18891  * Marked
18892  */
18893
18894 function marked(src, opt, callback) {
18895   if (callback || typeof opt === 'function') {
18896     if (!callback) {
18897       callback = opt;
18898       opt = null;
18899     }
18900
18901     if (opt) opt = merge({}, marked.defaults, opt);
18902
18903     var tokens = Lexer.lex(tokens, opt)
18904       , highlight = opt.highlight
18905       , pending = 0
18906       , l = tokens.length
18907       , i = 0;
18908
18909     if (!highlight || highlight.length < 3) {
18910       return callback(null, Parser.parse(tokens, opt));
18911     }
18912
18913     var done = function() {
18914       delete opt.highlight;
18915       var out = Parser.parse(tokens, opt);
18916       opt.highlight = highlight;
18917       return callback(null, out);
18918     };
18919
18920     for (; i < l; i++) {
18921       (function(token) {
18922         if (token.type !== 'code') return;
18923         pending++;
18924         return highlight(token.text, token.lang, function(err, code) {
18925           if (code == null || code === token.text) {
18926             return --pending || done();
18927           }
18928           token.text = code;
18929           token.escaped = true;
18930           --pending || done();
18931         });
18932       })(tokens[i]);
18933     }
18934
18935     return;
18936   }
18937   try {
18938     if (opt) opt = merge({}, marked.defaults, opt);
18939     return Parser.parse(Lexer.lex(src, opt), opt);
18940   } catch (e) {
18941     e.message += '\nPlease report this to https://github.com/chjj/marked.';
18942     if ((opt || marked.defaults).silent) {
18943       return '<p>An error occured:</p><pre>'
18944         + escape(e.message + '', true)
18945         + '</pre>';
18946     }
18947     throw e;
18948   }
18949 }
18950
18951 /**
18952  * Options
18953  */
18954
18955 marked.options =
18956 marked.setOptions = function(opt) {
18957   merge(marked.defaults, opt);
18958   return marked;
18959 };
18960
18961 marked.defaults = {
18962   gfm: true,
18963   tables: true,
18964   breaks: false,
18965   pedantic: false,
18966   sanitize: false,
18967   smartLists: false,
18968   silent: false,
18969   highlight: null,
18970   langPrefix: 'lang-'
18971 };
18972
18973 /**
18974  * Expose
18975  */
18976
18977 marked.Parser = Parser;
18978 marked.parser = Parser.parse;
18979
18980 marked.Lexer = Lexer;
18981 marked.lexer = Lexer.lex;
18982
18983 marked.InlineLexer = InlineLexer;
18984 marked.inlineLexer = InlineLexer.output;
18985
18986 marked.parse = marked;
18987
18988 if (typeof exports === 'object') {
18989   module.exports = marked;
18990 } else if (typeof define === 'function' && define.amd) {
18991   define(function() { return marked; });
18992 } else {
18993   this.marked = marked;
18994 }
18995
18996 }).call(function() {
18997   return this || (typeof window !== 'undefined' ? window : global);
18998 }());
18999 (function () {
19000 'use strict';
19001 window.iD = function () {
19002     window.locale.en = iD.data.en;
19003     window.locale.current('en');
19004
19005     var context = {},
19006         storage;
19007
19008     // https://github.com/openstreetmap/iD/issues/772
19009     // http://mathiasbynens.be/notes/localstorage-pattern#comment-9
19010     try { storage = localStorage; } catch (e) {}  // eslint-disable-line no-empty
19011     storage = storage || (function() {
19012         var s = {};
19013         return {
19014             getItem: function(k) { return s[k]; },
19015             setItem: function(k, v) { s[k] = v; },
19016             removeItem: function(k) { delete s[k]; }
19017         };
19018     })();
19019
19020     context.storage = function(k, v) {
19021         try {
19022             if (arguments.length === 1) return storage.getItem(k);
19023             else if (v === null) storage.removeItem(k);
19024             else storage.setItem(k, v);
19025         } catch(e) {
19026             // localstorage quota exceeded
19027             /* eslint-disable no-console */
19028             if (typeof console !== 'undefined') console.error('localStorage quota exceeded');
19029             /* eslint-enable no-console */
19030         }
19031     };
19032
19033     /* Accessor for setting minimum zoom for editing features. */
19034
19035     var minEditableZoom = 16;
19036     context.minEditableZoom = function(_) {
19037         if (!arguments.length) return minEditableZoom;
19038         minEditableZoom = _;
19039         connection.tileZoom(_);
19040         return context;
19041     };
19042
19043     var history = iD.History(context),
19044         dispatch = d3.dispatch('enter', 'exit'),
19045         mode,
19046         container,
19047         ui = iD.ui(context),
19048         connection = iD.Connection(),
19049         locale = iD.detect().locale,
19050         localePath;
19051
19052     if (locale && iD.data.locales.indexOf(locale) === -1) {
19053         locale = locale.split('-')[0];
19054     }
19055
19056     context.preauth = function(options) {
19057         connection.switch(options);
19058         return context;
19059     };
19060
19061     context.locale = function(loc, path) {
19062         locale = loc;
19063         localePath = path;
19064
19065         // Also set iD.detect().locale (unless we detected 'en-us' and openstreetmap wants 'en')..
19066         if (!(loc.toLowerCase() === 'en' && iD.detect().locale.toLowerCase() === 'en-us')) {
19067             iD.detect().locale = loc;
19068         }
19069
19070         return context;
19071     };
19072
19073     context.loadLocale = function(cb) {
19074         if (locale && locale !== 'en' && iD.data.locales.indexOf(locale) !== -1) {
19075             localePath = localePath || context.assetPath() + 'locales/' + locale + '.json';
19076             d3.json(localePath, function(err, result) {
19077                 window.locale[locale] = result;
19078                 window.locale.current(locale);
19079                 cb();
19080             });
19081         } else {
19082             cb();
19083         }
19084     };
19085
19086     /* Straight accessors. Avoid using these if you can. */
19087     context.ui = function() { return ui; };
19088     context.connection = function() { return connection; };
19089     context.history = function() { return history; };
19090
19091     /* Connection */
19092     function entitiesLoaded(err, result) {
19093         if (!err) history.merge(result.data, result.extent);
19094     }
19095
19096     context.loadTiles = function(projection, dimensions, callback) {
19097         function done(err, result) {
19098             entitiesLoaded(err, result);
19099             if (callback) callback(err, result);
19100         }
19101         connection.loadTiles(projection, dimensions, done);
19102     };
19103
19104     context.loadEntity = function(id, callback) {
19105         function done(err, result) {
19106             entitiesLoaded(err, result);
19107             if (callback) callback(err, result);
19108         }
19109         connection.loadEntity(id, done);
19110     };
19111
19112     context.zoomToEntity = function(id, zoomTo) {
19113         if (zoomTo !== false) {
19114             this.loadEntity(id, function(err, result) {
19115                 if (err) return;
19116                 var entity = _.find(result.data, function(e) { return e.id === id; });
19117                 if (entity) { map.zoomTo(entity); }
19118             });
19119         }
19120
19121         map.on('drawn.zoomToEntity', function() {
19122             if (!context.hasEntity(id)) return;
19123             map.on('drawn.zoomToEntity', null);
19124             context.on('enter.zoomToEntity', null);
19125             context.enter(iD.modes.Select(context, [id]));
19126         });
19127
19128         context.on('enter.zoomToEntity', function() {
19129             if (mode.id !== 'browse') {
19130                 map.on('drawn.zoomToEntity', null);
19131                 context.on('enter.zoomToEntity', null);
19132             }
19133         });
19134     };
19135
19136     /* History */
19137     context.graph = history.graph;
19138     context.changes = history.changes;
19139     context.intersects = history.intersects;
19140
19141     var inIntro = false;
19142
19143     context.inIntro = function(_) {
19144         if (!arguments.length) return inIntro;
19145         inIntro = _;
19146         return context;
19147     };
19148
19149     context.save = function() {
19150         if (inIntro || (mode && mode.id === 'save')) return;
19151         history.save();
19152         if (history.hasChanges()) return t('save.unsaved_changes');
19153     };
19154
19155     context.flush = function() {
19156         connection.flush();
19157         features.reset();
19158         history.reset();
19159         return context;
19160     };
19161
19162     // Debounce save, since it's a synchronous localStorage write,
19163     // and history changes can happen frequently (e.g. when dragging).
19164     var debouncedSave = _.debounce(context.save, 350);
19165     function withDebouncedSave(fn) {
19166         return function() {
19167             var result = fn.apply(history, arguments);
19168             debouncedSave();
19169             return result;
19170         };
19171     }
19172
19173     context.perform = withDebouncedSave(history.perform);
19174     context.replace = withDebouncedSave(history.replace);
19175     context.pop = withDebouncedSave(history.pop);
19176     context.overwrite = withDebouncedSave(history.overwrite);
19177     context.undo = withDebouncedSave(history.undo);
19178     context.redo = withDebouncedSave(history.redo);
19179
19180     /* Graph */
19181     context.hasEntity = function(id) {
19182         return history.graph().hasEntity(id);
19183     };
19184
19185     context.entity = function(id) {
19186         return history.graph().entity(id);
19187     };
19188
19189     context.childNodes = function(way) {
19190         return history.graph().childNodes(way);
19191     };
19192
19193     context.geometry = function(id) {
19194         return context.entity(id).geometry(history.graph());
19195     };
19196
19197     /* Modes */
19198     context.enter = function(newMode) {
19199         if (mode) {
19200             mode.exit();
19201             dispatch.exit(mode);
19202         }
19203
19204         mode = newMode;
19205         mode.enter();
19206         dispatch.enter(mode);
19207     };
19208
19209     context.mode = function() {
19210         return mode;
19211     };
19212
19213     context.selectedIDs = function() {
19214         if (mode && mode.selectedIDs) {
19215             return mode.selectedIDs();
19216         } else {
19217             return [];
19218         }
19219     };
19220
19221     /* Behaviors */
19222     context.install = function(behavior) {
19223         context.surface().call(behavior);
19224     };
19225
19226     context.uninstall = function(behavior) {
19227         context.surface().call(behavior.off);
19228     };
19229
19230     /* Copy/Paste */
19231     var copyIDs = [], copyGraph;
19232     context.copyGraph = function() { return copyGraph; };
19233     context.copyIDs = function(_) {
19234         if (!arguments.length) return copyIDs;
19235         copyIDs = _;
19236         copyGraph = history.graph();
19237         return context;
19238     };
19239
19240     /* Projection */
19241     context.projection = iD.geo.RawMercator();
19242
19243     /* Background */
19244     var background = iD.Background(context);
19245     context.background = function() { return background; };
19246
19247     /* Features */
19248     var features = iD.Features(context);
19249     context.features = function() { return features; };
19250     context.hasHiddenConnections = function(id) {
19251         var graph = history.graph(),
19252             entity = graph.entity(id);
19253         return features.hasHiddenConnections(entity, graph);
19254     };
19255
19256     /* Map */
19257     var map = iD.Map(context);
19258     context.map = function() { return map; };
19259     context.layers = function() { return map.layers; };
19260     context.surface = function() { return map.surface; };
19261     context.editable = function() { return map.editable(); };
19262     context.mouse = map.mouse;
19263     context.extent = map.extent;
19264     context.pan = map.pan;
19265     context.zoomIn = map.zoomIn;
19266     context.zoomOut = map.zoomOut;
19267     context.zoomInFurther = map.zoomInFurther;
19268     context.zoomOutFurther = map.zoomOutFurther;
19269
19270     context.surfaceRect = function() {
19271         // Work around a bug in Firefox.
19272         //   http://stackoverflow.com/questions/18153989/
19273         //   https://bugzilla.mozilla.org/show_bug.cgi?id=530985
19274         return context.surface().node().parentNode.getBoundingClientRect();
19275     };
19276
19277     /* Presets */
19278     var presets = iD.presets();
19279
19280     context.presets = function(_) {
19281         if (!arguments.length) return presets;
19282         presets.load(_);
19283         iD.areaKeys = presets.areaKeys();
19284         return context;
19285     };
19286
19287     context.imagery = function(_) {
19288         background.load(_);
19289         return context;
19290     };
19291
19292     context.container = function(_) {
19293         if (!arguments.length) return container;
19294         container = _;
19295         container.classed('id-container', true);
19296         return context;
19297     };
19298
19299     /* Taginfo */
19300     var taginfo;
19301     context.taginfo = function(_) {
19302         if (!arguments.length) return taginfo;
19303         taginfo = _;
19304         return context;
19305     };
19306
19307     var embed = false;
19308     context.embed = function(_) {
19309         if (!arguments.length) return embed;
19310         embed = _;
19311         return context;
19312     };
19313
19314     var assetPath = '';
19315     context.assetPath = function(_) {
19316         if (!arguments.length) return assetPath;
19317         assetPath = _;
19318         return context;
19319     };
19320
19321     var assetMap = {};
19322     context.assetMap = function(_) {
19323         if (!arguments.length) return assetMap;
19324         assetMap = _;
19325         return context;
19326     };
19327
19328     context.imagePath = function(_) {
19329         var asset = 'img/' + _;
19330         return assetMap[asset] || assetPath + asset;
19331     };
19332
19333     return d3.rebind(context, dispatch, 'on');
19334 };
19335
19336 iD.version = '1.7.4';
19337
19338 (function() {
19339     var detected = {};
19340
19341     var ua = navigator.userAgent,
19342         m = null;
19343
19344     m = ua.match(/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i);   // IE11+
19345     if (m !== null) {
19346         detected.browser = 'msie';
19347         detected.version = m[1];
19348     }
19349     if (!detected.browser) {
19350         m = ua.match(/(opr)\/?\s*(\.?\d+(\.\d+)*)/i);   // Opera 15+
19351         if (m !== null) {
19352             detected.browser = 'Opera';
19353             detected.version = m[2];
19354         }
19355     }
19356     if (!detected.browser) {
19357         m = ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
19358         if (m !== null) {
19359             detected.browser = m[1];
19360             detected.version = m[2];
19361             m = ua.match(/version\/([\.\d]+)/i);
19362             if (m !== null) detected.version = m[1];
19363         }
19364     }
19365     if (!detected.browser) {
19366         detected.browser = navigator.appName;
19367         detected.version = navigator.appVersion;
19368     }
19369
19370     // keep major.minor version only..
19371     detected.version = detected.version.split(/\W/).slice(0,2).join('.');
19372
19373     if (detected.browser.toLowerCase() === 'msie') {
19374         detected.browser = 'Internet Explorer';
19375         detected.support = parseFloat(detected.version) > 9;
19376     } else {
19377         detected.support = true;
19378     }
19379
19380     // Added due to incomplete svg style support. See #715
19381     detected.opera = (detected.browser.toLowerCase() === 'opera' && parseFloat(detected.version) < 15 );
19382
19383     detected.locale = navigator.language || navigator.userLanguage || 'en-US';
19384
19385     detected.filedrop = (window.FileReader && 'ondrop' in window);
19386
19387     function nav(x) {
19388         return navigator.userAgent.indexOf(x) !== -1;
19389     }
19390
19391     if (nav('Win')) {
19392         detected.os = 'win';
19393         detected.platform = 'Windows';
19394     }
19395     else if (nav('Mac')) {
19396         detected.os = 'mac';
19397         detected.platform = 'Macintosh';
19398     }
19399     else if (nav('X11') || nav('Linux')) {
19400         detected.os = 'linux';
19401         detected.platform = 'Linux';
19402     }
19403     else {
19404         detected.os = 'win';
19405         detected.platform = 'Unknown';
19406     }
19407
19408     iD.detect = function() { return detected; };
19409 })();
19410 iD.countryCode  = function() {
19411     var countryCode = {},
19412         endpoint = 'https://nominatim.openstreetmap.org/reverse?';
19413
19414     if (!iD.countryCode.cache) {
19415         iD.countryCode.cache = rbush();
19416     }
19417
19418     var cache = iD.countryCode.cache;
19419
19420     countryCode.search = function(location, callback) {
19421         var countryCodes = cache.search([location[0], location[1], location[0], location[1]]);
19422
19423         if (countryCodes.length > 0)
19424             return callback(null, countryCodes[0][4]);
19425
19426         d3.json(endpoint +
19427             iD.util.qsString({
19428                 format: 'json',
19429                 addressdetails: 1,
19430                 lat: location[1],
19431                 lon: location[0]
19432             }), function(err, result) {
19433                 if (err)
19434                     return callback(err);
19435                 else if (result && result.error)
19436                     return callback(result.error);
19437
19438                 var extent = iD.geo.Extent(location).padByMeters(1000);
19439
19440                 cache.insert([extent[0][0], extent[0][1], extent[1][0], extent[1][1], result.address.country_code]);
19441
19442                 callback(null, result.address.country_code);
19443             });
19444     };
19445
19446     return countryCode;
19447 };
19448 iD.taginfo = function() {
19449     var taginfo = {},
19450         endpoint = 'https://taginfo.openstreetmap.org/api/4/',
19451         tag_sorts = {
19452             point: 'count_nodes',
19453             vertex: 'count_nodes',
19454             area: 'count_ways',
19455             line: 'count_ways'
19456         },
19457         tag_filters = {
19458             point: 'nodes',
19459             vertex: 'nodes',
19460             area: 'ways',
19461             line: 'ways'
19462         };
19463
19464     if (!iD.taginfo.cache) {
19465         iD.taginfo.cache = {};
19466     }
19467
19468     var cache = iD.taginfo.cache;
19469
19470     function sets(parameters, n, o) {
19471         if (parameters.geometry && o[parameters.geometry]) {
19472             parameters[n] = o[parameters.geometry];
19473         }
19474         return parameters;
19475     }
19476
19477     function setFilter(parameters) {
19478         return sets(parameters, 'filter', tag_filters);
19479     }
19480
19481     function setSort(parameters) {
19482         return sets(parameters, 'sortname', tag_sorts);
19483     }
19484
19485     function clean(parameters) {
19486         return _.omit(parameters, 'geometry', 'debounce');
19487     }
19488
19489     function shorten(parameters) {
19490         if (!parameters.query) {
19491             delete parameters.query;
19492         } else {
19493             parameters.query = parameters.query.slice(0, 3);
19494         }
19495         return parameters;
19496     }
19497
19498     function popularKeys(parameters) {
19499         var pop_field = 'count_all';
19500         if (parameters.filter) pop_field = 'count_' + parameters.filter;
19501         return function(d) { return parseFloat(d[pop_field]) > 10000; };
19502     }
19503
19504     function popularValues() {
19505         return function(d) { return parseFloat(d.fraction) > 0.01 || d.in_wiki; };
19506     }
19507
19508     function valKey(d) { return { value: d.key }; }
19509
19510     function valKeyDescription(d) {
19511         return {
19512             value: d.value,
19513             title: d.description
19514         };
19515     }
19516
19517     var debounced = _.debounce(d3.json, 100, true);
19518
19519     function request(url, debounce, callback) {
19520         if (cache[url]) {
19521             callback(null, cache[url]);
19522         } else if (debounce) {
19523             debounced(url, done);
19524         } else {
19525             d3.json(url, done);
19526         }
19527
19528         function done(err, data) {
19529             if (!err) cache[url] = data;
19530             callback(err, data);
19531         }
19532     }
19533
19534     taginfo.keys = function(parameters, callback) {
19535         var debounce = parameters.debounce;
19536         parameters = clean(shorten(setSort(parameters)));
19537         request(endpoint + 'keys/all?' +
19538             iD.util.qsString(_.extend({
19539                 rp: 10,
19540                 sortname: 'count_all',
19541                 sortorder: 'desc',
19542                 page: 1
19543             }, parameters)), debounce, function(err, d) {
19544                 if (err) return callback(err);
19545                 callback(null, d.data.filter(popularKeys(parameters)).map(valKey));
19546             });
19547     };
19548
19549     taginfo.values = function(parameters, callback) {
19550         var debounce = parameters.debounce;
19551         parameters = clean(shorten(setSort(setFilter(parameters))));
19552         request(endpoint + 'key/values?' +
19553             iD.util.qsString(_.extend({
19554                 rp: 25,
19555                 sortname: 'count_all',
19556                 sortorder: 'desc',
19557                 page: 1
19558             }, parameters)), debounce, function(err, d) {
19559                 if (err) return callback(err);
19560                 callback(null, d.data.filter(popularValues()).map(valKeyDescription), parameters);
19561             });
19562     };
19563
19564     taginfo.docs = function(parameters, callback) {
19565         var debounce = parameters.debounce;
19566         parameters = clean(setSort(parameters));
19567
19568         var path = 'key/wiki_pages?';
19569         if (parameters.value) path = 'tag/wiki_pages?';
19570         else if (parameters.rtype) path = 'relation/wiki_pages?';
19571
19572         var decoratedCallback;
19573         if (parameters.value) {
19574             decoratedCallback = function(err, data) {
19575                 // The third argument to callback is the softfail flag, to
19576                 // make the callback function not show a message to the end
19577                 // user when no docs are found but just return false.
19578                 var docsFound = callback(err, data, true);
19579                 if (!docsFound) {
19580                     taginfo.docs(_.omit(parameters, 'value'), callback);
19581                 }
19582             };
19583         }
19584
19585         request(endpoint + path +
19586             iD.util.qsString(parameters), debounce, decoratedCallback || callback);
19587     };
19588
19589     taginfo.endpoint = function(_) {
19590         if (!arguments.length) return endpoint;
19591         endpoint = _;
19592         return taginfo;
19593     };
19594
19595     return taginfo;
19596 };
19597 iD.wikipedia  = function() {
19598     var wiki = {},
19599         endpoint = 'https://en.wikipedia.org/w/api.php?';
19600
19601     wiki.search = function(lang, query, callback) {
19602         lang = lang || 'en';
19603         d3.jsonp(endpoint.replace('en', lang) +
19604             iD.util.qsString({
19605                 action: 'query',
19606                 list: 'search',
19607                 srlimit: '10',
19608                 srinfo: 'suggestion',
19609                 format: 'json',
19610                 callback: '{callback}',
19611                 srsearch: query
19612             }), function(data) {
19613                 if (!data.query) return;
19614                 callback(query, data.query.search.map(function(d) {
19615                     return d.title;
19616                 }));
19617             });
19618     };
19619
19620     wiki.suggestions = function(lang, query, callback) {
19621         lang = lang || 'en';
19622         d3.jsonp(endpoint.replace('en', lang) +
19623             iD.util.qsString({
19624                 action: 'opensearch',
19625                 namespace: 0,
19626                 suggest: '',
19627                 format: 'json',
19628                 callback: '{callback}',
19629                 search: query
19630             }), function(d) {
19631                 callback(d[0], d[1]);
19632             });
19633     };
19634
19635     wiki.translations = function(lang, title, callback) {
19636         d3.jsonp(endpoint.replace('en', lang) +
19637             iD.util.qsString({
19638                 action: 'query',
19639                 prop: 'langlinks',
19640                 format: 'json',
19641                 callback: '{callback}',
19642                 lllimit: 500,
19643                 titles: title
19644             }), function(d) {
19645                 var list = d.query.pages[Object.keys(d.query.pages)[0]],
19646                     translations = {};
19647                 if (list && list.langlinks) {
19648                     list.langlinks.forEach(function(d) {
19649                         translations[d.lang] = d['*'];
19650                     });
19651                     callback(translations);
19652                 }
19653             });
19654     };
19655
19656     return wiki;
19657 };
19658 iD.util = {};
19659
19660 iD.util.tagText = function(entity) {
19661     return d3.entries(entity.tags).map(function(e) {
19662         return e.key + '=' + e.value;
19663     }).join(', ');
19664 };
19665
19666 iD.util.entitySelector = function(ids) {
19667     return ids.length ? '.' + ids.join(',.') : 'nothing';
19668 };
19669
19670 iD.util.entityOrMemberSelector = function(ids, graph) {
19671     var s = iD.util.entitySelector(ids);
19672
19673     ids.forEach(function(id) {
19674         var entity = graph.hasEntity(id);
19675         if (entity && entity.type === 'relation') {
19676             entity.members.forEach(function(member) {
19677                 s += ',.' + member.id;
19678             });
19679         }
19680     });
19681
19682     return s;
19683 };
19684
19685 iD.util.displayName = function(entity) {
19686     var localeName = 'name:' + iD.detect().locale.toLowerCase().split('-')[0];
19687     return entity.tags[localeName] || entity.tags.name || entity.tags.ref;
19688 };
19689
19690 iD.util.displayType = function(id) {
19691     return {
19692         n: t('inspector.node'),
19693         w: t('inspector.way'),
19694         r: t('inspector.relation')
19695     }[id.charAt(0)];
19696 };
19697
19698 iD.util.stringQs = function(str) {
19699     return str.split('&').reduce(function(obj, pair){
19700         var parts = pair.split('=');
19701         if (parts.length === 2) {
19702             obj[parts[0]] = (null === parts[1]) ? '' : decodeURIComponent(parts[1]);
19703         }
19704         return obj;
19705     }, {});
19706 };
19707
19708 iD.util.qsString = function(obj, noencode) {
19709     function softEncode(s) {
19710       // encode everything except special characters used in certain hash parameters:
19711       // "/" in map states, ":", ",", {" and "}" in background
19712       return encodeURIComponent(s).replace(/(%2F|%3A|%2C|%7B|%7D)/g, decodeURIComponent);
19713     }
19714     return Object.keys(obj).sort().map(function(key) {
19715         return encodeURIComponent(key) + '=' + (
19716             noencode ? softEncode(obj[key]) : encodeURIComponent(obj[key]));
19717     }).join('&');
19718 };
19719
19720 iD.util.prefixDOMProperty = function(property) {
19721     var prefixes = ['webkit', 'ms', 'moz', 'o'],
19722         i = -1,
19723         n = prefixes.length,
19724         s = document.body;
19725
19726     if (property in s)
19727         return property;
19728
19729     property = property.substr(0, 1).toUpperCase() + property.substr(1);
19730
19731     while (++i < n)
19732         if (prefixes[i] + property in s)
19733             return prefixes[i] + property;
19734
19735     return false;
19736 };
19737
19738 iD.util.prefixCSSProperty = function(property) {
19739     var prefixes = ['webkit', 'ms', 'Moz', 'O'],
19740         i = -1,
19741         n = prefixes.length,
19742         s = document.body.style;
19743
19744     if (property.toLowerCase() in s)
19745         return property.toLowerCase();
19746
19747     while (++i < n)
19748         if (prefixes[i] + property in s)
19749             return '-' + prefixes[i].toLowerCase() + property.replace(/([A-Z])/g, '-$1').toLowerCase();
19750
19751     return false;
19752 };
19753
19754
19755 iD.util.setTransform = function(el, x, y, scale) {
19756     var prop = iD.util.transformProperty = iD.util.transformProperty || iD.util.prefixCSSProperty('Transform'),
19757         translate = iD.detect().opera ?
19758             'translate('   + x + 'px,' + y + 'px)' :
19759             'translate3d(' + x + 'px,' + y + 'px,0)';
19760     return el.style(prop, translate + (scale ? ' scale(' + scale + ')' : ''));
19761 };
19762
19763 iD.util.getStyle = function(selector) {
19764     for (var i = 0; i < document.styleSheets.length; i++) {
19765         var rules = document.styleSheets[i].rules || document.styleSheets[i].cssRules || [];
19766         for (var k = 0; k < rules.length; k++) {
19767             var selectorText = rules[k].selectorText && rules[k].selectorText.split(', ');
19768             if (_.contains(selectorText, selector)) {
19769                 return rules[k];
19770             }
19771         }
19772     }
19773 };
19774
19775 iD.util.editDistance = function(a, b) {
19776     if (a.length === 0) return b.length;
19777     if (b.length === 0) return a.length;
19778     var matrix = [];
19779     for (var i = 0; i <= b.length; i++) { matrix[i] = [i]; }
19780     for (var j = 0; j <= a.length; j++) { matrix[0][j] = j; }
19781     for (i = 1; i <= b.length; i++) {
19782         for (j = 1; j <= a.length; j++) {
19783             if (b.charAt(i-1) === a.charAt(j-1)) {
19784                 matrix[i][j] = matrix[i-1][j-1];
19785             } else {
19786                 matrix[i][j] = Math.min(matrix[i-1][j-1] + 1, // substitution
19787                     Math.min(matrix[i][j-1] + 1, // insertion
19788                     matrix[i-1][j] + 1)); // deletion
19789             }
19790         }
19791     }
19792     return matrix[b.length][a.length];
19793 };
19794
19795 // a d3.mouse-alike which
19796 // 1. Only works on HTML elements, not SVG
19797 // 2. Does not cause style recalculation
19798 iD.util.fastMouse = function(container) {
19799     var rect = container.getBoundingClientRect(),
19800         rectLeft = rect.left,
19801         rectTop = rect.top,
19802         clientLeft = +container.clientLeft,
19803         clientTop = +container.clientTop;
19804     return function(e) {
19805         return [
19806             e.clientX - rectLeft - clientLeft,
19807             e.clientY - rectTop - clientTop];
19808     };
19809 };
19810
19811 /* eslint-disable no-proto */
19812 iD.util.getPrototypeOf = Object.getPrototypeOf || function(obj) { return obj.__proto__; };
19813 /* eslint-enable no-proto */
19814
19815 iD.util.asyncMap = function(inputs, func, callback) {
19816     var remaining = inputs.length,
19817         results = [],
19818         errors = [];
19819
19820     inputs.forEach(function(d, i) {
19821         func(d, function done(err, data) {
19822             errors[i] = err;
19823             results[i] = data;
19824             remaining--;
19825             if (!remaining) callback(errors, results);
19826         });
19827     });
19828 };
19829
19830 // wraps an index to an interval [0..length-1]
19831 iD.util.wrap = function(index, length) {
19832     if (index < 0)
19833         index += Math.ceil(-index/length)*length;
19834     return index % length;
19835 };
19836 // A per-domain session mutex backed by a cookie and dead man's
19837 // switch. If the session crashes, the mutex will auto-release
19838 // after 5 seconds.
19839
19840 iD.util.SessionMutex = function(name) {
19841     var mutex = {},
19842         intervalID;
19843
19844     function renew() {
19845         var expires = new Date();
19846         expires.setSeconds(expires.getSeconds() + 5);
19847         document.cookie = name + '=1; expires=' + expires.toUTCString();
19848     }
19849
19850     mutex.lock = function() {
19851         if (intervalID) return true;
19852         var cookie = document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + name + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1');
19853         if (cookie) return false;
19854         renew();
19855         intervalID = window.setInterval(renew, 4000);
19856         return true;
19857     };
19858
19859     mutex.unlock = function() {
19860         if (!intervalID) return;
19861         document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT';
19862         clearInterval(intervalID);
19863         intervalID = null;
19864     };
19865
19866     mutex.locked = function() {
19867         return !!intervalID;
19868     };
19869
19870     return mutex;
19871 };
19872 iD.util.SuggestNames = function(preset, suggestions) {
19873     preset = preset.id.split('/', 2);
19874     var k = preset[0],
19875         v = preset[1];
19876
19877     return function(value, callback) {
19878         var result = [];
19879         if (value && value.length > 2) {
19880             if (suggestions[k] && suggestions[k][v]) {
19881                 for (var sugg in suggestions[k][v]) {
19882                     var dist = iD.util.editDistance(value, sugg.substring(0, value.length));
19883                     if (dist < 3) {
19884                         result.push({
19885                             title: sugg,
19886                             value: sugg,
19887                             dist: dist
19888                         });
19889                     }
19890                 }
19891             }
19892             result.sort(function(a, b) {
19893                 return a.dist - b.dist;
19894             });
19895         }
19896         result = result.slice(0,3);
19897         callback(result);
19898     };
19899 };
19900 iD.geo = {};
19901
19902 iD.geo.roundCoords = function(c) {
19903     return [Math.floor(c[0]), Math.floor(c[1])];
19904 };
19905
19906 iD.geo.interp = function(p1, p2, t) {
19907     return [p1[0] + (p2[0] - p1[0]) * t,
19908             p1[1] + (p2[1] - p1[1]) * t];
19909 };
19910
19911 // 2D cross product of OA and OB vectors, i.e. z-component of their 3D cross product.
19912 // Returns a positive value, if OAB makes a counter-clockwise turn,
19913 // negative for clockwise turn, and zero if the points are collinear.
19914 iD.geo.cross = function(o, a, b) {
19915     return (a[0] - o[0]) * (b[1] - o[1]) - (a[1] - o[1]) * (b[0] - o[0]);
19916 };
19917
19918 // http://jsperf.com/id-dist-optimization
19919 iD.geo.euclideanDistance = function(a, b) {
19920     var x = a[0] - b[0], y = a[1] - b[1];
19921     return Math.sqrt((x * x) + (y * y));
19922 };
19923
19924 // using WGS84 polar radius (6356752.314245179 m)
19925 // const = 2 * PI * r / 360
19926 iD.geo.latToMeters = function(dLat) {
19927     return dLat * 110946.257617;
19928 };
19929
19930 // using WGS84 equatorial radius (6378137.0 m)
19931 // const = 2 * PI * r / 360
19932 iD.geo.lonToMeters = function(dLon, atLat) {
19933     return Math.abs(atLat) >= 90 ? 0 :
19934         dLon * 111319.490793 * Math.abs(Math.cos(atLat * (Math.PI/180)));
19935 };
19936
19937 // using WGS84 polar radius (6356752.314245179 m)
19938 // const = 2 * PI * r / 360
19939 iD.geo.metersToLat = function(m) {
19940     return m / 110946.257617;
19941 };
19942
19943 // using WGS84 equatorial radius (6378137.0 m)
19944 // const = 2 * PI * r / 360
19945 iD.geo.metersToLon = function(m, atLat) {
19946     return Math.abs(atLat) >= 90 ? 0 :
19947         m / 111319.490793 / Math.abs(Math.cos(atLat * (Math.PI/180)));
19948 };
19949
19950 // Equirectangular approximation of spherical distances on Earth
19951 iD.geo.sphericalDistance = function(a, b) {
19952     var x = iD.geo.lonToMeters(a[0] - b[0], (a[1] + b[1]) / 2),
19953         y = iD.geo.latToMeters(a[1] - b[1]);
19954     return Math.sqrt((x * x) + (y * y));
19955 };
19956
19957 iD.geo.edgeEqual = function(a, b) {
19958     return (a[0] === b[0] && a[1] === b[1]) ||
19959         (a[0] === b[1] && a[1] === b[0]);
19960 };
19961
19962 // Return the counterclockwise angle in the range (-pi, pi)
19963 // between the positive X axis and the line intersecting a and b.
19964 iD.geo.angle = function(a, b, projection) {
19965     a = projection(a.loc);
19966     b = projection(b.loc);
19967     return Math.atan2(b[1] - a[1], b[0] - a[0]);
19968 };
19969
19970 // Choose the edge with the minimal distance from `point` to its orthogonal
19971 // projection onto that edge, if such a projection exists, or the distance to
19972 // the closest vertex on that edge. Returns an object with the `index` of the
19973 // chosen edge, the chosen `loc` on that edge, and the `distance` to to it.
19974 iD.geo.chooseEdge = function(nodes, point, projection) {
19975     var dist = iD.geo.euclideanDistance,
19976         points = nodes.map(function(n) { return projection(n.loc); }),
19977         min = Infinity,
19978         idx, loc;
19979
19980     function dot(p, q) {
19981         return p[0] * q[0] + p[1] * q[1];
19982     }
19983
19984     for (var i = 0; i < points.length - 1; i++) {
19985         var o = points[i],
19986             s = [points[i + 1][0] - o[0],
19987                  points[i + 1][1] - o[1]],
19988             v = [point[0] - o[0],
19989                  point[1] - o[1]],
19990             proj = dot(v, s) / dot(s, s),
19991             p;
19992
19993         if (proj < 0) {
19994             p = o;
19995         } else if (proj > 1) {
19996             p = points[i + 1];
19997         } else {
19998             p = [o[0] + proj * s[0], o[1] + proj * s[1]];
19999         }
20000
20001         var d = dist(p, point);
20002         if (d < min) {
20003             min = d;
20004             idx = i + 1;
20005             loc = projection.invert(p);
20006         }
20007     }
20008
20009     return {
20010         index: idx,
20011         distance: min,
20012         loc: loc
20013     };
20014 };
20015
20016 // Return the intersection point of 2 line segments.
20017 // From https://github.com/pgkelley4/line-segments-intersect
20018 // This uses the vector cross product approach described below:
20019 //  http://stackoverflow.com/a/565282/786339
20020 iD.geo.lineIntersection = function(a, b) {
20021     function subtractPoints(point1, point2) {
20022         return [point1[0] - point2[0], point1[1] - point2[1]];
20023     }
20024     function crossProduct(point1, point2) {
20025         return point1[0] * point2[1] - point1[1] * point2[0];
20026     }
20027
20028     var p = [a[0][0], a[0][1]],
20029         p2 = [a[1][0], a[1][1]],
20030         q = [b[0][0], b[0][1]],
20031         q2 = [b[1][0], b[1][1]],
20032         r = subtractPoints(p2, p),
20033         s = subtractPoints(q2, q),
20034         uNumerator = crossProduct(subtractPoints(q, p), r),
20035         denominator = crossProduct(r, s);
20036
20037     if (uNumerator && denominator) {
20038         var u = uNumerator / denominator,
20039             t = crossProduct(subtractPoints(q, p), s) / denominator;
20040
20041         if ((t >= 0) && (t <= 1) && (u >= 0) && (u <= 1)) {
20042             return iD.geo.interp(p, p2, t);
20043         }
20044     }
20045
20046     return null;
20047 };
20048
20049 iD.geo.pathIntersections = function(path1, path2) {
20050     var intersections = [];
20051     for (var i = 0; i < path1.length - 1; i++) {
20052         for (var j = 0; j < path2.length - 1; j++) {
20053             var a = [ path1[i], path1[i+1] ],
20054                 b = [ path2[j], path2[j+1] ],
20055                 hit = iD.geo.lineIntersection(a, b);
20056             if (hit) intersections.push(hit);
20057         }
20058     }
20059     return intersections;
20060 };
20061
20062 // Return whether point is contained in polygon.
20063 //
20064 // `point` should be a 2-item array of coordinates.
20065 // `polygon` should be an array of 2-item arrays of coordinates.
20066 //
20067 // From https://github.com/substack/point-in-polygon.
20068 // ray-casting algorithm based on
20069 // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
20070 //
20071 iD.geo.pointInPolygon = function(point, polygon) {
20072     var x = point[0],
20073         y = point[1],
20074         inside = false;
20075
20076     for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
20077         var xi = polygon[i][0], yi = polygon[i][1];
20078         var xj = polygon[j][0], yj = polygon[j][1];
20079
20080         var intersect = ((yi > y) !== (yj > y)) &&
20081             (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
20082         if (intersect) inside = !inside;
20083     }
20084
20085     return inside;
20086 };
20087
20088 iD.geo.polygonContainsPolygon = function(outer, inner) {
20089     return _.every(inner, function(point) {
20090         return iD.geo.pointInPolygon(point, outer);
20091     });
20092 };
20093
20094 iD.geo.polygonIntersectsPolygon = function(outer, inner, checkSegments) {
20095     function testSegments(outer, inner) {
20096         for (var i = 0; i < outer.length - 1; i++) {
20097             for (var j = 0; j < inner.length - 1; j++) {
20098                 var a = [ outer[i], outer[i+1] ],
20099                     b = [ inner[j], inner[j+1] ];
20100                 if (iD.geo.lineIntersection(a, b)) return true;
20101             }
20102         }
20103         return false;
20104     }
20105
20106     function testPoints(outer, inner) {
20107         return _.some(inner, function(point) {
20108             return iD.geo.pointInPolygon(point, outer);
20109         });
20110     }
20111
20112    return testPoints(outer, inner) || (!!checkSegments && testSegments(outer, inner));
20113 };
20114
20115 iD.geo.pathLength = function(path) {
20116     var length = 0,
20117         dx, dy;
20118     for (var i = 0; i < path.length - 1; i++) {
20119         dx = path[i][0] - path[i + 1][0];
20120         dy = path[i][1] - path[i + 1][1];
20121         length += Math.sqrt(dx * dx + dy * dy);
20122     }
20123     return length;
20124 };
20125 iD.geo.Extent = function geoExtent(min, max) {
20126     if (!(this instanceof iD.geo.Extent)) return new iD.geo.Extent(min, max);
20127     if (min instanceof iD.geo.Extent) {
20128         return min;
20129     } else if (min && min.length === 2 && min[0].length === 2 && min[1].length === 2) {
20130         this[0] = min[0];
20131         this[1] = min[1];
20132     } else {
20133         this[0] = min        || [ Infinity,  Infinity];
20134         this[1] = max || min || [-Infinity, -Infinity];
20135     }
20136 };
20137
20138 iD.geo.Extent.prototype = new Array(2);
20139
20140 _.extend(iD.geo.Extent.prototype, {
20141     equals: function (obj) {
20142         return this[0][0] === obj[0][0] &&
20143             this[0][1] === obj[0][1] &&
20144             this[1][0] === obj[1][0] &&
20145             this[1][1] === obj[1][1];
20146     },
20147
20148     extend: function(obj) {
20149         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20150         return iD.geo.Extent([Math.min(obj[0][0], this[0][0]),
20151                               Math.min(obj[0][1], this[0][1])],
20152                              [Math.max(obj[1][0], this[1][0]),
20153                               Math.max(obj[1][1], this[1][1])]);
20154     },
20155
20156     _extend: function(extent) {
20157         this[0][0] = Math.min(extent[0][0], this[0][0]);
20158         this[0][1] = Math.min(extent[0][1], this[0][1]);
20159         this[1][0] = Math.max(extent[1][0], this[1][0]);
20160         this[1][1] = Math.max(extent[1][1], this[1][1]);
20161     },
20162
20163     area: function() {
20164         return Math.abs((this[1][0] - this[0][0]) * (this[1][1] - this[0][1]));
20165     },
20166
20167     center: function() {
20168         return [(this[0][0] + this[1][0]) / 2,
20169                 (this[0][1] + this[1][1]) / 2];
20170     },
20171
20172     polygon: function() {
20173         return [
20174             [this[0][0], this[0][1]],
20175             [this[0][0], this[1][1]],
20176             [this[1][0], this[1][1]],
20177             [this[1][0], this[0][1]],
20178             [this[0][0], this[0][1]]
20179         ];
20180     },
20181
20182     contains: function(obj) {
20183         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20184         return obj[0][0] >= this[0][0] &&
20185                obj[0][1] >= this[0][1] &&
20186                obj[1][0] <= this[1][0] &&
20187                obj[1][1] <= this[1][1];
20188     },
20189
20190     intersects: function(obj) {
20191         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20192         return obj[0][0] <= this[1][0] &&
20193                obj[0][1] <= this[1][1] &&
20194                obj[1][0] >= this[0][0] &&
20195                obj[1][1] >= this[0][1];
20196     },
20197
20198     intersection: function(obj) {
20199         if (!this.intersects(obj)) return new iD.geo.Extent();
20200         return new iD.geo.Extent([Math.max(obj[0][0], this[0][0]),
20201                                   Math.max(obj[0][1], this[0][1])],
20202                                  [Math.min(obj[1][0], this[1][0]),
20203                                   Math.min(obj[1][1], this[1][1])]);
20204     },
20205
20206     percentContainedIn: function(obj) {
20207         if (!(obj instanceof iD.geo.Extent)) obj = new iD.geo.Extent(obj);
20208         var a1 = this.intersection(obj).area(),
20209             a2 = this.area();
20210
20211         if (a1 === Infinity || a2 === Infinity || a1 === 0 || a2 === 0) {
20212             return 0;
20213         } else {
20214             return a1 / a2;
20215         }
20216     },
20217
20218     padByMeters: function(meters) {
20219         var dLat = iD.geo.metersToLat(meters),
20220             dLon = iD.geo.metersToLon(meters, this.center()[1]);
20221         return iD.geo.Extent(
20222                 [this[0][0] - dLon, this[0][1] - dLat],
20223                 [this[1][0] + dLon, this[1][1] + dLat]);
20224     },
20225
20226     toParam: function() {
20227         return [this[0][0], this[0][1], this[1][0], this[1][1]].join(',');
20228     }
20229
20230 });
20231 iD.geo.Turn = function(turn) {
20232     if (!(this instanceof iD.geo.Turn))
20233         return new iD.geo.Turn(turn);
20234     _.extend(this, turn);
20235 };
20236
20237 iD.geo.Intersection = function(graph, vertexId) {
20238     var vertex = graph.entity(vertexId),
20239         highways = [];
20240
20241     // Pre-split ways that would need to be split in
20242     // order to add a restriction. The real split will
20243     // happen when the restriction is added.
20244     graph.parentWays(vertex).forEach(function(way) {
20245         if (!way.tags.highway || way.isArea() || way.isDegenerate())
20246             return;
20247
20248         if (way.affix(vertexId)) {
20249             highways.push(way);
20250         } else {
20251             var idx = _.indexOf(way.nodes, vertex.id, 1),
20252                 wayA = iD.Way({id: way.id + '-a', tags: way.tags, nodes: way.nodes.slice(0, idx + 1)}),
20253                 wayB = iD.Way({id: way.id + '-b', tags: way.tags, nodes: way.nodes.slice(idx)});
20254
20255             graph = graph.replace(wayA);
20256             graph = graph.replace(wayB);
20257
20258             highways.push(wayA);
20259             highways.push(wayB);
20260         }
20261     });
20262
20263     var intersection = {
20264         highways: highways,
20265         graph: graph
20266     };
20267
20268     intersection.turns = function(fromNodeID) {
20269         if (!fromNodeID)
20270             return [];
20271
20272         var way = _.find(highways, function(way) { return way.contains(fromNodeID); });
20273         if (way.first() === vertex.id && way.tags.oneway === 'yes')
20274             return [];
20275         if (way.last() === vertex.id && way.tags.oneway === '-1')
20276             return [];
20277
20278         function withRestriction(turn) {
20279             graph.parentRelations(graph.entity(turn.from.way)).forEach(function(relation) {
20280                 if (relation.tags.type !== 'restriction')
20281                     return;
20282
20283                 var f = relation.memberByRole('from'),
20284                     t = relation.memberByRole('to'),
20285                     v = relation.memberByRole('via');
20286
20287                 if (f && f.id === turn.from.way &&
20288                     v && v.id === turn.via.node &&
20289                     t && t.id === turn.to.way) {
20290                     turn.restriction = relation.id;
20291                 } else if (/^only_/.test(relation.tags.restriction) &&
20292                     f && f.id === turn.from.way &&
20293                     v && v.id === turn.via.node &&
20294                     t && t.id !== turn.to.way) {
20295                     turn.restriction = relation.id;
20296                     turn.indirect_restriction = true;
20297                 }
20298             });
20299
20300             return iD.geo.Turn(turn);
20301         }
20302
20303         var from = {
20304                 node: way.nodes[way.first() === vertex.id ? 1 : way.nodes.length - 2],
20305                 way: way.id.split(/-(a|b)/)[0]
20306             },
20307             via = {node: vertex.id},
20308             turns = [];
20309
20310         highways.forEach(function(parent) {
20311             if (parent === way)
20312                 return;
20313
20314             var index = parent.nodes.indexOf(vertex.id);
20315
20316             // backward
20317             if (parent.first() !== vertex.id && parent.tags.oneway !== 'yes') {
20318                 turns.push(withRestriction({
20319                     from: from,
20320                     via: via,
20321                     to: {node: parent.nodes[index - 1], way: parent.id.split(/-(a|b)/)[0]}
20322                 }));
20323             }
20324
20325             // forward
20326             if (parent.last() !== vertex.id && parent.tags.oneway !== '-1') {
20327                 turns.push(withRestriction({
20328                     from: from,
20329                     via: via,
20330                     to: {node: parent.nodes[index + 1], way: parent.id.split(/-(a|b)/)[0]}
20331                 }));
20332             }
20333         });
20334
20335         // U-turn
20336         if (way.tags.oneway !== 'yes' && way.tags.oneway !== '-1') {
20337             turns.push(withRestriction({
20338                 from: from,
20339                 via: via,
20340                 to: from,
20341                 u: true
20342             }));
20343         }
20344
20345         return turns;
20346     };
20347
20348     return intersection;
20349 };
20350
20351
20352 iD.geo.inferRestriction = function(graph, from, via, to, projection) {
20353     var fromWay = graph.entity(from.way),
20354         fromNode = graph.entity(from.node),
20355         toWay = graph.entity(to.way),
20356         toNode = graph.entity(to.node),
20357         viaNode = graph.entity(via.node),
20358         fromOneWay = (fromWay.tags.oneway === 'yes' && fromWay.last() === via.node) ||
20359             (fromWay.tags.oneway === '-1' && fromWay.first() === via.node),
20360         toOneWay = (toWay.tags.oneway === 'yes' && toWay.first() === via.node) ||
20361             (toWay.tags.oneway === '-1' && toWay.last() === via.node),
20362         angle = iD.geo.angle(viaNode, fromNode, projection) -
20363                 iD.geo.angle(viaNode, toNode, projection);
20364
20365     angle = angle * 180 / Math.PI;
20366
20367     while (angle < 0)
20368         angle += 360;
20369
20370     if (fromNode === toNode)
20371         return 'no_u_turn';
20372     if ((angle < 23 || angle > 336) && fromOneWay && toOneWay)
20373         return 'no_u_turn';
20374     if (angle < 158)
20375         return 'no_right_turn';
20376     if (angle > 202)
20377         return 'no_left_turn';
20378
20379     return 'no_straight_on';
20380 };
20381 // For fixing up rendering of multipolygons with tags on the outer member.
20382 // https://github.com/openstreetmap/iD/issues/613
20383 iD.geo.isSimpleMultipolygonOuterMember = function(entity, graph) {
20384     if (entity.type !== 'way')
20385         return false;
20386
20387     var parents = graph.parentRelations(entity);
20388     if (parents.length !== 1)
20389         return false;
20390
20391     var parent = parents[0];
20392     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20393         return false;
20394
20395     var members = parent.members, member;
20396     for (var i = 0; i < members.length; i++) {
20397         member = members[i];
20398         if (member.id === entity.id && member.role && member.role !== 'outer')
20399             return false; // Not outer member
20400         if (member.id !== entity.id && (!member.role || member.role === 'outer'))
20401             return false; // Not a simple multipolygon
20402     }
20403
20404     return parent;
20405 };
20406
20407 iD.geo.simpleMultipolygonOuterMember = function(entity, graph) {
20408     if (entity.type !== 'way')
20409         return false;
20410
20411     var parents = graph.parentRelations(entity);
20412     if (parents.length !== 1)
20413         return false;
20414
20415     var parent = parents[0];
20416     if (!parent.isMultipolygon() || Object.keys(parent.tags).length > 1)
20417         return false;
20418
20419     var members = parent.members, member, outerMember;
20420     for (var i = 0; i < members.length; i++) {
20421         member = members[i];
20422         if (!member.role || member.role === 'outer') {
20423             if (outerMember)
20424                 return false; // Not a simple multipolygon
20425             outerMember = member;
20426         }
20427     }
20428
20429     return outerMember && graph.hasEntity(outerMember.id);
20430 };
20431
20432 // Join `array` into sequences of connecting ways.
20433 //
20434 // Segments which share identical start/end nodes will, as much as possible,
20435 // be connected with each other.
20436 //
20437 // The return value is a nested array. Each constituent array contains elements
20438 // of `array` which have been determined to connect. Each consitituent array
20439 // also has a `nodes` property whose value is an ordered array of member nodes,
20440 // with appropriate order reversal and start/end coordinate de-duplication.
20441 //
20442 // Members of `array` must have, at minimum, `type` and `id` properties.
20443 // Thus either an array of `iD.Way`s or a relation member array may be
20444 // used.
20445 //
20446 // If an member has a `tags` property, its tags will be reversed via
20447 // `iD.actions.Reverse` in the output.
20448 //
20449 // Incomplete members (those for which `graph.hasEntity(element.id)` returns
20450 // false) and non-way members are ignored.
20451 //
20452 iD.geo.joinWays = function(array, graph) {
20453     var joined = [], member, current, nodes, first, last, i, how, what;
20454
20455     array = array.filter(function(member) {
20456         return member.type === 'way' && graph.hasEntity(member.id);
20457     });
20458
20459     function resolve(member) {
20460         return graph.childNodes(graph.entity(member.id));
20461     }
20462
20463     function reverse(member) {
20464         return member.tags ? iD.actions.Reverse(member.id)(graph).entity(member.id) : member;
20465     }
20466
20467     while (array.length) {
20468         member = array.shift();
20469         current = [member];
20470         current.nodes = nodes = resolve(member).slice();
20471         joined.push(current);
20472
20473         while (array.length && _.first(nodes) !== _.last(nodes)) {
20474             first = _.first(nodes);
20475             last  = _.last(nodes);
20476
20477             for (i = 0; i < array.length; i++) {
20478                 member = array[i];
20479                 what = resolve(member);
20480
20481                 if (last === _.first(what)) {
20482                     how  = nodes.push;
20483                     what = what.slice(1);
20484                     break;
20485                 } else if (last === _.last(what)) {
20486                     how  = nodes.push;
20487                     what = what.slice(0, -1).reverse();
20488                     member = reverse(member);
20489                     break;
20490                 } else if (first === _.last(what)) {
20491                     how  = nodes.unshift;
20492                     what = what.slice(0, -1);
20493                     break;
20494                 } else if (first === _.first(what)) {
20495                     how  = nodes.unshift;
20496                     what = what.slice(1).reverse();
20497                     member = reverse(member);
20498                     break;
20499                 } else {
20500                     what = how = null;
20501                 }
20502             }
20503
20504             if (!what)
20505                 break; // No more joinable ways.
20506
20507             how.apply(current, [member]);
20508             how.apply(nodes, what);
20509
20510             array.splice(i, 1);
20511         }
20512     }
20513
20514     return joined;
20515 };
20516 /*
20517     Bypasses features of D3's default projection stream pipeline that are unnecessary:
20518     * Antimeridian clipping
20519     * Spherical rotation
20520     * Resampling
20521 */
20522 iD.geo.RawMercator = function () {
20523     var project = d3.geo.mercator.raw,
20524         k = 512 / Math.PI, // scale
20525         x = 0, y = 0, // translate
20526         clipExtent = [[0, 0], [0, 0]];
20527
20528     function projection(point) {
20529         point = project(point[0] * Math.PI / 180, point[1] * Math.PI / 180);
20530         return [point[0] * k + x, y - point[1] * k];
20531     }
20532
20533     projection.invert = function(point) {
20534         point = project.invert((point[0] - x) / k, (y - point[1]) / k);
20535         return point && [point[0] * 180 / Math.PI, point[1] * 180 / Math.PI];
20536     };
20537
20538     projection.scale = function(_) {
20539         if (!arguments.length) return k;
20540         k = +_;
20541         return projection;
20542     };
20543
20544     projection.translate = function(_) {
20545         if (!arguments.length) return [x, y];
20546         x = +_[0];
20547         y = +_[1];
20548         return projection;
20549     };
20550
20551     projection.clipExtent = function(_) {
20552         if (!arguments.length) return clipExtent;
20553         clipExtent = _;
20554         return projection;
20555     };
20556
20557     projection.stream = d3.geo.transform({
20558         point: function(x, y) {
20559             x = projection([x, y]);
20560             this.stream.point(x[0], x[1]);
20561         }
20562     }).stream;
20563
20564     return projection;
20565 };
20566 iD.actions = {};
20567 iD.actions.AddEntity = function(way) {
20568     return function(graph) {
20569         return graph.replace(way);
20570     };
20571 };
20572 iD.actions.AddMember = function(relationId, member, memberIndex) {
20573     return function(graph) {
20574         var relation = graph.entity(relationId);
20575
20576         if (isNaN(memberIndex) && member.type === 'way') {
20577             var members = relation.indexedMembers();
20578             members.push(member);
20579
20580             var joined = iD.geo.joinWays(members, graph);
20581             for (var i = 0; i < joined.length; i++) {
20582                 var segment = joined[i];
20583                 for (var j = 0; j < segment.length && segment.length >= 2; j++) {
20584                     if (segment[j] !== member)
20585                         continue;
20586
20587                     if (j === 0) {
20588                         memberIndex = segment[j + 1].index;
20589                     } else if (j === segment.length - 1) {
20590                         memberIndex = segment[j - 1].index + 1;
20591                     } else {
20592                         memberIndex = Math.min(segment[j - 1].index + 1, segment[j + 1].index + 1);
20593                     }
20594                 }
20595             }
20596         }
20597
20598         return graph.replace(relation.addMember(member, memberIndex));
20599     };
20600 };
20601 iD.actions.AddMidpoint = function(midpoint, node) {
20602     return function(graph) {
20603         graph = graph.replace(node.move(midpoint.loc));
20604
20605         var parents = _.intersection(
20606             graph.parentWays(graph.entity(midpoint.edge[0])),
20607             graph.parentWays(graph.entity(midpoint.edge[1])));
20608
20609         parents.forEach(function(way) {
20610             for (var i = 0; i < way.nodes.length - 1; i++) {
20611                 if (iD.geo.edgeEqual([way.nodes[i], way.nodes[i + 1]], midpoint.edge)) {
20612                     graph = graph.replace(graph.entity(way.id).addNode(node.id, i + 1));
20613
20614                     // Add only one midpoint on doubled-back segments,
20615                     // turning them into self-intersections.
20616                     return;
20617                 }
20618             }
20619         });
20620
20621         return graph;
20622     };
20623 };
20624 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/AddNodeToWayAction.as
20625 iD.actions.AddVertex = function(wayId, nodeId, index) {
20626     return function(graph) {
20627         return graph.replace(graph.entity(wayId).addNode(nodeId, index));
20628     };
20629 };
20630 iD.actions.ChangeMember = function(relationId, member, memberIndex) {
20631     return function(graph) {
20632         return graph.replace(graph.entity(relationId).updateMember(member, memberIndex));
20633     };
20634 };
20635 iD.actions.ChangePreset = function(entityId, oldPreset, newPreset) {
20636     return function(graph) {
20637         var entity = graph.entity(entityId),
20638             geometry = entity.geometry(graph),
20639             tags = entity.tags;
20640
20641         if (oldPreset) tags = oldPreset.removeTags(tags, geometry);
20642         if (newPreset) tags = newPreset.applyTags(tags, geometry);
20643
20644         return graph.replace(entity.update({tags: tags}));
20645     };
20646 };
20647 iD.actions.ChangeTags = function(entityId, tags) {
20648     return function(graph) {
20649         var entity = graph.entity(entityId);
20650         return graph.replace(entity.update({tags: tags}));
20651     };
20652 };
20653 iD.actions.Circularize = function(wayId, projection, maxAngle) {
20654     maxAngle = (maxAngle || 20) * Math.PI / 180;
20655
20656     var action = function(graph) {
20657         var way = graph.entity(wayId);
20658
20659         if (!way.isConvex(graph)) {
20660             graph = action.makeConvex(graph);
20661         }
20662
20663         var nodes = _.uniq(graph.childNodes(way)),
20664             keyNodes = nodes.filter(function(n) { return graph.parentWays(n).length !== 1; }),
20665             points = nodes.map(function(n) { return projection(n.loc); }),
20666             keyPoints = keyNodes.map(function(n) { return projection(n.loc); }),
20667             centroid = (points.length === 2) ? iD.geo.interp(points[0], points[1], 0.5) : d3.geom.polygon(points).centroid(),
20668             radius = d3.median(points, function(p) { return iD.geo.euclideanDistance(centroid, p); }),
20669             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20670             ids;
20671
20672         // we need atleast two key nodes for the algorithm to work
20673         if (!keyNodes.length) {
20674             keyNodes = [nodes[0]];
20675             keyPoints = [points[0]];
20676         }
20677
20678         if (keyNodes.length === 1) {
20679             var index = nodes.indexOf(keyNodes[0]),
20680                 oppositeIndex = Math.floor((index + nodes.length / 2) % nodes.length);
20681
20682             keyNodes.push(nodes[oppositeIndex]);
20683             keyPoints.push(points[oppositeIndex]);
20684         }
20685
20686         // key points and nodes are those connected to the ways,
20687         // they are projected onto the circle, inbetween nodes are moved
20688         // to constant intervals between key nodes, extra inbetween nodes are
20689         // added if necessary.
20690         for (var i = 0; i < keyPoints.length; i++) {
20691             var nextKeyNodeIndex = (i + 1) % keyNodes.length,
20692                 startNode = keyNodes[i],
20693                 endNode = keyNodes[nextKeyNodeIndex],
20694                 startNodeIndex = nodes.indexOf(startNode),
20695                 endNodeIndex = nodes.indexOf(endNode),
20696                 numberNewPoints = -1,
20697                 indexRange = endNodeIndex - startNodeIndex,
20698                 distance, totalAngle, eachAngle, startAngle, endAngle,
20699                 angle, loc, node, j,
20700                 inBetweenNodes = [];
20701
20702             if (indexRange < 0) {
20703                 indexRange += nodes.length;
20704             }
20705
20706             // position this key node
20707             distance = iD.geo.euclideanDistance(centroid, keyPoints[i]);
20708             if (distance === 0) { distance = 1e-4; }
20709             keyPoints[i] = [
20710                 centroid[0] + (keyPoints[i][0] - centroid[0]) / distance * radius,
20711                 centroid[1] + (keyPoints[i][1] - centroid[1]) / distance * radius];
20712             graph = graph.replace(keyNodes[i].move(projection.invert(keyPoints[i])));
20713
20714             // figure out the between delta angle we want to match to
20715             startAngle = Math.atan2(keyPoints[i][1] - centroid[1], keyPoints[i][0] - centroid[0]);
20716             endAngle = Math.atan2(keyPoints[nextKeyNodeIndex][1] - centroid[1], keyPoints[nextKeyNodeIndex][0] - centroid[0]);
20717             totalAngle = endAngle - startAngle;
20718
20719             // detects looping around -pi/pi
20720             if (totalAngle * sign > 0) {
20721                 totalAngle = -sign * (2 * Math.PI - Math.abs(totalAngle));
20722             }
20723
20724             do {
20725                 numberNewPoints++;
20726                 eachAngle = totalAngle / (indexRange + numberNewPoints);
20727             } while (Math.abs(eachAngle) > maxAngle);
20728
20729             // move existing points
20730             for (j = 1; j < indexRange; j++) {
20731                 angle = startAngle + j * eachAngle;
20732                 loc = projection.invert([
20733                     centroid[0] + Math.cos(angle)*radius,
20734                     centroid[1] + Math.sin(angle)*radius]);
20735
20736                 node = nodes[(j + startNodeIndex) % nodes.length].move(loc);
20737                 graph = graph.replace(node);
20738             }
20739
20740             // add new inbetween nodes if necessary
20741             for (j = 0; j < numberNewPoints; j++) {
20742                 angle = startAngle + (indexRange + j) * eachAngle;
20743                 loc = projection.invert([
20744                     centroid[0] + Math.cos(angle) * radius,
20745                     centroid[1] + Math.sin(angle) * radius]);
20746
20747                 node = iD.Node({loc: loc});
20748                 graph = graph.replace(node);
20749
20750                 nodes.splice(endNodeIndex + j, 0, node);
20751                 inBetweenNodes.push(node.id);
20752             }
20753
20754             // Check for other ways that share these keyNodes..
20755             // If keyNodes are adjacent in both ways,
20756             // we can add inBetween nodes to that shared way too..
20757             if (indexRange === 1 && inBetweenNodes.length) {
20758                 var startIndex1 = way.nodes.lastIndexOf(startNode.id),
20759                     endIndex1 = way.nodes.lastIndexOf(endNode.id),
20760                     wayDirection1 = (endIndex1 - startIndex1);
20761                 if (wayDirection1 < -1) { wayDirection1 = 1; }
20762
20763                 /* eslint-disable no-loop-func */
20764                 _.each(_.without(graph.parentWays(keyNodes[i]), way), function(sharedWay) {
20765                     if (sharedWay.areAdjacent(startNode.id, endNode.id)) {
20766                         var startIndex2 = sharedWay.nodes.lastIndexOf(startNode.id),
20767                             endIndex2 = sharedWay.nodes.lastIndexOf(endNode.id),
20768                             wayDirection2 = (endIndex2 - startIndex2),
20769                             insertAt = endIndex2;
20770                         if (wayDirection2 < -1) { wayDirection2 = 1; }
20771
20772                         if (wayDirection1 !== wayDirection2) {
20773                             inBetweenNodes.reverse();
20774                             insertAt = startIndex2;
20775                         }
20776                         for (j = 0; j < inBetweenNodes.length; j++) {
20777                             sharedWay = sharedWay.addNode(inBetweenNodes[j], insertAt + j);
20778                         }
20779                         graph = graph.replace(sharedWay);
20780                     }
20781                 });
20782                 /* eslint-enable no-loop-func */
20783             }
20784
20785         }
20786
20787         // update the way to have all the new nodes
20788         ids = nodes.map(function(n) { return n.id; });
20789         ids.push(ids[0]);
20790
20791         way = way.update({nodes: ids});
20792         graph = graph.replace(way);
20793
20794         return graph;
20795     };
20796
20797     action.makeConvex = function(graph) {
20798         var way = graph.entity(wayId),
20799             nodes = _.uniq(graph.childNodes(way)),
20800             points = nodes.map(function(n) { return projection(n.loc); }),
20801             sign = d3.geom.polygon(points).area() > 0 ? 1 : -1,
20802             hull = d3.geom.hull(points);
20803
20804         // D3 convex hulls go counterclockwise..
20805         if (sign === -1) {
20806             nodes.reverse();
20807             points.reverse();
20808         }
20809
20810         for (var i = 0; i < hull.length - 1; i++) {
20811             var startIndex = points.indexOf(hull[i]),
20812                 endIndex = points.indexOf(hull[i+1]),
20813                 indexRange = (endIndex - startIndex);
20814
20815             if (indexRange < 0) {
20816                 indexRange += nodes.length;
20817             }
20818
20819             // move interior nodes to the surface of the convex hull..
20820             for (var j = 1; j < indexRange; j++) {
20821                 var point = iD.geo.interp(hull[i], hull[i+1], j / indexRange),
20822                     node = nodes[(j + startIndex) % nodes.length].move(projection.invert(point));
20823                 graph = graph.replace(node);
20824             }
20825         }
20826         return graph;
20827     };
20828
20829     action.disabled = function(graph) {
20830         if (!graph.entity(wayId).isClosed())
20831             return 'not_closed';
20832     };
20833
20834     return action;
20835 };
20836 // Connect the ways at the given nodes.
20837 //
20838 // The last node will survive. All other nodes will be replaced with
20839 // the surviving node in parent ways, and then removed.
20840 //
20841 // Tags and relation memberships of of non-surviving nodes are merged
20842 // to the survivor.
20843 //
20844 // This is the inverse of `iD.actions.Disconnect`.
20845 //
20846 // Reference:
20847 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeNodesAction.as
20848 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/MergeNodesAction.java
20849 //
20850 iD.actions.Connect = function(nodeIds) {
20851     return function(graph) {
20852         var survivor = graph.entity(_.last(nodeIds));
20853
20854         for (var i = 0; i < nodeIds.length - 1; i++) {
20855             var node = graph.entity(nodeIds[i]);
20856
20857             /* eslint-disable no-loop-func */
20858             graph.parentWays(node).forEach(function(parent) {
20859                 if (!parent.areAdjacent(node.id, survivor.id)) {
20860                     graph = graph.replace(parent.replaceNode(node.id, survivor.id));
20861                 }
20862             });
20863
20864             graph.parentRelations(node).forEach(function(parent) {
20865                 graph = graph.replace(parent.replaceMember(node, survivor));
20866             });
20867             /* eslint-enable no-loop-func */
20868
20869             survivor = survivor.mergeTags(node.tags);
20870             graph = iD.actions.DeleteNode(node.id)(graph);
20871         }
20872
20873         graph = graph.replace(survivor);
20874
20875         return graph;
20876     };
20877 };
20878 iD.actions.CopyEntity = function(id, fromGraph, deep) {
20879     var newEntities = [];
20880
20881     var action = function(graph) {
20882         var entity = fromGraph.entity(id);
20883
20884         newEntities = entity.copy(deep, fromGraph);
20885
20886         for (var i = 0; i < newEntities.length; i++) {
20887             graph = graph.replace(newEntities[i]);
20888         }
20889
20890         return graph;
20891     };
20892
20893     action.newEntities = function() {
20894         return newEntities;
20895     };
20896
20897     return action;
20898 };
20899 iD.actions.DeleteMember = function(relationId, memberIndex) {
20900     return function(graph) {
20901         var relation = graph.entity(relationId)
20902             .removeMember(memberIndex);
20903
20904         graph = graph.replace(relation);
20905
20906         if (relation.isDegenerate())
20907             graph = iD.actions.DeleteRelation(relation.id)(graph);
20908
20909         return graph;
20910     };
20911 };
20912 iD.actions.DeleteMultiple = function(ids) {
20913     var actions = {
20914         way: iD.actions.DeleteWay,
20915         node: iD.actions.DeleteNode,
20916         relation: iD.actions.DeleteRelation
20917     };
20918
20919     var action = function(graph) {
20920         ids.forEach(function(id) {
20921             if (graph.hasEntity(id)) { // It may have been deleted aready.
20922                 graph = actions[graph.entity(id).type](id)(graph);
20923             }
20924         });
20925
20926         return graph;
20927     };
20928
20929     action.disabled = function(graph) {
20930         for (var i = 0; i < ids.length; i++) {
20931             var id = ids[i],
20932                 disabled = actions[graph.entity(id).type](id).disabled(graph);
20933             if (disabled) return disabled;
20934         }
20935     };
20936
20937     return action;
20938 };
20939 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteNodeAction.as
20940 iD.actions.DeleteNode = function(nodeId) {
20941     var action = function(graph) {
20942         var node = graph.entity(nodeId);
20943
20944         graph.parentWays(node)
20945             .forEach(function(parent) {
20946                 parent = parent.removeNode(nodeId);
20947                 graph = graph.replace(parent);
20948
20949                 if (parent.isDegenerate()) {
20950                     graph = iD.actions.DeleteWay(parent.id)(graph);
20951                 }
20952             });
20953
20954         graph.parentRelations(node)
20955             .forEach(function(parent) {
20956                 parent = parent.removeMembersWithID(nodeId);
20957                 graph = graph.replace(parent);
20958
20959                 if (parent.isDegenerate()) {
20960                     graph = iD.actions.DeleteRelation(parent.id)(graph);
20961                 }
20962             });
20963
20964         return graph.remove(node);
20965     };
20966
20967     action.disabled = function() {
20968         return false;
20969     };
20970
20971     return action;
20972 };
20973 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteRelationAction.as
20974 iD.actions.DeleteRelation = function(relationId) {
20975     function deleteEntity(entity, graph) {
20976         return !graph.parentWays(entity).length &&
20977             !graph.parentRelations(entity).length &&
20978             !entity.hasInterestingTags();
20979     }
20980
20981     var action = function(graph) {
20982         var relation = graph.entity(relationId);
20983
20984         graph.parentRelations(relation)
20985             .forEach(function(parent) {
20986                 parent = parent.removeMembersWithID(relationId);
20987                 graph = graph.replace(parent);
20988
20989                 if (parent.isDegenerate()) {
20990                     graph = iD.actions.DeleteRelation(parent.id)(graph);
20991                 }
20992             });
20993
20994         _.uniq(_.pluck(relation.members, 'id')).forEach(function(memberId) {
20995             graph = graph.replace(relation.removeMembersWithID(memberId));
20996
20997             var entity = graph.entity(memberId);
20998             if (deleteEntity(entity, graph)) {
20999                 graph = iD.actions.DeleteMultiple([memberId])(graph);
21000             }
21001         });
21002
21003         return graph.remove(relation);
21004     };
21005
21006     action.disabled = function(graph) {
21007         if (!graph.entity(relationId).isComplete(graph))
21008             return 'incomplete_relation';
21009     };
21010
21011     return action;
21012 };
21013 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/DeleteWayAction.as
21014 iD.actions.DeleteWay = function(wayId) {
21015     function deleteNode(node, graph) {
21016         return !graph.parentWays(node).length &&
21017             !graph.parentRelations(node).length &&
21018             !node.hasInterestingTags();
21019     }
21020
21021     var action = function(graph) {
21022         var way = graph.entity(wayId);
21023
21024         graph.parentRelations(way)
21025             .forEach(function(parent) {
21026                 parent = parent.removeMembersWithID(wayId);
21027                 graph = graph.replace(parent);
21028
21029                 if (parent.isDegenerate()) {
21030                     graph = iD.actions.DeleteRelation(parent.id)(graph);
21031                 }
21032             });
21033
21034         _.uniq(way.nodes).forEach(function(nodeId) {
21035             graph = graph.replace(way.removeNode(nodeId));
21036
21037             var node = graph.entity(nodeId);
21038             if (deleteNode(node, graph)) {
21039                 graph = graph.remove(node);
21040             }
21041         });
21042
21043         return graph.remove(way);
21044     };
21045
21046     action.disabled = function(graph) {
21047         var disabled = false;
21048
21049         graph.parentRelations(graph.entity(wayId)).forEach(function(parent) {
21050             var type = parent.tags.type,
21051                 role = parent.memberById(wayId).role || 'outer';
21052             if (type === 'route' || type === 'boundary' || (type === 'multipolygon' && role === 'outer')) {
21053                 disabled = 'part_of_relation';
21054             }
21055         });
21056
21057         return disabled;
21058     };
21059
21060     return action;
21061 };
21062 iD.actions.DeprecateTags = function(entityId) {
21063     return function(graph) {
21064         var entity = graph.entity(entityId),
21065             newtags = _.clone(entity.tags),
21066             change = false,
21067             rule;
21068
21069         // This handles deprecated tags with a single condition
21070         for (var i = 0; i < iD.data.deprecated.length; i++) {
21071
21072             rule = iD.data.deprecated[i];
21073             var match = _.pairs(rule.old)[0],
21074                 replacements = rule.replace ? _.pairs(rule.replace) : null;
21075
21076             if (entity.tags[match[0]] && match[1] === '*') {
21077
21078                 var value = entity.tags[match[0]];
21079                 if (replacements && !newtags[replacements[0][0]]) {
21080                     newtags[replacements[0][0]] = value;
21081                 }
21082                 delete newtags[match[0]];
21083                 change = true;
21084
21085             } else if (entity.tags[match[0]] === match[1]) {
21086                 newtags = _.assign({}, rule.replace || {}, _.omit(newtags, match[0]));
21087                 change = true;
21088             }
21089         }
21090
21091         if (change) {
21092             return graph.replace(entity.update({tags: newtags}));
21093         } else {
21094             return graph;
21095         }
21096     };
21097 };
21098 iD.actions.DiscardTags = function(difference) {
21099     return function(graph) {
21100         function discardTags(entity) {
21101             if (!_.isEmpty(entity.tags)) {
21102                 var tags = {};
21103                 _.each(entity.tags, function(v, k) {
21104                     if (v) tags[k] = v;
21105                 });
21106
21107                 graph = graph.replace(entity.update({
21108                     tags: _.omit(tags, iD.data.discarded)
21109                 }));
21110             }
21111         }
21112
21113         difference.modified().forEach(discardTags);
21114         difference.created().forEach(discardTags);
21115
21116         return graph;
21117     };
21118 };
21119 // Disconect the ways at the given node.
21120 //
21121 // Optionally, disconnect only the given ways.
21122 //
21123 // For testing convenience, accepts an ID to assign to the (first) new node.
21124 // Normally, this will be undefined and the way will automatically
21125 // be assigned a new ID.
21126 //
21127 // This is the inverse of `iD.actions.Connect`.
21128 //
21129 // Reference:
21130 //   https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/UnjoinNodeAction.as
21131 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/UnGlueAction.java
21132 //
21133 iD.actions.Disconnect = function(nodeId, newNodeId) {
21134     var wayIds;
21135
21136     var action = function(graph) {
21137         var node = graph.entity(nodeId),
21138             connections = action.connections(graph);
21139
21140         connections.forEach(function(connection) {
21141             var way = graph.entity(connection.wayID),
21142                 newNode = iD.Node({id: newNodeId, loc: node.loc, tags: node.tags});
21143
21144             graph = graph.replace(newNode);
21145             if (connection.index === 0 && way.isArea()) {
21146                 // replace shared node with shared node..
21147                 graph = graph.replace(way.replaceNode(way.nodes[0], newNode.id));
21148             } else {
21149                 // replace shared node with multiple new nodes..
21150                 graph = graph.replace(way.updateNode(newNode.id, connection.index));
21151             }
21152         });
21153
21154         return graph;
21155     };
21156
21157     action.connections = function(graph) {
21158         var candidates = [],
21159             keeping = false,
21160             parentWays = graph.parentWays(graph.entity(nodeId));
21161
21162         parentWays.forEach(function(way) {
21163             if (wayIds && wayIds.indexOf(way.id) === -1) {
21164                 keeping = true;
21165                 return;
21166             }
21167             if (way.isArea() && (way.nodes[0] === nodeId)) {
21168                 candidates.push({wayID: way.id, index: 0});
21169             } else {
21170                 way.nodes.forEach(function(waynode, index) {
21171                     if (waynode === nodeId) {
21172                         candidates.push({wayID: way.id, index: index});
21173                     }
21174                 });
21175             }
21176         });
21177
21178         return keeping ? candidates : candidates.slice(1);
21179     };
21180
21181     action.disabled = function(graph) {
21182         var connections = action.connections(graph);
21183         if (connections.length === 0 || (wayIds && wayIds.length !== connections.length))
21184             return 'not_connected';
21185     };
21186
21187     action.limitWays = function(_) {
21188         if (!arguments.length) return wayIds;
21189         wayIds = _;
21190         return action;
21191     };
21192
21193     return action;
21194 };
21195 // Join ways at the end node they share.
21196 //
21197 // This is the inverse of `iD.actions.Split`.
21198 //
21199 // Reference:
21200 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MergeWaysAction.as
21201 //   https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/actions/CombineWayAction.java
21202 //
21203 iD.actions.Join = function(ids) {
21204
21205     function groupEntitiesByGeometry(graph) {
21206         var entities = ids.map(function(id) { return graph.entity(id); });
21207         return _.extend({line: []}, _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21208     }
21209
21210     var action = function(graph) {
21211         var ways = ids.map(graph.entity, graph),
21212             survivor = ways[0];
21213
21214         // Prefer to keep an existing way.
21215         for (var i = 0; i < ways.length; i++) {
21216             if (!ways[i].isNew()) {
21217                 survivor = ways[i];
21218                 break;
21219             }
21220         }
21221
21222         var joined = iD.geo.joinWays(ways, graph)[0];
21223
21224         survivor = survivor.update({nodes: _.pluck(joined.nodes, 'id')});
21225         graph = graph.replace(survivor);
21226
21227         joined.forEach(function(way) {
21228             if (way.id === survivor.id)
21229                 return;
21230
21231             graph.parentRelations(way).forEach(function(parent) {
21232                 graph = graph.replace(parent.replaceMember(way, survivor));
21233             });
21234
21235             survivor = survivor.mergeTags(way.tags);
21236
21237             graph = graph.replace(survivor);
21238             graph = iD.actions.DeleteWay(way.id)(graph);
21239         });
21240
21241         return graph;
21242     };
21243
21244     action.disabled = function(graph) {
21245         var geometries = groupEntitiesByGeometry(graph);
21246         if (ids.length < 2 || ids.length !== geometries.line.length)
21247             return 'not_eligible';
21248
21249         var joined = iD.geo.joinWays(ids.map(graph.entity, graph), graph);
21250         if (joined.length > 1)
21251             return 'not_adjacent';
21252
21253         var nodeIds = _.pluck(joined[0].nodes, 'id').slice(1, -1),
21254             relation;
21255
21256         joined[0].forEach(function(way) {
21257             var parents = graph.parentRelations(way);
21258             parents.forEach(function(parent) {
21259                 if (parent.isRestriction() && parent.members.some(function(m) { return nodeIds.indexOf(m.id) >= 0; }))
21260                     relation = parent;
21261             });
21262         });
21263
21264         if (relation)
21265             return 'restriction';
21266     };
21267
21268     return action;
21269 };
21270 iD.actions.Merge = function(ids) {
21271     function groupEntitiesByGeometry(graph) {
21272         var entities = ids.map(function(id) { return graph.entity(id); });
21273         return _.extend({point: [], area: [], line: [], relation: []},
21274             _.groupBy(entities, function(entity) { return entity.geometry(graph); }));
21275     }
21276
21277     var action = function(graph) {
21278         var geometries = groupEntitiesByGeometry(graph),
21279             target = geometries.area[0] || geometries.line[0],
21280             points = geometries.point;
21281
21282         points.forEach(function(point) {
21283             target = target.mergeTags(point.tags);
21284
21285             graph.parentRelations(point).forEach(function(parent) {
21286                 graph = graph.replace(parent.replaceMember(point, target));
21287             });
21288
21289             graph = graph.remove(point);
21290         });
21291
21292         graph = graph.replace(target);
21293
21294         return graph;
21295     };
21296
21297     action.disabled = function(graph) {
21298         var geometries = groupEntitiesByGeometry(graph);
21299         if (geometries.point.length === 0 ||
21300             (geometries.area.length + geometries.line.length) !== 1 ||
21301             geometries.relation.length !== 0)
21302             return 'not_eligible';
21303     };
21304
21305     return action;
21306 };
21307 iD.actions.MergePolygon = function(ids, newRelationId) {
21308
21309     function groupEntities(graph) {
21310         var entities = ids.map(function (id) { return graph.entity(id); });
21311         return _.extend({
21312                 closedWay: [],
21313                 multipolygon: [],
21314                 other: []
21315             }, _.groupBy(entities, function(entity) {
21316                 if (entity.type === 'way' && entity.isClosed()) {
21317                     return 'closedWay';
21318                 } else if (entity.type === 'relation' && entity.isMultipolygon()) {
21319                     return 'multipolygon';
21320                 } else {
21321                     return 'other';
21322                 }
21323             }));
21324     }
21325
21326     var action = function(graph) {
21327         var entities = groupEntities(graph);
21328
21329         // An array representing all the polygons that are part of the multipolygon.
21330         //
21331         // Each element is itself an array of objects with an id property, and has a
21332         // locs property which is an array of the locations forming the polygon.
21333         var polygons = entities.multipolygon.reduce(function(polygons, m) {
21334             return polygons.concat(iD.geo.joinWays(m.members, graph));
21335         }, []).concat(entities.closedWay.map(function(d) {
21336             var member = [{id: d.id}];
21337             member.nodes = graph.childNodes(d);
21338             return member;
21339         }));
21340
21341         // contained is an array of arrays of boolean values,
21342         // where contained[j][k] is true iff the jth way is
21343         // contained by the kth way.
21344         var contained = polygons.map(function(w, i) {
21345             return polygons.map(function(d, n) {
21346                 if (i === n) return null;
21347                 return iD.geo.polygonContainsPolygon(
21348                     _.pluck(d.nodes, 'loc'),
21349                     _.pluck(w.nodes, 'loc'));
21350             });
21351         });
21352
21353         // Sort all polygons as either outer or inner ways
21354         var members = [],
21355             outer = true;
21356
21357         while (polygons.length) {
21358             extractUncontained(polygons);
21359             polygons = polygons.filter(isContained);
21360             contained = contained.filter(isContained).map(filterContained);
21361         }
21362
21363         function isContained(d, i) {
21364             return _.any(contained[i]);
21365         }
21366
21367         function filterContained(d) {
21368             return d.filter(isContained);
21369         }
21370
21371         function extractUncontained(polygons) {
21372             polygons.forEach(function(d, i) {
21373                 if (!isContained(d, i)) {
21374                     d.forEach(function(member) {
21375                         members.push({
21376                             type: 'way',
21377                             id: member.id,
21378                             role: outer ? 'outer' : 'inner'
21379                         });
21380                     });
21381                 }
21382             });
21383             outer = !outer;
21384         }
21385
21386         // Move all tags to one relation
21387         var relation = entities.multipolygon[0] ||
21388             iD.Relation({ id: newRelationId, tags: { type: 'multipolygon' }});
21389
21390         entities.multipolygon.slice(1).forEach(function(m) {
21391             relation = relation.mergeTags(m.tags);
21392             graph = graph.remove(m);
21393         });
21394
21395         entities.closedWay.forEach(function(way) {
21396             function isThisOuter(m) {
21397                 return m.id === way.id && m.role !== 'inner';
21398             }
21399             if (members.some(isThisOuter)) {
21400                 relation = relation.mergeTags(way.tags);
21401                 graph = graph.replace(way.update({ tags: {} }));
21402             }
21403         });
21404
21405         return graph.replace(relation.update({
21406             members: members,
21407             tags: _.omit(relation.tags, 'area')
21408         }));
21409     };
21410
21411     action.disabled = function(graph) {
21412         var entities = groupEntities(graph);
21413         if (entities.other.length > 0 ||
21414             entities.closedWay.length + entities.multipolygon.length < 2)
21415             return 'not_eligible';
21416         if (!entities.multipolygon.every(function(r) { return r.isComplete(graph); }))
21417             return 'incomplete_relation';
21418     };
21419
21420     return action;
21421 };
21422 iD.actions.MergeRemoteChanges = function(id, localGraph, remoteGraph, formatUser) {
21423     var option = 'safe',  // 'safe', 'force_local', 'force_remote'
21424         conflicts = [];
21425
21426     function user(d) {
21427         return _.isFunction(formatUser) ? formatUser(d) : d;
21428     }
21429
21430
21431     function mergeLocation(remote, target) {
21432         function pointEqual(a, b) {
21433             var epsilon = 1e-6;
21434             return (Math.abs(a[0] - b[0]) < epsilon) && (Math.abs(a[1] - b[1]) < epsilon);
21435         }
21436
21437         if (option === 'force_local' || pointEqual(target.loc, remote.loc)) {
21438             return target;
21439         }
21440         if (option === 'force_remote') {
21441             return target.update({loc: remote.loc});
21442         }
21443
21444         conflicts.push(t('merge_remote_changes.conflict.location', { user: user(remote.user) }));
21445         return target;
21446     }
21447
21448
21449     function mergeNodes(base, remote, target) {
21450         if (option === 'force_local' || _.isEqual(target.nodes, remote.nodes)) {
21451             return target;
21452         }
21453         if (option === 'force_remote') {
21454             return target.update({nodes: remote.nodes});
21455         }
21456
21457         var ccount = conflicts.length,
21458             o = base.nodes || [],
21459             a = target.nodes || [],
21460             b = remote.nodes || [],
21461             nodes = [],
21462             hunks = Diff3.diff3_merge(a, o, b, true);
21463
21464         for (var i = 0; i < hunks.length; i++) {
21465             var hunk = hunks[i];
21466             if (hunk.ok) {
21467                 nodes.push.apply(nodes, hunk.ok);
21468             } else {
21469                 // for all conflicts, we can assume c.a !== c.b
21470                 // because `diff3_merge` called with `true` option to exclude false conflicts..
21471                 var c = hunk.conflict;
21472                 if (_.isEqual(c.o, c.a)) {  // only changed remotely
21473                     nodes.push.apply(nodes, c.b);
21474                 } else if (_.isEqual(c.o, c.b)) {  // only changed locally
21475                     nodes.push.apply(nodes, c.a);
21476                 } else {       // changed both locally and remotely
21477                     conflicts.push(t('merge_remote_changes.conflict.nodelist', { user: user(remote.user) }));
21478                     break;
21479                 }
21480             }
21481         }
21482
21483         return (conflicts.length === ccount) ? target.update({nodes: nodes}) : target;
21484     }
21485
21486
21487     function mergeChildren(targetWay, children, updates, graph) {
21488         function isUsed(node, targetWay) {
21489             var parentWays = _.pluck(graph.parentWays(node), 'id');
21490             return node.hasInterestingTags() ||
21491                 _.without(parentWays, targetWay.id).length > 0 ||
21492                 graph.parentRelations(node).length > 0;
21493         }
21494
21495         var ccount = conflicts.length;
21496
21497         for (var i = 0; i < children.length; i++) {
21498             var id = children[i],
21499                 node = graph.hasEntity(id);
21500
21501             // remove unused childNodes..
21502             if (targetWay.nodes.indexOf(id) === -1) {
21503                 if (node && !isUsed(node, targetWay)) {
21504                     updates.removeIds.push(id);
21505                 }
21506                 continue;
21507             }
21508
21509             // restore used childNodes..
21510             var local = localGraph.hasEntity(id),
21511                 remote = remoteGraph.hasEntity(id),
21512                 target;
21513
21514             if (option === 'force_remote' && remote && remote.visible) {
21515                 updates.replacements.push(remote);
21516
21517             } else if (option === 'force_local' && local) {
21518                 target = iD.Entity(local);
21519                 if (remote) {
21520                     target = target.update({ version: remote.version });
21521                 }
21522                 updates.replacements.push(target);
21523
21524             } else if (option === 'safe' && local && remote && local.version !== remote.version) {
21525                 target = iD.Entity(local, { version: remote.version });
21526                 if (remote.visible) {
21527                     target = mergeLocation(remote, target);
21528                 } else {
21529                     conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21530                 }
21531
21532                 if (conflicts.length !== ccount) break;
21533                 updates.replacements.push(target);
21534             }
21535         }
21536
21537         return targetWay;
21538     }
21539
21540
21541     function updateChildren(updates, graph) {
21542         for (var i = 0; i < updates.replacements.length; i++) {
21543             graph = graph.replace(updates.replacements[i]);
21544         }
21545         if (updates.removeIds.length) {
21546             graph = iD.actions.DeleteMultiple(updates.removeIds)(graph);
21547         }
21548         return graph;
21549     }
21550
21551
21552     function mergeMembers(remote, target) {
21553         if (option === 'force_local' || _.isEqual(target.members, remote.members)) {
21554             return target;
21555         }
21556         if (option === 'force_remote') {
21557             return target.update({members: remote.members});
21558         }
21559
21560         conflicts.push(t('merge_remote_changes.conflict.memberlist', { user: user(remote.user) }));
21561         return target;
21562     }
21563
21564
21565     function mergeTags(base, remote, target) {
21566         function ignoreKey(k) {
21567             return _.contains(iD.data.discarded, k);
21568         }
21569
21570         if (option === 'force_local' || _.isEqual(target.tags, remote.tags)) {
21571             return target;
21572         }
21573         if (option === 'force_remote') {
21574             return target.update({tags: remote.tags});
21575         }
21576
21577         var ccount = conflicts.length,
21578             o = base.tags || {},
21579             a = target.tags || {},
21580             b = remote.tags || {},
21581             keys = _.reject(_.union(_.keys(o), _.keys(a), _.keys(b)), ignoreKey),
21582             tags = _.clone(a),
21583             changed = false;
21584
21585         for (var i = 0; i < keys.length; i++) {
21586             var k = keys[i];
21587
21588             if (o[k] !== b[k] && a[k] !== b[k]) {    // changed remotely..
21589                 if (o[k] !== a[k]) {      // changed locally..
21590                     conflicts.push(t('merge_remote_changes.conflict.tags',
21591                         { tag: k, local: a[k], remote: b[k], user: user(remote.user) }));
21592
21593                 } else {                  // unchanged locally, accept remote change..
21594                     if (b.hasOwnProperty(k)) {
21595                         tags[k] = b[k];
21596                     } else {
21597                         delete tags[k];
21598                     }
21599                     changed = true;
21600                 }
21601             }
21602         }
21603
21604         return (changed && conflicts.length === ccount) ? target.update({tags: tags}) : target;
21605     }
21606
21607
21608     //  `graph.base()` is the common ancestor of the two graphs.
21609     //  `localGraph` contains user's edits up to saving
21610     //  `remoteGraph` contains remote edits to modified nodes
21611     //  `graph` must be a descendent of `localGraph` and may include
21612     //      some conflict resolution actions performed on it.
21613     //
21614     //                  --- ... --- `localGraph` -- ... -- `graph`
21615     //                 /
21616     //  `graph.base()` --- ... --- `remoteGraph`
21617     //
21618     var action = function(graph) {
21619         var updates = { replacements: [], removeIds: [] },
21620             base = graph.base().entities[id],
21621             local = localGraph.entity(id),
21622             remote = remoteGraph.entity(id),
21623             target = iD.Entity(local, { version: remote.version });
21624
21625         // delete/undelete
21626         if (!remote.visible) {
21627             if (option === 'force_remote') {
21628                 return iD.actions.DeleteMultiple([id])(graph);
21629
21630             } else if (option === 'force_local') {
21631                 if (target.type === 'way') {
21632                     target = mergeChildren(target, _.uniq(local.nodes), updates, graph);
21633                     graph = updateChildren(updates, graph);
21634                 }
21635                 return graph.replace(target);
21636
21637             } else {
21638                 conflicts.push(t('merge_remote_changes.conflict.deleted', { user: user(remote.user) }));
21639                 return graph;  // do nothing
21640             }
21641         }
21642
21643         // merge
21644         if (target.type === 'node') {
21645             target = mergeLocation(remote, target);
21646
21647         } else if (target.type === 'way') {
21648             // pull in any child nodes that may not be present locally..
21649             graph.rebase(remoteGraph.childNodes(remote), [graph], false);
21650             target = mergeNodes(base, remote, target);
21651             target = mergeChildren(target, _.union(local.nodes, remote.nodes), updates, graph);
21652
21653         } else if (target.type === 'relation') {
21654             target = mergeMembers(remote, target);
21655         }
21656
21657         target = mergeTags(base, remote, target);
21658
21659         if (!conflicts.length) {
21660             graph = updateChildren(updates, graph).replace(target);
21661         }
21662
21663         return graph;
21664     };
21665
21666     action.withOption = function(opt) {
21667         option = opt;
21668         return action;
21669     };
21670
21671     action.conflicts = function() {
21672         return conflicts;
21673     };
21674
21675     return action;
21676 };
21677 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
21678 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
21679 iD.actions.Move = function(moveIds, tryDelta, projection, cache) {
21680     var delta = tryDelta;
21681
21682     function vecAdd(a, b) { return [a[0] + b[0], a[1] + b[1]]; }
21683     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
21684
21685     function setupCache(graph) {
21686         function canMove(nodeId) {
21687             var parents = _.pluck(graph.parentWays(graph.entity(nodeId)), 'id');
21688             if (parents.length < 3) return true;
21689
21690             // Don't move a vertex where >2 ways meet, unless all parentWays are moving too..
21691             var parentsMoving = _.all(parents, function(id) { return cache.moving[id]; });
21692             if (!parentsMoving) delete cache.moving[nodeId];
21693
21694             return parentsMoving;
21695         }
21696
21697         function cacheEntities(ids) {
21698             _.each(ids, function(id) {
21699                 if (cache.moving[id]) return;
21700                 cache.moving[id] = true;
21701
21702                 var entity = graph.hasEntity(id);
21703                 if (!entity) return;
21704
21705                 if (entity.type === 'node') {
21706                     cache.nodes.push(id);
21707                     cache.startLoc[id] = entity.loc;
21708                 } else if (entity.type === 'way') {
21709                     cache.ways.push(id);
21710                     cacheEntities(entity.nodes);
21711                 } else {
21712                     cacheEntities(_.pluck(entity.members, 'id'));
21713                 }
21714             });
21715         }
21716
21717         function cacheIntersections(ids) {
21718             function isEndpoint(way, id) { return !way.isClosed() && !!way.affix(id); }
21719
21720             _.each(ids, function(id) {
21721                 // consider only intersections with 1 moved and 1 unmoved way.
21722                 _.each(graph.childNodes(graph.entity(id)), function(node) {
21723                     var parents = graph.parentWays(node);
21724                     if (parents.length !== 2) return;
21725
21726                     var moved = graph.entity(id),
21727                         unmoved = _.find(parents, function(way) { return !cache.moving[way.id]; });
21728                     if (!unmoved) return;
21729
21730                     // exclude ways that are overly connected..
21731                     if (_.intersection(moved.nodes, unmoved.nodes).length > 2) return;
21732
21733                     if (moved.isArea() || unmoved.isArea()) return;
21734
21735                     cache.intersection[node.id] = {
21736                         nodeId: node.id,
21737                         movedId: moved.id,
21738                         unmovedId: unmoved.id,
21739                         movedIsEP: isEndpoint(moved, node.id),
21740                         unmovedIsEP: isEndpoint(unmoved, node.id)
21741                     };
21742                 });
21743             });
21744         }
21745
21746
21747         if (!cache) {
21748             cache = {};
21749         }
21750         if (!cache.ok) {
21751             cache.moving = {};
21752             cache.intersection = {};
21753             cache.replacedVertex = {};
21754             cache.startLoc = {};
21755             cache.nodes = [];
21756             cache.ways = [];
21757
21758             cacheEntities(moveIds);
21759             cacheIntersections(cache.ways);
21760             cache.nodes = _.filter(cache.nodes, canMove);
21761
21762             cache.ok = true;
21763         }
21764     }
21765
21766
21767     // Place a vertex where the moved vertex used to be, to preserve way shape..
21768     function replaceMovedVertex(nodeId, wayId, graph, delta) {
21769         var way = graph.entity(wayId),
21770             moved = graph.entity(nodeId),
21771             movedIndex = way.nodes.indexOf(nodeId),
21772             len, prevIndex, nextIndex;
21773
21774         if (way.isClosed()) {
21775             len = way.nodes.length - 1;
21776             prevIndex = (movedIndex + len - 1) % len;
21777             nextIndex = (movedIndex + len + 1) % len;
21778         } else {
21779             len = way.nodes.length;
21780             prevIndex = movedIndex - 1;
21781             nextIndex = movedIndex + 1;
21782         }
21783
21784         var prev = graph.hasEntity(way.nodes[prevIndex]),
21785             next = graph.hasEntity(way.nodes[nextIndex]);
21786
21787         // Don't add orig vertex at endpoint..
21788         if (!prev || !next) return graph;
21789
21790         var key = wayId + '_' + nodeId,
21791             orig = cache.replacedVertex[key];
21792         if (!orig) {
21793             orig = iD.Node();
21794             cache.replacedVertex[key] = orig;
21795             cache.startLoc[orig.id] = cache.startLoc[nodeId];
21796         }
21797
21798         var start, end;
21799         if (delta) {
21800             start = projection(cache.startLoc[nodeId]);
21801             end = projection.invert(vecAdd(start, delta));
21802         } else {
21803             end = cache.startLoc[nodeId];
21804         }
21805         orig = orig.move(end);
21806
21807         var angle = Math.abs(iD.geo.angle(orig, prev, projection) -
21808                 iD.geo.angle(orig, next, projection)) * 180 / Math.PI;
21809
21810         // Don't add orig vertex if it would just make a straight line..
21811         if (angle > 175 && angle < 185) return graph;
21812
21813         // Don't add orig vertex if another point is already nearby (within 10m)
21814         if (iD.geo.sphericalDistance(prev.loc, orig.loc) < 10 ||
21815             iD.geo.sphericalDistance(orig.loc, next.loc) < 10) return graph;
21816
21817         // moving forward or backward along way?
21818         var p1 = [prev.loc, orig.loc, moved.loc, next.loc].map(projection),
21819             p2 = [prev.loc, moved.loc, orig.loc, next.loc].map(projection),
21820             d1 = iD.geo.pathLength(p1),
21821             d2 = iD.geo.pathLength(p2),
21822             insertAt = (d1 < d2) ? movedIndex : nextIndex;
21823
21824         // moving around closed loop?
21825         if (way.isClosed() && insertAt === 0) insertAt = len;
21826
21827         way = way.addNode(orig.id, insertAt);
21828         return graph.replace(orig).replace(way);
21829     }
21830
21831     // Reorder nodes around intersections that have moved..
21832     function unZorroIntersection(intersection, graph) {
21833         var vertex = graph.entity(intersection.nodeId),
21834             way1 = graph.entity(intersection.movedId),
21835             way2 = graph.entity(intersection.unmovedId),
21836             isEP1 = intersection.movedIsEP,
21837             isEP2 = intersection.unmovedIsEP;
21838
21839         // don't move the vertex if it is the endpoint of both ways.
21840         if (isEP1 && isEP2) return graph;
21841
21842         var nodes1 = _.without(graph.childNodes(way1), vertex),
21843             nodes2 = _.without(graph.childNodes(way2), vertex);
21844
21845         if (way1.isClosed() && way1.first() === vertex.id) nodes1.push(nodes1[0]);
21846         if (way2.isClosed() && way2.first() === vertex.id) nodes2.push(nodes2[0]);
21847
21848         var edge1 = !isEP1 && iD.geo.chooseEdge(nodes1, projection(vertex.loc), projection),
21849             edge2 = !isEP2 && iD.geo.chooseEdge(nodes2, projection(vertex.loc), projection),
21850             loc;
21851
21852         // snap vertex to nearest edge (or some point between them)..
21853         if (!isEP1 && !isEP2) {
21854             var epsilon = 1e-4, maxIter = 10;
21855             for (var i = 0; i < maxIter; i++) {
21856                 loc = iD.geo.interp(edge1.loc, edge2.loc, 0.5);
21857                 edge1 = iD.geo.chooseEdge(nodes1, projection(loc), projection);
21858                 edge2 = iD.geo.chooseEdge(nodes2, projection(loc), projection);
21859                 if (Math.abs(edge1.distance - edge2.distance) < epsilon) break;
21860             }
21861         } else if (!isEP1) {
21862             loc = edge1.loc;
21863         } else {
21864             loc = edge2.loc;
21865         }
21866
21867         graph = graph.replace(vertex.move(loc));
21868
21869         // if zorro happened, reorder nodes..
21870         if (!isEP1 && edge1.index !== way1.nodes.indexOf(vertex.id)) {
21871             way1 = way1.removeNode(vertex.id).addNode(vertex.id, edge1.index);
21872             graph = graph.replace(way1);
21873         }
21874         if (!isEP2 && edge2.index !== way2.nodes.indexOf(vertex.id)) {
21875             way2 = way2.removeNode(vertex.id).addNode(vertex.id, edge2.index);
21876             graph = graph.replace(way2);
21877         }
21878
21879         return graph;
21880     }
21881
21882
21883     function cleanupIntersections(graph) {
21884         _.each(cache.intersection, function(obj) {
21885             graph = replaceMovedVertex(obj.nodeId, obj.movedId, graph, delta);
21886             graph = replaceMovedVertex(obj.nodeId, obj.unmovedId, graph, null);
21887             graph = unZorroIntersection(obj, graph);
21888         });
21889
21890         return graph;
21891     }
21892
21893     // check if moving way endpoint can cross an unmoved way, if so limit delta..
21894     function limitDelta(graph) {
21895         _.each(cache.intersection, function(obj) {
21896             if (!obj.movedIsEP) return;
21897
21898             var node = graph.entity(obj.nodeId),
21899                 start = projection(node.loc),
21900                 end = vecAdd(start, delta),
21901                 movedNodes = graph.childNodes(graph.entity(obj.movedId)),
21902                 movedPath = _.map(_.pluck(movedNodes, 'loc'),
21903                     function(loc) { return vecAdd(projection(loc), delta); }),
21904                 unmovedNodes = graph.childNodes(graph.entity(obj.unmovedId)),
21905                 unmovedPath = _.map(_.pluck(unmovedNodes, 'loc'), projection),
21906                 hits = iD.geo.pathIntersections(movedPath, unmovedPath);
21907
21908             for (var i = 0; i < hits.length; i++) {
21909                 if (_.isEqual(hits[i], end)) continue;
21910                 var edge = iD.geo.chooseEdge(unmovedNodes, end, projection);
21911                 delta = vecSub(projection(edge.loc), start);
21912             }
21913         });
21914     }
21915
21916
21917     var action = function(graph) {
21918         if (delta[0] === 0 && delta[1] === 0) return graph;
21919
21920         setupCache(graph);
21921
21922         if (!_.isEmpty(cache.intersection)) {
21923             limitDelta(graph);
21924         }
21925
21926         _.each(cache.nodes, function(id) {
21927             var node = graph.entity(id),
21928                 start = projection(node.loc),
21929                 end = vecAdd(start, delta);
21930             graph = graph.replace(node.move(projection.invert(end)));
21931         });
21932
21933         if (!_.isEmpty(cache.intersection)) {
21934             graph = cleanupIntersections(graph);
21935         }
21936
21937         return graph;
21938     };
21939
21940     action.disabled = function(graph) {
21941         function incompleteRelation(id) {
21942             var entity = graph.entity(id);
21943             return entity.type === 'relation' && !entity.isComplete(graph);
21944         }
21945
21946         if (_.any(moveIds, incompleteRelation))
21947             return 'incomplete_relation';
21948     };
21949
21950     action.delta = function() {
21951         return delta;
21952     };
21953
21954     return action;
21955 };
21956 // https://github.com/openstreetmap/josm/blob/mirror/src/org/openstreetmap/josm/command/MoveCommand.java
21957 // https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/MoveNodeAction.as
21958 iD.actions.MoveNode = function(nodeId, loc) {
21959     return function(graph) {
21960         return graph.replace(graph.entity(nodeId).move(loc));
21961     };
21962 };
21963 iD.actions.Noop = function() {
21964     return function(graph) {
21965         return graph;
21966     };
21967 };
21968 /*
21969  * Based on https://github.com/openstreetmap/potlatch2/blob/master/net/systemeD/potlatch2/tools/Quadrilateralise.as
21970  */
21971
21972 iD.actions.Orthogonalize = function(wayId, projection) {
21973     var threshold = 12, // degrees within right or straight to alter
21974         lowerThreshold = Math.cos((90 - threshold) * Math.PI / 180),
21975         upperThreshold = Math.cos(threshold * Math.PI / 180);
21976
21977     var action = function(graph) {
21978         var way = graph.entity(wayId),
21979             nodes = graph.childNodes(way),
21980             points = _.uniq(nodes).map(function(n) { return projection(n.loc); }),
21981             corner = {i: 0, dotp: 1},
21982             epsilon = 1e-4,
21983             i, j, score, motions;
21984
21985         if (nodes.length === 4) {
21986             for (i = 0; i < 1000; i++) {
21987                 motions = points.map(calcMotion);
21988                 points[corner.i] = addPoints(points[corner.i],motions[corner.i]);
21989                 score = corner.dotp;
21990                 if (score < epsilon) {
21991                     break;
21992                 }
21993             }
21994
21995             graph = graph.replace(graph.entity(nodes[corner.i].id)
21996                 .move(projection.invert(points[corner.i])));
21997         } else {
21998             var best,
21999                 originalPoints = _.clone(points);
22000             score = Infinity;
22001
22002             for (i = 0; i < 1000; i++) {
22003                 motions = points.map(calcMotion);
22004                 for (j = 0; j < motions.length; j++) {
22005                     points[j] = addPoints(points[j],motions[j]);
22006                 }
22007                 var newScore = squareness(points);
22008                 if (newScore < score) {
22009                     best = _.clone(points);
22010                     score = newScore;
22011                 }
22012                 if (score < epsilon) {
22013                     break;
22014                 }
22015             }
22016
22017             points = best;
22018
22019             for (i = 0; i < points.length; i++) {
22020                 // only move the points that actually moved
22021                 if (originalPoints[i][0] !== points[i][0] || originalPoints[i][1] !== points[i][1]) {
22022                     graph = graph.replace(graph.entity(nodes[i].id)
22023                         .move(projection.invert(points[i])));
22024                 }
22025             }
22026
22027             // remove empty nodes on straight sections
22028             for (i = 0; i < points.length; i++) {
22029                 var node = nodes[i];
22030
22031                 if (graph.parentWays(node).length > 1 ||
22032                     graph.parentRelations(node).length ||
22033                     node.hasInterestingTags()) {
22034
22035                     continue;
22036                 }
22037
22038                 var dotp = normalizedDotProduct(i, points);
22039                 if (dotp < -1 + epsilon) {
22040                     graph = iD.actions.DeleteNode(nodes[i].id)(graph);
22041                 }
22042             }
22043         }
22044
22045         return graph;
22046
22047         function calcMotion(b, i, array) {
22048             var a = array[(i - 1 + array.length) % array.length],
22049                 c = array[(i + 1) % array.length],
22050                 p = subtractPoints(a, b),
22051                 q = subtractPoints(c, b),
22052                 scale, dotp;
22053
22054             scale = 2 * Math.min(iD.geo.euclideanDistance(p, [0, 0]), iD.geo.euclideanDistance(q, [0, 0]));
22055             p = normalizePoint(p, 1.0);
22056             q = normalizePoint(q, 1.0);
22057
22058             dotp = filterDotProduct(p[0] * q[0] + p[1] * q[1]);
22059
22060             // nasty hack to deal with almost-straight segments (angle is closer to 180 than to 90/270).
22061             if (array.length > 3) {
22062                 if (dotp < -0.707106781186547) {
22063                     dotp += 1.0;
22064                 }
22065             } else if (dotp && Math.abs(dotp) < corner.dotp) {
22066                 corner.i = i;
22067                 corner.dotp = Math.abs(dotp);
22068             }
22069
22070             return normalizePoint(addPoints(p, q), 0.1 * dotp * scale);
22071         }
22072     };
22073
22074     function squareness(points) {
22075         return points.reduce(function(sum, val, i, array) {
22076             var dotp = normalizedDotProduct(i, array);
22077
22078             dotp = filterDotProduct(dotp);
22079             return sum + 2.0 * Math.min(Math.abs(dotp - 1.0), Math.min(Math.abs(dotp), Math.abs(dotp + 1)));
22080         }, 0);
22081     }
22082
22083     function normalizedDotProduct(i, points) {
22084         var a = points[(i - 1 + points.length) % points.length],
22085             b = points[i],
22086             c = points[(i + 1) % points.length],
22087             p = subtractPoints(a, b),
22088             q = subtractPoints(c, b);
22089
22090         p = normalizePoint(p, 1.0);
22091         q = normalizePoint(q, 1.0);
22092
22093         return p[0] * q[0] + p[1] * q[1];
22094     }
22095
22096     function subtractPoints(a, b) {
22097         return [a[0] - b[0], a[1] - b[1]];
22098     }
22099
22100     function addPoints(a, b) {
22101         return [a[0] + b[0], a[1] + b[1]];
22102     }
22103
22104     function normalizePoint(point, scale) {
22105         var vector = [0, 0];
22106         var length = Math.sqrt(point[0] * point[0] + point[1] * point[1]);
22107         if (length !== 0) {
22108             vector[0] = point[0] / length;
22109             vector[1] = point[1] / length;
22110         }
22111
22112         vector[0] *= scale;
22113         vector[1] *= scale;
22114
22115         return vector;
22116     }
22117
22118     function filterDotProduct(dotp) {
22119         if (lowerThreshold > Math.abs(dotp) || Math.abs(dotp) > upperThreshold) {
22120             return dotp;
22121         }
22122
22123         return 0;
22124     }
22125
22126     action.disabled = function(graph) {
22127         var way = graph.entity(wayId),
22128             nodes = graph.childNodes(way),
22129             points = _.uniq(nodes).map(function(n) { return projection(n.loc); });
22130
22131         if (squareness(points)) {
22132             return false;
22133         }
22134
22135         return 'not_squarish';
22136     };
22137
22138     return action;
22139 };
22140 // Create a restriction relation for `turn`, which must have the following structure:
22141 //
22142 //     {
22143 //         from: { node: <node ID>, way: <way ID> },
22144 //         via:  { node: <node ID> },
22145 //         to:   { node: <node ID>, way: <way ID> },
22146 //         restriction: <'no_right_turn', 'no_left_turn', etc.>
22147 //     }
22148 //
22149 // This specifies a restriction of type `restriction` when traveling from
22150 // `from.node` in `from.way` toward `to.node` in `to.way` via `via.node`.
22151 // (The action does not check that these entities form a valid intersection.)
22152 //
22153 // If `restriction` is not provided, it is automatically determined by
22154 // iD.geo.inferRestriction.
22155 //
22156 // If necessary, the `from` and `to` ways are split. In these cases, `from.node`
22157 // and `to.node` are used to determine which portion of the split ways become
22158 // members of the restriction.
22159 //
22160 // For testing convenience, accepts an ID to assign to the new relation.
22161 // Normally, this will be undefined and the relation will automatically
22162 // be assigned a new ID.
22163 //
22164 iD.actions.RestrictTurn = function(turn, projection, restrictionId) {
22165     return function(graph) {
22166         var from = graph.entity(turn.from.way),
22167             via  = graph.entity(turn.via.node),
22168             to   = graph.entity(turn.to.way);
22169
22170         function split(toOrFrom) {
22171             var newID = toOrFrom.newID || iD.Way().id;
22172             graph = iD.actions.Split(via.id, [newID])
22173                 .limitWays([toOrFrom.way])(graph);
22174
22175             var a = graph.entity(newID),
22176                 b = graph.entity(toOrFrom.way);
22177
22178             if (a.nodes.indexOf(toOrFrom.node) !== -1) {
22179                 return [a, b];
22180             } else {
22181                 return [b, a];
22182             }
22183         }
22184
22185         if (!from.affix(via.id)) {
22186             if (turn.from.node === turn.to.node) {
22187                 // U-turn
22188                 from = to = split(turn.from)[0];
22189             } else if (turn.from.way === turn.to.way) {
22190                 // Straight-on
22191                 var s = split(turn.from);
22192                 from = s[0];
22193                 to   = s[1];
22194             } else {
22195                 // Other
22196                 from = split(turn.from)[0];
22197             }
22198         }
22199
22200         if (!to.affix(via.id)) {
22201             to = split(turn.to)[0];
22202         }
22203
22204         return graph.replace(iD.Relation({
22205             id: restrictionId,
22206             tags: {
22207                 type: 'restriction',
22208                 restriction: turn.restriction ||
22209                     iD.geo.inferRestriction(
22210                         graph,
22211                         turn.from,
22212                         turn.via,
22213                         turn.to,
22214                         projection)
22215             },
22216             members: [
22217                 {id: from.id, type: 'way',  role: 'from'},
22218                 {id: via.id,  type: 'node', role: 'via'},
22219                 {id: to.id,   type: 'way',  role: 'to'}
22220             ]
22221         }));
22222     };
22223 };
22224 /*
22225   Order the nodes of a way in reverse order and reverse any direction dependent tags
22226   other than `oneway`. (We assume that correcting a backwards oneway is the primary
22227   reason for reversing a way.)
22228
22229   The following transforms are performed:
22230
22231     Keys:
22232           *:right=* ⟺ *:left=*
22233         *:forward=* ⟺ *:backward=*
22234        direction=up ⟺ direction=down
22235          incline=up ⟺ incline=down
22236             *=right ⟺ *=left
22237
22238     Relation members:
22239        role=forward ⟺ role=backward
22240          role=north ⟺ role=south
22241           role=east ⟺ role=west
22242
22243    In addition, numeric-valued `incline` tags are negated.
22244
22245    The JOSM implementation was used as a guide, but transformations that were of unclear benefit
22246    or adjusted tags that don't seem to be used in practice were omitted.
22247
22248    References:
22249       http://wiki.openstreetmap.org/wiki/Forward_%26_backward,_left_%26_right
22250       http://wiki.openstreetmap.org/wiki/Key:direction#Steps
22251       http://wiki.openstreetmap.org/wiki/Key:incline
22252       http://wiki.openstreetmap.org/wiki/Route#Members
22253       http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
22254  */
22255 iD.actions.Reverse = function(wayId) {
22256     var replacements = [
22257             [/:right$/, ':left'], [/:left$/, ':right'],
22258             [/:forward$/, ':backward'], [/:backward$/, ':forward']
22259         ],
22260         numeric = /^([+\-]?)(?=[\d.])/,
22261         roleReversals = {
22262             forward: 'backward',
22263             backward: 'forward',
22264             north: 'south',
22265             south: 'north',
22266             east: 'west',
22267             west: 'east'
22268         };
22269
22270     function reverseKey(key) {
22271         for (var i = 0; i < replacements.length; ++i) {
22272             var replacement = replacements[i];
22273             if (replacement[0].test(key)) {
22274                 return key.replace(replacement[0], replacement[1]);
22275             }
22276         }
22277         return key;
22278     }
22279
22280     function reverseValue(key, value) {
22281         if (key === 'incline' && numeric.test(value)) {
22282             return value.replace(numeric, function(_, sign) { return sign === '-' ? '' : '-'; });
22283         } else if (key === 'incline' || key === 'direction') {
22284             return {up: 'down', down: 'up'}[value] || value;
22285         } else {
22286             return {left: 'right', right: 'left'}[value] || value;
22287         }
22288     }
22289
22290     return function(graph) {
22291         var way = graph.entity(wayId),
22292             nodes = way.nodes.slice().reverse(),
22293             tags = {}, key, role;
22294
22295         for (key in way.tags) {
22296             tags[reverseKey(key)] = reverseValue(key, way.tags[key]);
22297         }
22298
22299         graph.parentRelations(way).forEach(function(relation) {
22300             relation.members.forEach(function(member, index) {
22301                 if (member.id === way.id && (role = roleReversals[member.role])) {
22302                     relation = relation.updateMember({role: role}, index);
22303                     graph = graph.replace(relation);
22304                 }
22305             });
22306         });
22307
22308         return graph.replace(way.update({nodes: nodes, tags: tags}));
22309     };
22310 };
22311 iD.actions.Revert = function(id) {
22312
22313     var action = function(graph) {
22314         var entity = graph.hasEntity(id),
22315             base = graph.base().entities[id];
22316
22317         if (entity && !base) {    // entity will be removed..
22318             if (entity.type === 'node') {
22319                 graph.parentWays(entity)
22320                     .forEach(function(parent) {
22321                         parent = parent.removeNode(id);
22322                         graph = graph.replace(parent);
22323
22324                         if (parent.isDegenerate()) {
22325                             graph = iD.actions.DeleteWay(parent.id)(graph);
22326                         }
22327                     });
22328             }
22329
22330             graph.parentRelations(entity)
22331                 .forEach(function(parent) {
22332                     parent = parent.removeMembersWithID(id);
22333                     graph = graph.replace(parent);
22334
22335                     if (parent.isDegenerate()) {
22336                         graph = iD.actions.DeleteRelation(parent.id)(graph);
22337                     }
22338                 });
22339         }
22340
22341         return graph.revert(id);
22342     };
22343
22344     return action;
22345 };
22346 iD.actions.RotateWay = function(wayId, pivot, angle, projection) {
22347     return function(graph) {
22348         return graph.update(function(graph) {
22349             var way = graph.entity(wayId);
22350
22351             _.unique(way.nodes).forEach(function(id) {
22352
22353                 var node = graph.entity(id),
22354                     point = projection(node.loc),
22355                     radial = [0,0];
22356
22357                 radial[0] = point[0] - pivot[0];
22358                 radial[1] = point[1] - pivot[1];
22359
22360                 point = [
22361                     radial[0] * Math.cos(angle) - radial[1] * Math.sin(angle) + pivot[0],
22362                     radial[0] * Math.sin(angle) + radial[1] * Math.cos(angle) + pivot[1]
22363                 ];
22364
22365                 graph = graph.replace(node.move(projection.invert(point)));
22366
22367             });
22368
22369         });
22370     };
22371 };
22372 // Split a way at the given node.
22373 //
22374 // Optionally, split only the given ways, if multiple ways share
22375 // the given node.
22376 //
22377 // This is the inverse of `iD.actions.Join`.
22378 //
22379 // For testing convenience, accepts an ID to assign to the new way.
22380 // Normally, this will be undefined and the way will automatically
22381 // be assigned a new ID.
22382 //
22383 // Reference:
22384 //   https://github.com/systemed/potlatch2/blob/master/net/systemeD/halcyon/connection/actions/SplitWayAction.as
22385 //
22386 iD.actions.Split = function(nodeId, newWayIds) {
22387     var wayIds;
22388
22389     // if the way is closed, we need to search for a partner node
22390     // to split the way at.
22391     //
22392     // The following looks for a node that is both far away from
22393     // the initial node in terms of way segment length and nearby
22394     // in terms of beeline-distance. This assures that areas get
22395     // split on the most "natural" points (independent of the number
22396     // of nodes).
22397     // For example: bone-shaped areas get split across their waist
22398     // line, circles across the diameter.
22399     function splitArea(nodes, idxA, graph) {
22400         var lengths = new Array(nodes.length),
22401             length,
22402             i,
22403             best = 0,
22404             idxB;
22405
22406         function wrap(index) {
22407             return iD.util.wrap(index, nodes.length);
22408         }
22409
22410         function dist(nA, nB) {
22411             return iD.geo.sphericalDistance(graph.entity(nA).loc, graph.entity(nB).loc);
22412         }
22413
22414         // calculate lengths
22415         length = 0;
22416         for (i = wrap(idxA+1); i !== idxA; i = wrap(i+1)) {
22417             length += dist(nodes[i], nodes[wrap(i-1)]);
22418             lengths[i] = length;
22419         }
22420
22421         length = 0;
22422         for (i = wrap(idxA-1); i !== idxA; i = wrap(i-1)) {
22423             length += dist(nodes[i], nodes[wrap(i+1)]);
22424             if (length < lengths[i])
22425                 lengths[i] = length;
22426         }
22427
22428         // determine best opposite node to split
22429         for (i = 0; i < nodes.length; i++) {
22430             var cost = lengths[i] / dist(nodes[idxA], nodes[i]);
22431             if (cost > best) {
22432                 idxB = i;
22433                 best = cost;
22434             }
22435         }
22436
22437         return idxB;
22438     }
22439
22440     function split(graph, wayA, newWayId) {
22441         var wayB = iD.Way({id: newWayId, tags: wayA.tags}),
22442             nodesA,
22443             nodesB,
22444             isArea = wayA.isArea(),
22445             isOuter = iD.geo.isSimpleMultipolygonOuterMember(wayA, graph);
22446
22447         if (wayA.isClosed()) {
22448             var nodes = wayA.nodes.slice(0, -1),
22449                 idxA = _.indexOf(nodes, nodeId),
22450                 idxB = splitArea(nodes, idxA, graph);
22451
22452             if (idxB < idxA) {
22453                 nodesA = nodes.slice(idxA).concat(nodes.slice(0, idxB + 1));
22454                 nodesB = nodes.slice(idxB, idxA + 1);
22455             } else {
22456                 nodesA = nodes.slice(idxA, idxB + 1);
22457                 nodesB = nodes.slice(idxB).concat(nodes.slice(0, idxA + 1));
22458             }
22459         } else {
22460             var idx = _.indexOf(wayA.nodes, nodeId, 1);
22461             nodesA = wayA.nodes.slice(0, idx + 1);
22462             nodesB = wayA.nodes.slice(idx);
22463         }
22464
22465         wayA = wayA.update({nodes: nodesA});
22466         wayB = wayB.update({nodes: nodesB});
22467
22468         graph = graph.replace(wayA);
22469         graph = graph.replace(wayB);
22470
22471         graph.parentRelations(wayA).forEach(function(relation) {
22472             if (relation.isRestriction()) {
22473                 var via = relation.memberByRole('via');
22474                 if (via && wayB.contains(via.id)) {
22475                     relation = relation.updateMember({id: wayB.id}, relation.memberById(wayA.id).index);
22476                     graph = graph.replace(relation);
22477                 }
22478             } else {
22479                 if (relation === isOuter) {
22480                     graph = graph.replace(relation.mergeTags(wayA.tags));
22481                     graph = graph.replace(wayA.update({tags: {}}));
22482                     graph = graph.replace(wayB.update({tags: {}}));
22483                 }
22484
22485                 var member = {
22486                     id: wayB.id,
22487                     type: 'way',
22488                     role: relation.memberById(wayA.id).role
22489                 };
22490
22491                 graph = iD.actions.AddMember(relation.id, member)(graph);
22492             }
22493         });
22494
22495         if (!isOuter && isArea) {
22496             var multipolygon = iD.Relation({
22497                 tags: _.extend({}, wayA.tags, {type: 'multipolygon'}),
22498                 members: [
22499                     {id: wayA.id, role: 'outer', type: 'way'},
22500                     {id: wayB.id, role: 'outer', type: 'way'}
22501                 ]});
22502
22503             graph = graph.replace(multipolygon);
22504             graph = graph.replace(wayA.update({tags: {}}));
22505             graph = graph.replace(wayB.update({tags: {}}));
22506         }
22507
22508         return graph;
22509     }
22510
22511     var action = function(graph) {
22512         var candidates = action.ways(graph);
22513         for (var i = 0; i < candidates.length; i++) {
22514             graph = split(graph, candidates[i], newWayIds && newWayIds[i]);
22515         }
22516         return graph;
22517     };
22518
22519     action.ways = function(graph) {
22520         var node = graph.entity(nodeId),
22521             parents = graph.parentWays(node),
22522             hasLines = _.any(parents, function(parent) { return parent.geometry(graph) === 'line'; });
22523
22524         return parents.filter(function(parent) {
22525             if (wayIds && wayIds.indexOf(parent.id) === -1)
22526                 return false;
22527
22528             if (!wayIds && hasLines && parent.geometry(graph) !== 'line')
22529                 return false;
22530
22531             if (parent.isClosed()) {
22532                 return true;
22533             }
22534
22535             for (var i = 1; i < parent.nodes.length - 1; i++) {
22536                 if (parent.nodes[i] === nodeId) {
22537                     return true;
22538                 }
22539             }
22540
22541             return false;
22542         });
22543     };
22544
22545     action.disabled = function(graph) {
22546         var candidates = action.ways(graph);
22547         if (candidates.length === 0 || (wayIds && wayIds.length !== candidates.length))
22548             return 'not_eligible';
22549     };
22550
22551     action.limitWays = function(_) {
22552         if (!arguments.length) return wayIds;
22553         wayIds = _;
22554         return action;
22555     };
22556
22557     return action;
22558 };
22559 /*
22560  * Based on https://github.com/openstreetmap/potlatch2/net/systemeD/potlatch2/tools/Straighten.as
22561  */
22562
22563 iD.actions.Straighten = function(wayId, projection) {
22564     function positionAlongWay(n, s, e) {
22565         return ((n[0] - s[0]) * (e[0] - s[0]) + (n[1] - s[1]) * (e[1] - s[1]))/
22566                 (Math.pow(e[0] - s[0], 2) + Math.pow(e[1] - s[1], 2));
22567     }
22568
22569     var action = function(graph) {
22570         var way = graph.entity(wayId),
22571             nodes = graph.childNodes(way),
22572             points = nodes.map(function(n) { return projection(n.loc); }),
22573             startPoint = points[0],
22574             endPoint = points[points.length-1],
22575             toDelete = [],
22576             i;
22577
22578         for (i = 1; i < points.length-1; i++) {
22579             var node = nodes[i],
22580                 point = points[i];
22581
22582             if (graph.parentWays(node).length > 1 ||
22583                 graph.parentRelations(node).length ||
22584                 node.hasInterestingTags()) {
22585
22586                 var u = positionAlongWay(point, startPoint, endPoint),
22587                     p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22588                     p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]);
22589
22590                 graph = graph.replace(graph.entity(node.id)
22591                     .move(projection.invert([p0, p1])));
22592             } else {
22593                 // safe to delete
22594                 if (toDelete.indexOf(node) === -1) {
22595                     toDelete.push(node);
22596                 }
22597             }
22598         }
22599
22600         for (i = 0; i < toDelete.length; i++) {
22601             graph = iD.actions.DeleteNode(toDelete[i].id)(graph);
22602         }
22603
22604         return graph;
22605     };
22606     
22607     action.disabled = function(graph) {
22608         // check way isn't too bendy
22609         var way = graph.entity(wayId),
22610             nodes = graph.childNodes(way),
22611             points = nodes.map(function(n) { return projection(n.loc); }),
22612             startPoint = points[0],
22613             endPoint = points[points.length-1],
22614             threshold = 0.2 * Math.sqrt(Math.pow(startPoint[0] - endPoint[0], 2) + Math.pow(startPoint[1] - endPoint[1], 2)),
22615             i;
22616
22617         for (i = 1; i < points.length-1; i++) {
22618             var point = points[i],
22619                 u = positionAlongWay(point, startPoint, endPoint),
22620                 p0 = startPoint[0] + u * (endPoint[0] - startPoint[0]),
22621                 p1 = startPoint[1] + u * (endPoint[1] - startPoint[1]),
22622                 dist = Math.sqrt(Math.pow(p0 - point[0], 2) + Math.pow(p1 - point[1], 2));
22623
22624             // to bendy if point is off by 20% of total start/end distance in projected space
22625             if (dist > threshold) {
22626                 return 'too_bendy';
22627             }
22628         }
22629     };
22630
22631     return action;
22632 };
22633 // Remove the effects of `turn.restriction` on `turn`, which must have the
22634 // following structure:
22635 //
22636 //     {
22637 //         from: { node: <node ID>, way: <way ID> },
22638 //         via:  { node: <node ID> },
22639 //         to:   { node: <node ID>, way: <way ID> },
22640 //         restriction: <relation ID>
22641 //     }
22642 //
22643 // In the simple case, `restriction` is a reference to a `no_*` restriction
22644 // on the turn itself. In this case, it is simply deleted.
22645 //
22646 // The more complex case is where `restriction` references an `only_*`
22647 // restriction on a different turn in the same intersection. In that case,
22648 // that restriction is also deleted, but at the same time restrictions on
22649 // the turns other than the first two are created.
22650 //
22651 iD.actions.UnrestrictTurn = function(turn) {
22652     return function(graph) {
22653         return iD.actions.DeleteRelation(turn.restriction)(graph);
22654     };
22655 };
22656 iD.behavior = {};
22657 iD.behavior.AddWay = function(context) {
22658     var event = d3.dispatch('start', 'startFromWay', 'startFromNode'),
22659         draw = iD.behavior.Draw(context);
22660
22661     var addWay = function(surface) {
22662         draw.on('click', event.start)
22663             .on('clickWay', event.startFromWay)
22664             .on('clickNode', event.startFromNode)
22665             .on('cancel', addWay.cancel)
22666             .on('finish', addWay.cancel);
22667
22668         context.map()
22669             .dblclickEnable(false);
22670
22671         surface.call(draw);
22672     };
22673
22674     addWay.off = function(surface) {
22675         surface.call(draw.off);
22676     };
22677
22678     addWay.cancel = function() {
22679         window.setTimeout(function() {
22680             context.map().dblclickEnable(true);
22681         }, 1000);
22682
22683         context.enter(iD.modes.Browse(context));
22684     };
22685
22686     addWay.tail = function(text) {
22687         draw.tail(text);
22688         return addWay;
22689     };
22690
22691     return d3.rebind(addWay, event, 'on');
22692 };
22693 iD.behavior.Copy = function(context) {
22694     var keybinding = d3.keybinding('copy');
22695
22696     function groupEntities(ids, graph) {
22697         var entities = ids.map(function (id) { return graph.entity(id); });
22698         return _.extend({relation: [], way: [], node: []},
22699             _.groupBy(entities, function(entity) { return entity.type; }));
22700     }
22701
22702     function getDescendants(id, graph, descendants) {
22703         var entity = graph.entity(id),
22704             i, children;
22705
22706         descendants = descendants || {};
22707
22708         if (entity.type === 'relation') {
22709             children = _.pluck(entity.members, 'id');
22710         } else if (entity.type === 'way') {
22711             children = entity.nodes;
22712         } else {
22713             children = [];
22714         }
22715
22716         for (i = 0; i < children.length; i++) {
22717             if (!descendants[children[i]]) {
22718                 descendants[children[i]] = true;
22719                 descendants = getDescendants(children[i], graph, descendants);
22720             }
22721         }
22722
22723         return descendants;
22724     }
22725
22726     function doCopy() {
22727         d3.event.preventDefault();
22728
22729         var graph = context.graph(),
22730             selected = groupEntities(context.selectedIDs(), graph),
22731             canCopy = [],
22732             skip = {},
22733             i, entity;
22734
22735         for (i = 0; i < selected.relation.length; i++) {
22736             entity = selected.relation[i];
22737             if (!skip[entity.id] && entity.isComplete(graph)) {
22738                 canCopy.push(entity.id);
22739                 skip = getDescendants(entity.id, graph, skip);
22740             }
22741         }
22742         for (i = 0; i < selected.way.length; i++) {
22743             entity = selected.way[i];
22744             if (!skip[entity.id]) {
22745                 canCopy.push(entity.id);
22746                 skip = getDescendants(entity.id, graph, skip);
22747             }
22748         }
22749         for (i = 0; i < selected.node.length; i++) {
22750             entity = selected.node[i];
22751             if (!skip[entity.id]) {
22752                 canCopy.push(entity.id);
22753             }
22754         }
22755
22756         context.copyIDs(canCopy);
22757     }
22758
22759     function copy() {
22760         keybinding.on(iD.ui.cmd('⌘C'), doCopy);
22761         d3.select(document).call(keybinding);
22762         return copy;
22763     }
22764
22765     copy.off = function() {
22766         d3.select(document).call(keybinding.off);
22767     };
22768
22769     return copy;
22770 };
22771 /*
22772     `iD.behavior.drag` is like `d3.behavior.drag`, with the following differences:
22773
22774     * The `origin` function is expected to return an [x, y] tuple rather than an
22775       {x, y} object.
22776     * The events are `start`, `move`, and `end`.
22777       (https://github.com/mbostock/d3/issues/563)
22778     * The `start` event is not dispatched until the first cursor movement occurs.
22779       (https://github.com/mbostock/d3/pull/368)
22780     * The `move` event has a `point` and `delta` [x, y] tuple properties rather
22781       than `x`, `y`, `dx`, and `dy` properties.
22782     * The `end` event is not dispatched if no movement occurs.
22783     * An `off` function is available that unbinds the drag's internal event handlers.
22784     * Delegation is supported via the `delegate` function.
22785
22786  */
22787 iD.behavior.drag = function() {
22788     function d3_eventCancel() {
22789       d3.event.stopPropagation();
22790       d3.event.preventDefault();
22791     }
22792
22793     var event = d3.dispatch('start', 'move', 'end'),
22794         origin = null,
22795         selector = '',
22796         filter = null,
22797         event_, target, surface;
22798
22799     event.of = function(thiz, argumentz) {
22800       return function(e1) {
22801         var e0 = e1.sourceEvent = d3.event;
22802         e1.target = drag;
22803         d3.event = e1;
22804         try {
22805           event[e1.type].apply(thiz, argumentz);
22806         } finally {
22807           d3.event = e0;
22808         }
22809       };
22810     };
22811
22812     var d3_event_userSelectProperty = iD.util.prefixCSSProperty('UserSelect'),
22813         d3_event_userSelectSuppress = d3_event_userSelectProperty ?
22814             function () {
22815                 var selection = d3.selection(),
22816                     select = selection.style(d3_event_userSelectProperty);
22817                 selection.style(d3_event_userSelectProperty, 'none');
22818                 return function () {
22819                     selection.style(d3_event_userSelectProperty, select);
22820                 };
22821             } :
22822             function (type) {
22823                 var w = d3.select(window).on('selectstart.' + type, d3_eventCancel);
22824                 return function () {
22825                     w.on('selectstart.' + type, null);
22826                 };
22827             };
22828
22829     function mousedown() {
22830         target = this;
22831         event_ = event.of(target, arguments);
22832         var eventTarget = d3.event.target,
22833             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
22834             offset,
22835             origin_ = point(),
22836             started = false,
22837             selectEnable = d3_event_userSelectSuppress(touchId !== null ? 'drag-' + touchId : 'drag');
22838
22839         var w = d3.select(window)
22840             .on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', dragmove)
22841             .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', dragend, true);
22842
22843         if (origin) {
22844             offset = origin.apply(target, arguments);
22845             offset = [offset[0] - origin_[0], offset[1] - origin_[1]];
22846         } else {
22847             offset = [0, 0];
22848         }
22849
22850         if (touchId === null) d3.event.stopPropagation();
22851
22852         function point() {
22853             var p = target.parentNode || surface;
22854             return touchId !== null ? d3.touches(p).filter(function(p) {
22855                 return p.identifier === touchId;
22856             })[0] : d3.mouse(p);
22857         }
22858
22859         function dragmove() {
22860
22861             var p = point(),
22862                 dx = p[0] - origin_[0],
22863                 dy = p[1] - origin_[1];
22864             
22865             if (dx === 0 && dy === 0)
22866                 return;
22867
22868             if (!started) {
22869                 started = true;
22870                 event_({
22871                     type: 'start'
22872                 });
22873             }
22874
22875             origin_ = p;
22876             d3_eventCancel();
22877
22878             event_({
22879                 type: 'move',
22880                 point: [p[0] + offset[0],  p[1] + offset[1]],
22881                 delta: [dx, dy]
22882             });
22883         }
22884
22885         function dragend() {
22886             if (started) {
22887                 event_({
22888                     type: 'end'
22889                 });
22890
22891                 d3_eventCancel();
22892                 if (d3.event.target === eventTarget) w.on('click.drag', click, true);
22893             }
22894
22895             w.on(touchId !== null ? 'touchmove.drag-' + touchId : 'mousemove.drag', null)
22896                 .on(touchId !== null ? 'touchend.drag-' + touchId : 'mouseup.drag', null);
22897             selectEnable();
22898         }
22899
22900         function click() {
22901             d3_eventCancel();
22902             w.on('click.drag', null);
22903         }
22904     }
22905
22906     function drag(selection) {
22907         var matchesSelector = iD.util.prefixDOMProperty('matchesSelector'),
22908             delegate = mousedown;
22909
22910         if (selector) {
22911             delegate = function() {
22912                 var root = this,
22913                     target = d3.event.target;
22914                 for (; target && target !== root; target = target.parentNode) {
22915                     if (target[matchesSelector](selector) &&
22916                             (!filter || filter(target.__data__))) {
22917                         return mousedown.call(target, target.__data__);
22918                     }
22919                 }
22920             };
22921         }
22922
22923         selection.on('mousedown.drag' + selector, delegate)
22924             .on('touchstart.drag' + selector, delegate);
22925     }
22926
22927     drag.off = function(selection) {
22928         selection.on('mousedown.drag' + selector, null)
22929             .on('touchstart.drag' + selector, null);
22930     };
22931
22932     drag.delegate = function(_) {
22933         if (!arguments.length) return selector;
22934         selector = _;
22935         return drag;
22936     };
22937
22938     drag.filter = function(_) {
22939         if (!arguments.length) return origin;
22940         filter = _;
22941         return drag;
22942     };
22943
22944     drag.origin = function (_) {
22945         if (!arguments.length) return origin;
22946         origin = _;
22947         return drag;
22948     };
22949
22950     drag.cancel = function() {
22951         d3.select(window)
22952             .on('mousemove.drag', null)
22953             .on('mouseup.drag', null);
22954         return drag;
22955     };
22956
22957     drag.target = function() {
22958         if (!arguments.length) return target;
22959         target = arguments[0];
22960         event_ = event.of(target, Array.prototype.slice.call(arguments, 1));
22961         return drag;
22962     };
22963
22964     drag.surface = function() {
22965         if (!arguments.length) return surface;
22966         surface = arguments[0];
22967         return drag;
22968     };
22969
22970     return d3.rebind(drag, event, 'on');
22971 };
22972 iD.behavior.Draw = function(context) {
22973     var event = d3.dispatch('move', 'click', 'clickWay',
22974         'clickNode', 'undo', 'cancel', 'finish'),
22975         keybinding = d3.keybinding('draw'),
22976         hover = iD.behavior.Hover(context)
22977             .altDisables(true)
22978             .on('hover', context.ui().sidebar.hover),
22979         tail = iD.behavior.Tail(),
22980         edit = iD.behavior.Edit(context),
22981         closeTolerance = 4,
22982         tolerance = 12;
22983
22984     function datum() {
22985         if (d3.event.altKey) return {};
22986         else return d3.event.target.__data__ || {};
22987     }
22988
22989     function mousedown() {
22990
22991         function point() {
22992             var p = element.node().parentNode;
22993             return touchId !== null ? d3.touches(p).filter(function(p) {
22994                 return p.identifier === touchId;
22995             })[0] : d3.mouse(p);
22996         }
22997
22998         var element = d3.select(this),
22999             touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null,
23000             time = +new Date(),
23001             pos = point();
23002
23003         element.on('mousemove.draw', null);
23004
23005         d3.select(window).on('mouseup.draw', function() {
23006             element.on('mousemove.draw', mousemove);
23007             if (iD.geo.euclideanDistance(pos, point()) < closeTolerance ||
23008                 (iD.geo.euclideanDistance(pos, point()) < tolerance &&
23009                 (+new Date() - time) < 500)) {
23010
23011                 // Prevent a quick second click
23012                 d3.select(window).on('click.draw-block', function() {
23013                     d3.event.stopPropagation();
23014                 }, true);
23015
23016                 context.map().dblclickEnable(false);
23017
23018                 window.setTimeout(function() {
23019                     context.map().dblclickEnable(true);
23020                     d3.select(window).on('click.draw-block', null);
23021                 }, 500);
23022
23023                 click();
23024             }
23025         });
23026     }
23027
23028     function mousemove() {
23029         event.move(datum());
23030     }
23031
23032     function click() {
23033         var d = datum();
23034         if (d.type === 'way') {
23035             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection),
23036                 edge = [d.nodes[choice.index - 1], d.nodes[choice.index]];
23037             event.clickWay(choice.loc, edge);
23038
23039         } else if (d.type === 'node') {
23040             event.clickNode(d);
23041
23042         } else {
23043             event.click(context.map().mouseCoordinates());
23044         }
23045     }
23046
23047     function backspace() {
23048         d3.event.preventDefault();
23049         event.undo();
23050     }
23051
23052     function del() {
23053         d3.event.preventDefault();
23054         event.cancel();
23055     }
23056
23057     function ret() {
23058         d3.event.preventDefault();
23059         event.finish();
23060     }
23061
23062     function draw(selection) {
23063         context.install(hover);
23064         context.install(edit);
23065
23066         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23067             context.install(tail);
23068         }
23069
23070         keybinding
23071             .on('⌫', backspace)
23072             .on('⌦', del)
23073             .on('⎋', ret)
23074             .on('↩', ret);
23075
23076         selection
23077             .on('mousedown.draw', mousedown)
23078             .on('mousemove.draw', mousemove);
23079
23080         d3.select(document)
23081             .call(keybinding);
23082
23083         return draw;
23084     }
23085
23086     draw.off = function(selection) {
23087         context.uninstall(hover);
23088         context.uninstall(edit);
23089
23090         if (!context.inIntro() && !iD.behavior.Draw.usedTails[tail.text()]) {
23091             context.uninstall(tail);
23092             iD.behavior.Draw.usedTails[tail.text()] = true;
23093         }
23094
23095         selection
23096             .on('mousedown.draw', null)
23097             .on('mousemove.draw', null);
23098
23099         d3.select(window)
23100             .on('mouseup.draw', null);
23101
23102         d3.select(document)
23103             .call(keybinding.off);
23104     };
23105
23106     draw.tail = function(_) {
23107         tail.text(_);
23108         return draw;
23109     };
23110
23111     return d3.rebind(draw, event, 'on');
23112 };
23113
23114 iD.behavior.Draw.usedTails = {};
23115 iD.behavior.DrawWay = function(context, wayId, index, mode, baseGraph) {
23116     var way = context.entity(wayId),
23117         isArea = context.geometry(wayId) === 'area',
23118         finished = false,
23119         annotation = t((way.isDegenerate() ?
23120             'operations.start.annotation.' :
23121             'operations.continue.annotation.') + context.geometry(wayId)),
23122         draw = iD.behavior.Draw(context);
23123
23124     var startIndex = typeof index === 'undefined' ? way.nodes.length - 1 : 0,
23125         start = iD.Node({loc: context.graph().entity(way.nodes[startIndex]).loc}),
23126         end = iD.Node({loc: context.map().mouseCoordinates()}),
23127         segment = iD.Way({
23128             nodes: typeof index === 'undefined' ? [start.id, end.id] : [end.id, start.id],
23129             tags: _.clone(way.tags)
23130         });
23131
23132     var f = context[way.isDegenerate() ? 'replace' : 'perform'];
23133     if (isArea) {
23134         f(iD.actions.AddEntity(end),
23135             iD.actions.AddVertex(wayId, end.id, index));
23136     } else {
23137         f(iD.actions.AddEntity(start),
23138             iD.actions.AddEntity(end),
23139             iD.actions.AddEntity(segment));
23140     }
23141
23142     function move(datum) {
23143         var loc;
23144
23145         if (datum.type === 'node' && datum.id !== end.id) {
23146             loc = datum.loc;
23147         } else if (datum.type === 'way' && datum.id !== segment.id) {
23148             loc = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection).loc;
23149         } else {
23150             loc = context.map().mouseCoordinates();
23151         }
23152
23153         context.replace(iD.actions.MoveNode(end.id, loc));
23154     }
23155
23156     function undone() {
23157         finished = true;
23158         context.enter(iD.modes.Browse(context));
23159     }
23160
23161     function setActiveElements() {
23162         var active = isArea ? [wayId, end.id] : [segment.id, start.id, end.id];
23163         context.surface().selectAll(iD.util.entitySelector(active))
23164             .classed('active', true);
23165     }
23166
23167     var drawWay = function(surface) {
23168         draw.on('move', move)
23169             .on('click', drawWay.add)
23170             .on('clickWay', drawWay.addWay)
23171             .on('clickNode', drawWay.addNode)
23172             .on('undo', context.undo)
23173             .on('cancel', drawWay.cancel)
23174             .on('finish', drawWay.finish);
23175
23176         context.map()
23177             .dblclickEnable(false)
23178             .on('drawn.draw', setActiveElements);
23179
23180         setActiveElements();
23181
23182         surface.call(draw);
23183
23184         context.history()
23185             .on('undone.draw', undone);
23186     };
23187
23188     drawWay.off = function(surface) {
23189         if (!finished)
23190             context.pop();
23191
23192         context.map()
23193             .on('drawn.draw', null);
23194
23195         surface.call(draw.off)
23196             .selectAll('.active')
23197             .classed('active', false);
23198
23199         context.history()
23200             .on('undone.draw', null);
23201     };
23202
23203     function ReplaceTemporaryNode(newNode) {
23204         return function(graph) {
23205             if (isArea) {
23206                 return graph
23207                     .replace(way.addNode(newNode.id, index))
23208                     .remove(end);
23209
23210             } else {
23211                 return graph
23212                     .replace(graph.entity(wayId).addNode(newNode.id, index))
23213                     .remove(end)
23214                     .remove(segment)
23215                     .remove(start);
23216             }
23217         };
23218     }
23219
23220     // Accept the current position of the temporary node and continue drawing.
23221     drawWay.add = function(loc) {
23222
23223         // prevent duplicate nodes
23224         var last = context.hasEntity(way.nodes[way.nodes.length - (isArea ? 2 : 1)]);
23225         if (last && last.loc[0] === loc[0] && last.loc[1] === loc[1]) return;
23226
23227         var newNode = iD.Node({loc: loc});
23228
23229         context.replace(
23230             iD.actions.AddEntity(newNode),
23231             ReplaceTemporaryNode(newNode),
23232             annotation);
23233
23234         finished = true;
23235         context.enter(mode);
23236     };
23237
23238     // Connect the way to an existing way.
23239     drawWay.addWay = function(loc, edge) {
23240         var previousEdge = startIndex ?
23241             [way.nodes[startIndex], way.nodes[startIndex - 1]] :
23242             [way.nodes[0], way.nodes[1]];
23243
23244         // Avoid creating duplicate segments
23245         if (!isArea && iD.geo.edgeEqual(edge, previousEdge))
23246             return;
23247
23248         var newNode = iD.Node({ loc: loc });
23249
23250         context.perform(
23251             iD.actions.AddMidpoint({ loc: loc, edge: edge}, newNode),
23252             ReplaceTemporaryNode(newNode),
23253             annotation);
23254
23255         finished = true;
23256         context.enter(mode);
23257     };
23258
23259     // Connect the way to an existing node and continue drawing.
23260     drawWay.addNode = function(node) {
23261
23262         // Avoid creating duplicate segments
23263         if (way.areAdjacent(node.id, way.nodes[way.nodes.length - 1])) return;
23264
23265         context.perform(
23266             ReplaceTemporaryNode(node),
23267             annotation);
23268
23269         finished = true;
23270         context.enter(mode);
23271     };
23272
23273     // Finish the draw operation, removing the temporary node. If the way has enough
23274     // nodes to be valid, it's selected. Otherwise, return to browse mode.
23275     drawWay.finish = function() {
23276         context.pop();
23277         finished = true;
23278
23279         window.setTimeout(function() {
23280             context.map().dblclickEnable(true);
23281         }, 1000);
23282
23283         if (context.hasEntity(wayId)) {
23284             context.enter(
23285                 iD.modes.Select(context, [wayId])
23286                     .suppressMenu(true)
23287                     .newFeature(true));
23288         } else {
23289             context.enter(iD.modes.Browse(context));
23290         }
23291     };
23292
23293     // Cancel the draw operation and return to browse, deleting everything drawn.
23294     drawWay.cancel = function() {
23295         context.perform(
23296             d3.functor(baseGraph),
23297             t('operations.cancel_draw.annotation'));
23298
23299         window.setTimeout(function() {
23300             context.map().dblclickEnable(true);
23301         }, 1000);
23302
23303         finished = true;
23304         context.enter(iD.modes.Browse(context));
23305     };
23306
23307     drawWay.tail = function(text) {
23308         draw.tail(text);
23309         return drawWay;
23310     };
23311
23312     return drawWay;
23313 };
23314 iD.behavior.Edit = function(context) {
23315     function edit() {
23316         context.map()
23317             .minzoom(context.minEditableZoom());
23318     }
23319
23320     edit.off = function() {
23321         context.map()
23322             .minzoom(0);
23323     };
23324
23325     return edit;
23326 };
23327 iD.behavior.Hash = function(context) {
23328     var s0 = null, // cached location.hash
23329         lat = 90 - 1e-8; // allowable latitude range
23330
23331     var parser = function(map, s) {
23332         var q = iD.util.stringQs(s);
23333         var args = (q.map || '').split('/').map(Number);
23334         if (args.length < 3 || args.some(isNaN)) {
23335             return true; // replace bogus hash
23336         } else if (s !== formatter(map).slice(1)) {
23337             map.centerZoom([args[1],
23338                 Math.min(lat, Math.max(-lat, args[2]))], args[0]);
23339         }
23340     };
23341
23342     var formatter = function(map) {
23343         var mode = context.mode(),
23344             center = map.center(),
23345             zoom = map.zoom(),
23346             precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2)),
23347             q = _.omit(iD.util.stringQs(location.hash.substring(1)), 'comment'),
23348             newParams = {};
23349
23350         if (mode && mode.id === 'browse') {
23351             delete q.id;
23352         } else {
23353             var selected = context.selectedIDs().filter(function(id) {
23354                 return !context.entity(id).isNew();
23355             });
23356             if (selected.length) {
23357                 newParams.id = selected.join(',');
23358             }
23359         }
23360
23361         newParams.map = zoom.toFixed(2) +
23362                 '/' + center[0].toFixed(precision) +
23363                 '/' + center[1].toFixed(precision);
23364
23365         return '#' + iD.util.qsString(_.assign(q, newParams), true);
23366     };
23367
23368     function update() {
23369         var s1 = formatter(context.map());
23370         if (s0 !== s1) location.replace(s0 = s1); // don't recenter the map!
23371     }
23372
23373     var throttledUpdate = _.throttle(update, 500);
23374
23375     function hashchange() {
23376         if (location.hash === s0) return; // ignore spurious hashchange events
23377         if (parser(context.map(), (s0 = location.hash).substring(1))) {
23378             update(); // replace bogus hash
23379         }
23380     }
23381
23382     function hash() {
23383         context.map()
23384             .on('move.hash', throttledUpdate);
23385
23386         context
23387             .on('enter.hash', throttledUpdate);
23388
23389         d3.select(window)
23390             .on('hashchange.hash', hashchange);
23391
23392         if (location.hash) {
23393             var q = iD.util.stringQs(location.hash.substring(1));
23394             if (q.id) context.zoomToEntity(q.id.split(',')[0], !q.map);
23395             if (q.comment) context.storage('comment', q.comment);
23396             hashchange();
23397             if (q.map) hash.hadHash = true;
23398         }
23399     }
23400
23401     hash.off = function() {
23402         context.map()
23403             .on('move.hash', null);
23404
23405         context
23406             .on('enter.hash', null);
23407
23408         d3.select(window)
23409             .on('hashchange.hash', null);
23410
23411         location.hash = '';
23412     };
23413
23414     return hash;
23415 };
23416 /*
23417    The hover behavior adds the `.hover` class on mouseover to all elements to which
23418    the identical datum is bound, and removes it on mouseout.
23419
23420    The :hover pseudo-class is insufficient for iD's purposes because a datum's visual
23421    representation may consist of several elements scattered throughout the DOM hierarchy.
23422    Only one of these elements can have the :hover pseudo-class, but all of them will
23423    have the .hover class.
23424  */
23425 iD.behavior.Hover = function() {
23426     var dispatch = d3.dispatch('hover'),
23427         selection,
23428         altDisables,
23429         target;
23430
23431     function keydown() {
23432         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23433             dispatch.hover(null);
23434             selection.selectAll('.hover')
23435                 .classed('hover-suppressed', true)
23436                 .classed('hover', false);
23437         }
23438     }
23439
23440     function keyup() {
23441         if (altDisables && d3.event.keyCode === d3.keybinding.modifierCodes.alt) {
23442             dispatch.hover(target ? target.id : null);
23443             selection.selectAll('.hover-suppressed')
23444                 .classed('hover-suppressed', false)
23445                 .classed('hover', true);
23446         }
23447     }
23448
23449     var hover = function(__) {
23450         selection = __;
23451
23452         function enter(d) {
23453             if (d === target) return;
23454
23455             target = d;
23456
23457             selection.selectAll('.hover')
23458                 .classed('hover', false);
23459             selection.selectAll('.hover-suppressed')
23460                 .classed('hover-suppressed', false);
23461
23462             if (target instanceof iD.Entity) {
23463                 var selector = '.' + target.id;
23464
23465                 if (target.type === 'relation') {
23466                     target.members.forEach(function(member) {
23467                         selector += ', .' + member.id;
23468                     });
23469                 }
23470
23471                 var suppressed = altDisables && d3.event && d3.event.altKey;
23472
23473                 selection.selectAll(selector)
23474                     .classed(suppressed ? 'hover-suppressed' : 'hover', true);
23475
23476                 dispatch.hover(target.id);
23477             } else {
23478                 dispatch.hover(null);
23479             }
23480         }
23481
23482         var down;
23483
23484         function mouseover() {
23485             if (down) return;
23486             var target = d3.event.target;
23487             enter(target ? target.__data__ : null);
23488         }
23489
23490         function mouseout() {
23491             if (down) return;
23492             var target = d3.event.relatedTarget;
23493             enter(target ? target.__data__ : null);
23494         }
23495
23496         function mousedown() {
23497             down = true;
23498             d3.select(window)
23499                 .on('mouseup.hover', mouseup);
23500         }
23501
23502         function mouseup() {
23503             down = false;
23504         }
23505
23506         selection
23507             .on('mouseover.hover', mouseover)
23508             .on('mouseout.hover', mouseout)
23509             .on('mousedown.hover', mousedown)
23510             .on('mouseup.hover', mouseup);
23511
23512         d3.select(window)
23513             .on('keydown.hover', keydown)
23514             .on('keyup.hover', keyup);
23515     };
23516
23517     hover.off = function(selection) {
23518         selection.selectAll('.hover')
23519             .classed('hover', false);
23520         selection.selectAll('.hover-suppressed')
23521             .classed('hover-suppressed', false);
23522
23523         selection
23524             .on('mouseover.hover', null)
23525             .on('mouseout.hover', null)
23526             .on('mousedown.hover', null)
23527             .on('mouseup.hover', null);
23528
23529         d3.select(window)
23530             .on('keydown.hover', null)
23531             .on('keyup.hover', null)
23532             .on('mouseup.hover', null);
23533     };
23534
23535     hover.altDisables = function(_) {
23536         if (!arguments.length) return altDisables;
23537         altDisables = _;
23538         return hover;
23539     };
23540
23541     return d3.rebind(hover, dispatch, 'on');
23542 };
23543 iD.behavior.Lasso = function(context) {
23544
23545     var behavior = function(selection) {
23546
23547         var mouse = null,
23548             lasso;
23549
23550         function mousedown() {
23551             if (d3.event.shiftKey === true) {
23552
23553                 mouse = context.mouse();
23554                 lasso = null;
23555
23556                 selection
23557                     .on('mousemove.lasso', mousemove)
23558                     .on('mouseup.lasso', mouseup);
23559
23560                 d3.event.stopPropagation();
23561             }
23562         }
23563
23564         function mousemove() {
23565             if (!lasso) {
23566                 lasso = iD.ui.Lasso(context).a(mouse);
23567                 context.surface().call(lasso);
23568             }
23569
23570             lasso.b(context.mouse());
23571         }
23572
23573         function normalize(a, b) {
23574             return [
23575                 [Math.min(a[0], b[0]), Math.min(a[1], b[1])],
23576                 [Math.max(a[0], b[0]), Math.max(a[1], b[1])]];
23577         }
23578
23579         function mouseup() {
23580
23581             selection
23582                 .on('mousemove.lasso', null)
23583                 .on('mouseup.lasso', null);
23584
23585             if (!lasso) return;
23586
23587             var extent = iD.geo.Extent(
23588                 normalize(context.projection.invert(lasso.a()),
23589                 context.projection.invert(lasso.b())));
23590
23591             lasso.close();
23592
23593             var selected = context.intersects(extent).filter(function (entity) {
23594                 return entity.type === 'node';
23595             });
23596
23597             if (selected.length) {
23598                 context.enter(iD.modes.Select(context, _.pluck(selected, 'id')));
23599             }
23600         }
23601
23602         selection
23603             .on('mousedown.lasso', mousedown);
23604     };
23605
23606     behavior.off = function(selection) {
23607         selection.on('mousedown.lasso', null);
23608     };
23609
23610     return behavior;
23611 };
23612 iD.behavior.Paste = function(context) {
23613     var keybinding = d3.keybinding('paste');
23614
23615     function omitTag(v, k) {
23616         return (
23617             k === 'phone' ||
23618             k === 'fax' ||
23619             k === 'email' ||
23620             k === 'website' ||
23621             k === 'url' ||
23622             k === 'note' ||
23623             k === 'description' ||
23624             k.indexOf('name') !== -1 ||
23625             k.indexOf('wiki') === 0 ||
23626             k.indexOf('addr:') === 0 ||
23627             k.indexOf('contact:') === 0
23628         );
23629     }
23630
23631     function doPaste() {
23632         d3.event.preventDefault();
23633
23634         var mouse = context.mouse(),
23635             projection = context.projection,
23636             viewport = iD.geo.Extent(projection.clipExtent()).polygon();
23637
23638         if (!iD.geo.pointInPolygon(mouse, viewport)) return;
23639
23640         var extent = iD.geo.Extent(),
23641             oldIDs = context.copyIDs(),
23642             oldGraph = context.copyGraph(),
23643             newIDs = [],
23644             i, j;
23645
23646         if (!oldIDs.length) return;
23647
23648         for (i = 0; i < oldIDs.length; i++) {
23649             var oldEntity = oldGraph.entity(oldIDs[i]),
23650                 action = iD.actions.CopyEntity(oldEntity.id, oldGraph, true),
23651                 newEntities;
23652
23653             extent._extend(oldEntity.extent(oldGraph));
23654             context.perform(action);
23655
23656             // First element in `newEntities` contains the copied Entity,
23657             // Subsequent array elements contain any descendants..
23658             newEntities = action.newEntities();
23659             newIDs.push(newEntities[0].id);
23660
23661             for (j = 0; j < newEntities.length; j++) {
23662                 var newEntity = newEntities[j],
23663                     tags = _.omit(newEntity.tags, omitTag);
23664
23665                 context.perform(iD.actions.ChangeTags(newEntity.id, tags));
23666             }
23667         }
23668
23669         // Put pasted objects where mouse pointer is..
23670         var center = projection(extent.center()),
23671             delta = [ mouse[0] - center[0], mouse[1] - center[1] ];
23672
23673         context.perform(iD.actions.Move(newIDs, delta, projection));
23674         context.enter(iD.modes.Move(context, newIDs));
23675     }
23676
23677     function paste() {
23678         keybinding.on(iD.ui.cmd('⌘V'), doPaste);
23679         d3.select(document).call(keybinding);
23680         return paste;
23681     }
23682
23683     paste.off = function() {
23684         d3.select(document).call(keybinding.off);
23685     };
23686
23687     return paste;
23688 };
23689 iD.behavior.Select = function(context) {
23690     function keydown() {
23691         if (d3.event && d3.event.shiftKey) {
23692             context.surface()
23693                 .classed('behavior-multiselect', true);
23694         }
23695     }
23696
23697     function keyup() {
23698         if (!d3.event || !d3.event.shiftKey) {
23699             context.surface()
23700                 .classed('behavior-multiselect', false);
23701         }
23702     }
23703
23704     function click() {
23705         var datum = d3.event.target.__data__,
23706             lasso = d3.select('#surface .lasso').node(),
23707             mode = context.mode();
23708
23709         if (!(datum instanceof iD.Entity)) {
23710             if (!d3.event.shiftKey && !lasso && mode.id !== 'browse')
23711                 context.enter(iD.modes.Browse(context));
23712
23713         } else if (!d3.event.shiftKey && !lasso) {
23714             // Avoid re-entering Select mode with same entity.
23715             if (context.selectedIDs().length !== 1 || context.selectedIDs()[0] !== datum.id) {
23716                 context.enter(iD.modes.Select(context, [datum.id]));
23717             } else {
23718                 mode.suppressMenu(false).reselect();
23719             }
23720         } else if (context.selectedIDs().indexOf(datum.id) >= 0) {
23721             var selectedIDs = _.without(context.selectedIDs(), datum.id);
23722             context.enter(selectedIDs.length ?
23723                 iD.modes.Select(context, selectedIDs) :
23724                 iD.modes.Browse(context));
23725
23726         } else {
23727             context.enter(iD.modes.Select(context, context.selectedIDs().concat([datum.id])));
23728         }
23729     }
23730
23731     var behavior = function(selection) {
23732         d3.select(window)
23733             .on('keydown.select', keydown)
23734             .on('keyup.select', keyup);
23735
23736         selection.on('click.select', click);
23737
23738         keydown();
23739     };
23740
23741     behavior.off = function(selection) {
23742         d3.select(window)
23743             .on('keydown.select', null)
23744             .on('keyup.select', null);
23745
23746         selection.on('click.select', null);
23747
23748         keyup();
23749     };
23750
23751     return behavior;
23752 };
23753 iD.behavior.Tail = function() {
23754     var text,
23755         container,
23756         xmargin = 25,
23757         tooltipSize = [0, 0],
23758         selectionSize = [0, 0];
23759
23760     function tail(selection) {
23761         if (!text) return;
23762
23763         d3.select(window)
23764             .on('resize.tail', function() { selectionSize = selection.dimensions(); });
23765
23766         function show() {
23767             container.style('display', 'block');
23768             tooltipSize = container.dimensions();
23769         }
23770
23771         function mousemove() {
23772             if (container.style('display') === 'none') show();
23773             var xoffset = ((d3.event.clientX + tooltipSize[0] + xmargin) > selectionSize[0]) ?
23774                 -tooltipSize[0] - xmargin : xmargin;
23775             container.classed('left', xoffset > 0);
23776             iD.util.setTransform(container, d3.event.clientX + xoffset, d3.event.clientY);
23777         }
23778
23779         function mouseleave() {
23780             if (d3.event.relatedTarget !== container.node()) {
23781                 container.style('display', 'none');
23782             }
23783         }
23784
23785         function mouseenter() {
23786             if (d3.event.relatedTarget !== container.node()) {
23787                 show();
23788             }
23789         }
23790
23791         container = d3.select(document.body)
23792             .append('div')
23793             .style('display', 'none')
23794             .attr('class', 'tail tooltip-inner');
23795
23796         container.append('div')
23797             .text(text);
23798
23799         selection
23800             .on('mousemove.tail', mousemove)
23801             .on('mouseenter.tail', mouseenter)
23802             .on('mouseleave.tail', mouseleave);
23803
23804         container
23805             .on('mousemove.tail', mousemove);
23806
23807         tooltipSize = container.dimensions();
23808         selectionSize = selection.dimensions();
23809     }
23810
23811     tail.off = function(selection) {
23812         if (!text) return;
23813
23814         container
23815             .on('mousemove.tail', null)
23816             .remove();
23817
23818         selection
23819             .on('mousemove.tail', null)
23820             .on('mouseenter.tail', null)
23821             .on('mouseleave.tail', null);
23822
23823         d3.select(window)
23824             .on('resize.tail', null);
23825     };
23826
23827     tail.text = function(_) {
23828         if (!arguments.length) return text;
23829         text = _;
23830         return tail;
23831     };
23832
23833     return tail;
23834 };
23835 iD.modes = {};
23836 iD.modes.AddArea = function(context) {
23837     var mode = {
23838         id: 'add-area',
23839         button: 'area',
23840         title: t('modes.add_area.title'),
23841         description: t('modes.add_area.description'),
23842         key: '3'
23843     };
23844
23845     var behavior = iD.behavior.AddWay(context)
23846             .tail(t('modes.add_area.tail'))
23847             .on('start', start)
23848             .on('startFromWay', startFromWay)
23849             .on('startFromNode', startFromNode),
23850         defaultTags = {area: 'yes'};
23851
23852     function start(loc) {
23853         var graph = context.graph(),
23854             node = iD.Node({loc: loc}),
23855             way = iD.Way({tags: defaultTags});
23856
23857         context.perform(
23858             iD.actions.AddEntity(node),
23859             iD.actions.AddEntity(way),
23860             iD.actions.AddVertex(way.id, node.id),
23861             iD.actions.AddVertex(way.id, node.id));
23862
23863         context.enter(iD.modes.DrawArea(context, way.id, graph));
23864     }
23865
23866     function startFromWay(loc, edge) {
23867         var graph = context.graph(),
23868             node = iD.Node({loc: loc}),
23869             way = iD.Way({tags: defaultTags});
23870
23871         context.perform(
23872             iD.actions.AddEntity(node),
23873             iD.actions.AddEntity(way),
23874             iD.actions.AddVertex(way.id, node.id),
23875             iD.actions.AddVertex(way.id, node.id),
23876             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23877
23878         context.enter(iD.modes.DrawArea(context, way.id, graph));
23879     }
23880
23881     function startFromNode(node) {
23882         var graph = context.graph(),
23883             way = iD.Way({tags: defaultTags});
23884
23885         context.perform(
23886             iD.actions.AddEntity(way),
23887             iD.actions.AddVertex(way.id, node.id),
23888             iD.actions.AddVertex(way.id, node.id));
23889
23890         context.enter(iD.modes.DrawArea(context, way.id, graph));
23891     }
23892
23893     mode.enter = function() {
23894         context.install(behavior);
23895     };
23896
23897     mode.exit = function() {
23898         context.uninstall(behavior);
23899     };
23900
23901     return mode;
23902 };
23903 iD.modes.AddLine = function(context) {
23904     var mode = {
23905         id: 'add-line',
23906         button: 'line',
23907         title: t('modes.add_line.title'),
23908         description: t('modes.add_line.description'),
23909         key: '2'
23910     };
23911
23912     var behavior = iD.behavior.AddWay(context)
23913         .tail(t('modes.add_line.tail'))
23914         .on('start', start)
23915         .on('startFromWay', startFromWay)
23916         .on('startFromNode', startFromNode);
23917
23918     function start(loc) {
23919         var graph = context.graph(),
23920             node = iD.Node({loc: loc}),
23921             way = iD.Way();
23922
23923         context.perform(
23924             iD.actions.AddEntity(node),
23925             iD.actions.AddEntity(way),
23926             iD.actions.AddVertex(way.id, node.id));
23927
23928         context.enter(iD.modes.DrawLine(context, way.id, graph));
23929     }
23930
23931     function startFromWay(loc, edge) {
23932         var graph = context.graph(),
23933             node = iD.Node({loc: loc}),
23934             way = iD.Way();
23935
23936         context.perform(
23937             iD.actions.AddEntity(node),
23938             iD.actions.AddEntity(way),
23939             iD.actions.AddVertex(way.id, node.id),
23940             iD.actions.AddMidpoint({ loc: loc, edge: edge }, node));
23941
23942         context.enter(iD.modes.DrawLine(context, way.id, graph));
23943     }
23944
23945     function startFromNode(node) {
23946         var way = iD.Way();
23947
23948         context.perform(
23949             iD.actions.AddEntity(way),
23950             iD.actions.AddVertex(way.id, node.id));
23951
23952         context.enter(iD.modes.DrawLine(context, way.id, context.graph()));
23953     }
23954
23955     mode.enter = function() {
23956         context.install(behavior);
23957     };
23958
23959     mode.exit = function() {
23960         context.uninstall(behavior);
23961     };
23962
23963     return mode;
23964 };
23965 iD.modes.AddPoint = function(context) {
23966     var mode = {
23967         id: 'add-point',
23968         button: 'point',
23969         title: t('modes.add_point.title'),
23970         description: t('modes.add_point.description'),
23971         key: '1'
23972     };
23973
23974     var behavior = iD.behavior.Draw(context)
23975         .tail(t('modes.add_point.tail'))
23976         .on('click', add)
23977         .on('clickWay', addWay)
23978         .on('clickNode', addNode)
23979         .on('cancel', cancel)
23980         .on('finish', cancel);
23981
23982     function add(loc) {
23983         var node = iD.Node({loc: loc});
23984
23985         context.perform(
23986             iD.actions.AddEntity(node),
23987             t('operations.add.annotation.point'));
23988
23989         context.enter(
23990             iD.modes.Select(context, [node.id])
23991                 .suppressMenu(true)
23992                 .newFeature(true));
23993     }
23994
23995     function addWay(loc) {
23996         add(loc);
23997     }
23998
23999     function addNode(node) {
24000         add(node.loc);
24001     }
24002
24003     function cancel() {
24004         context.enter(iD.modes.Browse(context));
24005     }
24006
24007     mode.enter = function() {
24008         context.install(behavior);
24009     };
24010
24011     mode.exit = function() {
24012         context.uninstall(behavior);
24013     };
24014
24015     return mode;
24016 };
24017 iD.modes.Browse = function(context) {
24018     var mode = {
24019         button: 'browse',
24020         id: 'browse',
24021         title: t('modes.browse.title'),
24022         description: t('modes.browse.description')
24023     }, sidebar;
24024
24025     var behaviors = [
24026         iD.behavior.Paste(context),
24027         iD.behavior.Hover(context)
24028             .on('hover', context.ui().sidebar.hover),
24029         iD.behavior.Select(context),
24030         iD.behavior.Lasso(context),
24031         iD.modes.DragNode(context).behavior];
24032
24033     mode.enter = function() {
24034         behaviors.forEach(function(behavior) {
24035             context.install(behavior);
24036         });
24037
24038         // Get focus on the body.
24039         if (document.activeElement && document.activeElement.blur) {
24040             document.activeElement.blur();
24041         }
24042
24043         if (sidebar) {
24044             context.ui().sidebar.show(sidebar);
24045         } else {
24046             context.ui().sidebar.select(null);
24047         }
24048     };
24049
24050     mode.exit = function() {
24051         behaviors.forEach(function(behavior) {
24052             context.uninstall(behavior);
24053         });
24054
24055         if (sidebar) {
24056             context.ui().sidebar.hide();
24057         }
24058     };
24059
24060     mode.sidebar = function(_) {
24061         if (!arguments.length) return sidebar;
24062         sidebar = _;
24063         return mode;
24064     };
24065
24066     return mode;
24067 };
24068 iD.modes.DragNode = function(context) {
24069     var mode = {
24070         id: 'drag-node',
24071         button: 'browse'
24072     };
24073
24074     var nudgeInterval,
24075         activeIDs,
24076         wasMidpoint,
24077         cancelled,
24078         selectedIDs = [],
24079         hover = iD.behavior.Hover(context)
24080             .altDisables(true)
24081             .on('hover', context.ui().sidebar.hover),
24082         edit = iD.behavior.Edit(context);
24083
24084     function edge(point, size) {
24085         var pad = [30, 100, 30, 100];
24086         if (point[0] > size[0] - pad[0]) return [-10, 0];
24087         else if (point[0] < pad[2]) return [10, 0];
24088         else if (point[1] > size[1] - pad[1]) return [0, -10];
24089         else if (point[1] < pad[3]) return [0, 10];
24090         return null;
24091     }
24092
24093     function startNudge(nudge) {
24094         if (nudgeInterval) window.clearInterval(nudgeInterval);
24095         nudgeInterval = window.setInterval(function() {
24096             context.pan(nudge);
24097         }, 50);
24098     }
24099
24100     function stopNudge() {
24101         if (nudgeInterval) window.clearInterval(nudgeInterval);
24102         nudgeInterval = null;
24103     }
24104
24105     function moveAnnotation(entity) {
24106         return t('operations.move.annotation.' + entity.geometry(context.graph()));
24107     }
24108
24109     function connectAnnotation(entity) {
24110         return t('operations.connect.annotation.' + entity.geometry(context.graph()));
24111     }
24112
24113     function origin(entity) {
24114         return context.projection(entity.loc);
24115     }
24116
24117     function start(entity) {
24118         cancelled = d3.event.sourceEvent.shiftKey ||
24119             context.features().hasHiddenConnections(entity, context.graph());
24120
24121         if (cancelled) return behavior.cancel();
24122
24123         wasMidpoint = entity.type === 'midpoint';
24124         if (wasMidpoint) {
24125             var midpoint = entity;
24126             entity = iD.Node();
24127             context.perform(iD.actions.AddMidpoint(midpoint, entity));
24128
24129              var vertex = context.surface()
24130                 .selectAll('.' + entity.id);
24131              behavior.target(vertex.node(), entity);
24132
24133         } else {
24134             context.perform(
24135                 iD.actions.Noop());
24136         }
24137
24138         activeIDs = _.pluck(context.graph().parentWays(entity), 'id');
24139         activeIDs.push(entity.id);
24140
24141         context.enter(mode);
24142     }
24143
24144     function datum() {
24145         if (d3.event.sourceEvent.altKey) {
24146             return {};
24147         }
24148
24149         return d3.event.sourceEvent.target.__data__ || {};
24150     }
24151
24152     // via https://gist.github.com/shawnbot/4166283
24153     function childOf(p, c) {
24154         if (p === c) return false;
24155         while (c && c !== p) c = c.parentNode;
24156         return c === p;
24157     }
24158
24159     function move(entity) {
24160         if (cancelled) return;
24161         d3.event.sourceEvent.stopPropagation();
24162
24163         var nudge = childOf(context.container().node(),
24164             d3.event.sourceEvent.toElement) &&
24165             edge(d3.event.point, context.map().dimensions());
24166
24167         if (nudge) startNudge(nudge);
24168         else stopNudge();
24169
24170         var loc = context.map().mouseCoordinates();
24171
24172         var d = datum();
24173         if (d.type === 'node' && d.id !== entity.id) {
24174             loc = d.loc;
24175         } else if (d.type === 'way' && !d3.select(d3.event.sourceEvent.target).classed('fill')) {
24176             loc = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection).loc;
24177         }
24178
24179         context.replace(
24180             iD.actions.MoveNode(entity.id, loc),
24181             moveAnnotation(entity));
24182     }
24183
24184     function end(entity) {
24185         if (cancelled) return;
24186
24187         var d = datum();
24188
24189         if (d.type === 'way') {
24190             var choice = iD.geo.chooseEdge(context.childNodes(d), context.mouse(), context.projection);
24191             context.replace(
24192                 iD.actions.AddMidpoint({ loc: choice.loc, edge: [d.nodes[choice.index - 1], d.nodes[choice.index]] }, entity),
24193                 connectAnnotation(d));
24194
24195         } else if (d.type === 'node' && d.id !== entity.id) {
24196             context.replace(
24197                 iD.actions.Connect([d.id, entity.id]),
24198                 connectAnnotation(d));
24199
24200         } else if (wasMidpoint) {
24201             context.replace(
24202                 iD.actions.Noop(),
24203                 t('operations.add.annotation.vertex'));
24204
24205         } else {
24206             context.replace(
24207                 iD.actions.Noop(),
24208                 moveAnnotation(entity));
24209         }
24210
24211         var reselection = selectedIDs.filter(function(id) {
24212             return context.graph().hasEntity(id);
24213         });
24214
24215         if (reselection.length) {
24216             context.enter(
24217                 iD.modes.Select(context, reselection)
24218                     .suppressMenu(true));
24219         } else {
24220             context.enter(iD.modes.Browse(context));
24221         }
24222     }
24223
24224     function cancel() {
24225         behavior.cancel();
24226         context.enter(iD.modes.Browse(context));
24227     }
24228
24229     function setActiveElements() {
24230         context.surface().selectAll(iD.util.entitySelector(activeIDs))
24231             .classed('active', true);
24232     }
24233
24234     var behavior = iD.behavior.drag()
24235         .delegate('g.node, g.point, g.midpoint')
24236         .surface(context.surface().node())
24237         .origin(origin)
24238         .on('start', start)
24239         .on('move', move)
24240         .on('end', end);
24241
24242     mode.enter = function() {
24243         context.install(hover);
24244         context.install(edit);
24245
24246         context.history()
24247             .on('undone.drag-node', cancel);
24248
24249         context.map()
24250             .on('drawn.drag-node', setActiveElements);
24251
24252         setActiveElements();
24253     };
24254
24255     mode.exit = function() {
24256         context.uninstall(hover);
24257         context.uninstall(edit);
24258
24259         context.history()
24260             .on('undone.drag-node', null);
24261
24262         context.map()
24263             .on('drawn.drag-node', null);
24264
24265         context.surface()
24266             .selectAll('.active')
24267             .classed('active', false);
24268
24269         stopNudge();
24270     };
24271
24272     mode.selectedIDs = function(_) {
24273         if (!arguments.length) return selectedIDs;
24274         selectedIDs = _;
24275         return mode;
24276     };
24277
24278     mode.behavior = behavior;
24279
24280     return mode;
24281 };
24282 iD.modes.DrawArea = function(context, wayId, baseGraph) {
24283     var mode = {
24284         button: 'area',
24285         id: 'draw-area'
24286     };
24287
24288     var behavior;
24289
24290     mode.enter = function() {
24291         var way = context.entity(wayId),
24292             headId = way.nodes[way.nodes.length - 2],
24293             tailId = way.first();
24294
24295         behavior = iD.behavior.DrawWay(context, wayId, -1, mode, baseGraph)
24296             .tail(t('modes.draw_area.tail'));
24297
24298         var addNode = behavior.addNode;
24299
24300         behavior.addNode = function(node) {
24301             if (node.id === headId || node.id === tailId) {
24302                 behavior.finish();
24303             } else {
24304                 addNode(node);
24305             }
24306         };
24307
24308         context.install(behavior);
24309     };
24310
24311     mode.exit = function() {
24312         context.uninstall(behavior);
24313     };
24314
24315     mode.selectedIDs = function() {
24316         return [wayId];
24317     };
24318
24319     return mode;
24320 };
24321 iD.modes.DrawLine = function(context, wayId, baseGraph, affix) {
24322     var mode = {
24323         button: 'line',
24324         id: 'draw-line'
24325     };
24326
24327     var behavior;
24328
24329     mode.enter = function() {
24330         var way = context.entity(wayId),
24331             index = (affix === 'prefix') ? 0 : undefined,
24332             headId = (affix === 'prefix') ? way.first() : way.last();
24333
24334         behavior = iD.behavior.DrawWay(context, wayId, index, mode, baseGraph)
24335             .tail(t('modes.draw_line.tail'));
24336
24337         var addNode = behavior.addNode;
24338
24339         behavior.addNode = function(node) {
24340             if (node.id === headId) {
24341                 behavior.finish();
24342             } else {
24343                 addNode(node);
24344             }
24345         };
24346
24347         context.install(behavior);
24348     };
24349
24350     mode.exit = function() {
24351         context.uninstall(behavior);
24352     };
24353
24354     mode.selectedIDs = function() {
24355         return [wayId];
24356     };
24357
24358     return mode;
24359 };
24360 iD.modes.Move = function(context, entityIDs) {
24361     var mode = {
24362         id: 'move',
24363         button: 'browse'
24364     };
24365
24366     var keybinding = d3.keybinding('move'),
24367         edit = iD.behavior.Edit(context),
24368         annotation = entityIDs.length === 1 ?
24369             t('operations.move.annotation.' + context.geometry(entityIDs[0])) :
24370             t('operations.move.annotation.multiple'),
24371         cache,
24372         origin,
24373         nudgeInterval;
24374
24375     function vecSub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }
24376
24377     function edge(point, size) {
24378         var pad = [30, 100, 30, 100];
24379         if (point[0] > size[0] - pad[0]) return [-10, 0];
24380         else if (point[0] < pad[2]) return [10, 0];
24381         else if (point[1] > size[1] - pad[1]) return [0, -10];
24382         else if (point[1] < pad[3]) return [0, 10];
24383         return null;
24384     }
24385
24386     function startNudge(nudge) {
24387         if (nudgeInterval) window.clearInterval(nudgeInterval);
24388         nudgeInterval = window.setInterval(function() {
24389             context.pan(nudge);
24390
24391             var currMouse = context.mouse(),
24392                 origMouse = context.projection(origin),
24393                 delta = vecSub(vecSub(currMouse, origMouse), nudge),
24394                 action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24395
24396             context.overwrite(action, annotation);
24397
24398         }, 50);
24399     }
24400
24401     function stopNudge() {
24402         if (nudgeInterval) window.clearInterval(nudgeInterval);
24403         nudgeInterval = null;
24404     }
24405
24406     function move() {
24407         var currMouse = context.mouse(),
24408             origMouse = context.projection(origin),
24409             delta = vecSub(currMouse, origMouse),
24410             action = iD.actions.Move(entityIDs, delta, context.projection, cache);
24411
24412         context.overwrite(action, annotation);
24413
24414         var nudge = edge(currMouse, context.map().dimensions());
24415         if (nudge) startNudge(nudge);
24416         else stopNudge();
24417     }
24418
24419     function finish() {
24420         d3.event.stopPropagation();
24421         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24422         stopNudge();
24423     }
24424
24425     function cancel() {
24426         context.pop();
24427         context.enter(iD.modes.Select(context, entityIDs).suppressMenu(true));
24428         stopNudge();
24429     }
24430
24431     function undone() {
24432         context.enter(iD.modes.Browse(context));
24433     }
24434
24435     mode.enter = function() {
24436         origin = context.map().mouseCoordinates();
24437         cache = {};
24438
24439         context.install(edit);
24440
24441         context.perform(
24442             iD.actions.Noop(),
24443             annotation);
24444
24445         context.surface()
24446             .on('mousemove.move', move)
24447             .on('click.move', finish);
24448
24449         context.history()
24450             .on('undone.move', undone);
24451
24452         keybinding
24453             .on('⎋', cancel)
24454             .on('↩', finish);
24455
24456         d3.select(document)
24457             .call(keybinding);
24458     };
24459
24460     mode.exit = function() {
24461         stopNudge();
24462
24463         context.uninstall(edit);
24464
24465         context.surface()
24466             .on('mousemove.move', null)
24467             .on('click.move', null);
24468
24469         context.history()
24470             .on('undone.move', null);
24471
24472         keybinding.off();
24473     };
24474
24475     return mode;
24476 };
24477 iD.modes.RotateWay = function(context, wayId) {
24478     var mode = {
24479         id: 'rotate-way',
24480         button: 'browse'
24481     };
24482
24483     var keybinding = d3.keybinding('rotate-way'),
24484         edit = iD.behavior.Edit(context);
24485
24486     mode.enter = function() {
24487         context.install(edit);
24488
24489         var annotation = t('operations.rotate.annotation.' + context.geometry(wayId)),
24490             way = context.graph().entity(wayId),
24491             nodes = _.uniq(context.graph().childNodes(way)),
24492             points = nodes.map(function(n) { return context.projection(n.loc); }),
24493             pivot = d3.geom.polygon(points).centroid(),
24494             angle;
24495
24496         context.perform(
24497             iD.actions.Noop(),
24498             annotation);
24499
24500         function rotate() {
24501
24502             var mousePoint = context.mouse(),
24503                 newAngle = Math.atan2(mousePoint[1] - pivot[1], mousePoint[0] - pivot[0]);
24504
24505             if (typeof angle === 'undefined') angle = newAngle;
24506
24507             context.replace(
24508                 iD.actions.RotateWay(wayId, pivot, newAngle - angle, context.projection),
24509                 annotation);
24510
24511             angle = newAngle;
24512         }
24513
24514         function finish() {
24515             d3.event.stopPropagation();
24516             context.enter(iD.modes.Select(context, [wayId])
24517                 .suppressMenu(true));
24518         }
24519
24520         function cancel() {
24521             context.pop();
24522             context.enter(iD.modes.Select(context, [wayId])
24523                 .suppressMenu(true));
24524         }
24525
24526         function undone() {
24527             context.enter(iD.modes.Browse(context));
24528         }
24529
24530         context.surface()
24531             .on('mousemove.rotate-way', rotate)
24532             .on('click.rotate-way', finish);
24533
24534         context.history()
24535             .on('undone.rotate-way', undone);
24536
24537         keybinding
24538             .on('⎋', cancel)
24539             .on('↩', finish);
24540
24541         d3.select(document)
24542             .call(keybinding);
24543     };
24544
24545     mode.exit = function() {
24546         context.uninstall(edit);
24547
24548         context.surface()
24549             .on('mousemove.rotate-way', null)
24550             .on('click.rotate-way', null);
24551
24552         context.history()
24553             .on('undone.rotate-way', null);
24554
24555         keybinding.off();
24556     };
24557
24558     return mode;
24559 };
24560 iD.modes.Save = function(context) {
24561     var ui = iD.ui.Commit(context)
24562             .on('cancel', cancel)
24563             .on('save', save);
24564
24565     function cancel() {
24566         context.enter(iD.modes.Browse(context));
24567     }
24568
24569     function save(e, tryAgain) {
24570         function withChildNodes(ids, graph) {
24571             return _.uniq(_.reduce(ids, function(result, id) {
24572                 var e = graph.entity(id);
24573                 if (e.type === 'way') {
24574                     var cn = graph.childNodes(e);
24575                     result.push.apply(result, _.pluck(_.filter(cn, 'version'), 'id'));
24576                 }
24577                 return result;
24578             }, _.clone(ids)));
24579         }
24580
24581         var loading = iD.ui.Loading(context).message(t('save.uploading')).blocking(true),
24582             history = context.history(),
24583             origChanges = history.changes(iD.actions.DiscardTags(history.difference())),
24584             localGraph = context.graph(),
24585             remoteGraph = iD.Graph(history.base(), true),
24586             modified = _.filter(history.difference().summary(), {changeType: 'modified'}),
24587             toCheck = _.pluck(_.pluck(modified, 'entity'), 'id'),
24588             toLoad = withChildNodes(toCheck, localGraph),
24589             conflicts = [],
24590             errors = [];
24591
24592         if (!tryAgain) history.perform(iD.actions.Noop());  // checkpoint
24593         context.container().call(loading);
24594
24595         if (toCheck.length) {
24596             context.connection().loadMultiple(toLoad, loaded);
24597         } else {
24598             finalize();
24599         }
24600
24601
24602         // Reload modified entities into an alternate graph and check for conflicts..
24603         function loaded(err, result) {
24604             if (errors.length) return;
24605
24606             if (err) {
24607                 errors.push({
24608                     msg: err.responseText,
24609                     details: [ t('save.status_code', { code: err.status }) ]
24610                 });
24611                 showErrors();
24612
24613             } else {
24614                 var loadMore = [];
24615                 _.each(result.data, function(entity) {
24616                     remoteGraph.replace(entity);
24617                     toLoad = _.without(toLoad, entity.id);
24618
24619                     // Because loadMultiple doesn't download /full like loadEntity,
24620                     // need to also load children that aren't already being checked..
24621                     if (!entity.visible) return;
24622                     if (entity.type === 'way') {
24623                         loadMore.push.apply(loadMore,
24624                             _.difference(entity.nodes, toCheck, toLoad, loadMore));
24625                     } else if (entity.type === 'relation' && entity.isMultipolygon()) {
24626                         loadMore.push.apply(loadMore,
24627                             _.difference(_.pluck(entity.members, 'id'), toCheck, toLoad, loadMore));
24628                     }
24629                 });
24630
24631                 if (loadMore.length) {
24632                     toLoad.push.apply(toLoad, loadMore);
24633                     context.connection().loadMultiple(loadMore, loaded);
24634                 }
24635
24636                 if (!toLoad.length) {
24637                     checkConflicts();
24638                 }
24639             }
24640         }
24641
24642
24643         function checkConflicts() {
24644             function choice(id, text, action) {
24645                 return { id: id, text: text, action: function() { history.replace(action); } };
24646             }
24647             function formatUser(d) {
24648                 return '<a href="' + context.connection().userURL(d) + '" target="_blank">' + d + '</a>';
24649             }
24650             function entityName(entity) {
24651                 return iD.util.displayName(entity) || (iD.util.displayType(entity.id) + ' ' + entity.id);
24652             }
24653
24654             function compareVersions(local, remote) {
24655                 if (local.version !== remote.version) return false;
24656
24657                 if (local.type === 'way') {
24658                     var children = _.union(local.nodes, remote.nodes);
24659
24660                     for (var i = 0; i < children.length; i++) {
24661                         var a = localGraph.hasEntity(children[i]),
24662                             b = remoteGraph.hasEntity(children[i]);
24663
24664                         if (a && b && a.version !== b.version) return false;
24665                     }
24666                 }
24667
24668                 return true;
24669             }
24670
24671             _.each(toCheck, function(id) {
24672                 var local = localGraph.entity(id),
24673                     remote = remoteGraph.entity(id);
24674
24675                 if (compareVersions(local, remote)) return;
24676
24677                 var action = iD.actions.MergeRemoteChanges,
24678                     merge = action(id, localGraph, remoteGraph, formatUser);
24679
24680                 history.replace(merge);
24681
24682                 var mergeConflicts = merge.conflicts();
24683                 if (!mergeConflicts.length) return;  // merged safely
24684
24685                 var forceLocal = action(id, localGraph, remoteGraph).withOption('force_local'),
24686                     forceRemote = action(id, localGraph, remoteGraph).withOption('force_remote'),
24687                     keepMine = t('save.conflict.' + (remote.visible ? 'keep_local' : 'restore')),
24688                     keepTheirs = t('save.conflict.' + (remote.visible ? 'keep_remote' : 'delete'));
24689
24690                 conflicts.push({
24691                     id: id,
24692                     name: entityName(local),
24693                     details: mergeConflicts,
24694                     chosen: 1,
24695                     choices: [
24696                         choice(id, keepMine, forceLocal),
24697                         choice(id, keepTheirs, forceRemote)
24698                     ]
24699                 });
24700             });
24701
24702             finalize();
24703         }
24704
24705
24706         function finalize() {
24707             if (conflicts.length) {
24708                 conflicts.sort(function(a,b) { return b.id.localeCompare(a.id); });
24709                 showConflicts();
24710             } else if (errors.length) {
24711                 showErrors();
24712             } else {
24713                 var changes = history.changes(iD.actions.DiscardTags(history.difference()));
24714                 if (changes.modified.length || changes.created.length || changes.deleted.length) {
24715                     context.connection().putChangeset(
24716                         changes,
24717                         e.comment,
24718                         history.imageryUsed(),
24719                         function(err, changeset_id) {
24720                             if (err) {
24721                                 errors.push({
24722                                     msg: err.responseText,
24723                                     details: [ t('save.status_code', { code: err.status }) ]
24724                                 });
24725                                 showErrors();
24726                             } else {
24727                                 history.clearSaved();
24728                                 success(e, changeset_id);
24729                                 // Add delay to allow for postgres replication #1646 #2678
24730                                 window.setTimeout(function() {
24731                                     loading.close();
24732                                     context.flush();
24733                                 }, 2500);
24734                             }
24735                         });
24736                 } else {        // changes were insignificant or reverted by user
24737                     loading.close();
24738                     context.flush();
24739                     cancel();
24740                 }
24741             }
24742         }
24743
24744
24745         function showConflicts() {
24746             var selection = context.container()
24747                 .select('#sidebar')
24748                 .append('div')
24749                 .attr('class','sidebar-component');
24750
24751             loading.close();
24752
24753             selection.call(iD.ui.Conflicts(context)
24754                 .list(conflicts)
24755                 .on('download', function() {
24756                     var data = JXON.stringify(context.connection().osmChangeJXON('CHANGEME', origChanges)),
24757                         win = window.open('data:text/xml,' + encodeURIComponent(data), '_blank');
24758                     win.focus();
24759                 })
24760                 .on('cancel', function() {
24761                     history.pop();
24762                     selection.remove();
24763                 })
24764                 .on('save', function() {
24765                     for (var i = 0; i < conflicts.length; i++) {
24766                         if (conflicts[i].chosen === 1) {  // user chose "keep theirs"
24767                             var entity = context.hasEntity(conflicts[i].id);
24768                             if (entity && entity.type === 'way') {
24769                                 var children = _.uniq(entity.nodes);
24770                                 for (var j = 0; j < children.length; j++) {
24771                                     history.replace(iD.actions.Revert(children[j]));
24772                                 }
24773                             }
24774                             history.replace(iD.actions.Revert(conflicts[i].id));
24775                         }
24776                     }
24777
24778                     selection.remove();
24779                     save(e, true);
24780                 })
24781             );
24782         }
24783
24784
24785         function showErrors() {
24786             var selection = iD.ui.confirm(context.container());
24787
24788             history.pop();
24789             loading.close();
24790
24791             selection
24792                 .select('.modal-section.header')
24793                 .append('h3')
24794                 .text(t('save.error'));
24795
24796             addErrors(selection, errors);
24797             selection.okButton();
24798         }
24799
24800
24801         function addErrors(selection, data) {
24802             var message = selection
24803                 .select('.modal-section.message-text');
24804
24805             var items = message
24806                 .selectAll('.error-container')
24807                 .data(data);
24808
24809             var enter = items.enter()
24810                 .append('div')
24811                 .attr('class', 'error-container');
24812
24813             enter
24814                 .append('a')
24815                 .attr('class', 'error-description')
24816                 .attr('href', '#')
24817                 .classed('hide-toggle', true)
24818                 .text(function(d) { return d.msg || t('save.unknown_error_details'); })
24819                 .on('click', function() {
24820                     var error = d3.select(this),
24821                         detail = d3.select(this.nextElementSibling),
24822                         exp = error.classed('expanded');
24823
24824                     detail.style('display', exp ? 'none' : 'block');
24825                     error.classed('expanded', !exp);
24826
24827                     d3.event.preventDefault();
24828                 });
24829
24830             var details = enter
24831                 .append('div')
24832                 .attr('class', 'error-detail-container')
24833                 .style('display', 'none');
24834
24835             details
24836                 .append('ul')
24837                 .attr('class', 'error-detail-list')
24838                 .selectAll('li')
24839                 .data(function(d) { return d.details || []; })
24840                 .enter()
24841                 .append('li')
24842                 .attr('class', 'error-detail-item')
24843                 .text(function(d) { return d; });
24844
24845             items.exit()
24846                 .remove();
24847         }
24848
24849     }
24850
24851
24852     function success(e, changeset_id) {
24853         context.enter(iD.modes.Browse(context)
24854             .sidebar(iD.ui.Success(context)
24855                 .changeset({
24856                     id: changeset_id,
24857                     comment: e.comment
24858                 })
24859                 .on('cancel', function() {
24860                     context.ui().sidebar.hide();
24861                 })));
24862     }
24863
24864     var mode = {
24865         id: 'save'
24866     };
24867
24868     mode.enter = function() {
24869         context.connection().authenticate(function() {
24870             context.ui().sidebar.show(ui);
24871         });
24872     };
24873
24874     mode.exit = function() {
24875         context.ui().sidebar.hide();
24876     };
24877
24878     return mode;
24879 };
24880 iD.modes.Select = function(context, selectedIDs) {
24881     var mode = {
24882         id: 'select',
24883         button: 'browse'
24884     };
24885
24886     var keybinding = d3.keybinding('select'),
24887         timeout = null,
24888         behaviors = [
24889             iD.behavior.Copy(context),
24890             iD.behavior.Paste(context),
24891             iD.behavior.Hover(context),
24892             iD.behavior.Select(context),
24893             iD.behavior.Lasso(context),
24894             iD.modes.DragNode(context)
24895                 .selectedIDs(selectedIDs)
24896                 .behavior],
24897         inspector,
24898         radialMenu,
24899         newFeature = false,
24900         suppressMenu = false;
24901
24902     var wrap = context.container()
24903         .select('.inspector-wrap');
24904
24905
24906     function singular() {
24907         if (selectedIDs.length === 1) {
24908             return context.entity(selectedIDs[0]);
24909         }
24910     }
24911
24912     function closeMenu() {
24913         if (radialMenu) {
24914             context.surface().call(radialMenu.close);
24915         }
24916     }
24917
24918     function positionMenu() {
24919         if (suppressMenu || !radialMenu) { return; }
24920
24921         var entity = singular();
24922         if (entity && context.geometry(entity.id) === 'relation') {
24923             suppressMenu = true;
24924         } else if (entity && entity.type === 'node') {
24925             radialMenu.center(context.projection(entity.loc));
24926         } else {
24927             var point = context.mouse(),
24928                 viewport = iD.geo.Extent(context.projection.clipExtent()).polygon();
24929             if (iD.geo.pointInPolygon(point, viewport)) {
24930                 radialMenu.center(point);
24931             } else {
24932                 suppressMenu = true;
24933             }
24934         }
24935     }
24936
24937     function showMenu() {
24938         closeMenu();
24939         if (!suppressMenu && radialMenu) {
24940             context.surface().call(radialMenu);
24941         }
24942     }
24943
24944     function toggleMenu() {
24945         if (d3.select('.radial-menu').empty()) {
24946             showMenu();
24947         } else {
24948             closeMenu();
24949         }
24950     }
24951
24952     mode.selectedIDs = function() {
24953         return selectedIDs;
24954     };
24955
24956     mode.reselect = function() {
24957         var surfaceNode = context.surface().node();
24958         if (surfaceNode.focus) { // FF doesn't support it
24959             surfaceNode.focus();
24960         }
24961
24962         positionMenu();
24963         showMenu();
24964     };
24965
24966     mode.newFeature = function(_) {
24967         if (!arguments.length) return newFeature;
24968         newFeature = _;
24969         return mode;
24970     };
24971
24972     mode.suppressMenu = function(_) {
24973         if (!arguments.length) return suppressMenu;
24974         suppressMenu = _;
24975         return mode;
24976     };
24977
24978     mode.enter = function() {
24979         function update() {
24980             closeMenu();
24981             if (_.any(selectedIDs, function(id) { return !context.hasEntity(id); })) {
24982                 // Exit mode if selected entity gets undone
24983                 context.enter(iD.modes.Browse(context));
24984             }
24985         }
24986
24987         function dblclick() {
24988             var target = d3.select(d3.event.target),
24989                 datum = target.datum();
24990
24991             if (datum instanceof iD.Way && !target.classed('fill')) {
24992                 var choice = iD.geo.chooseEdge(context.childNodes(datum), context.mouse(), context.projection),
24993                     node = iD.Node();
24994
24995                 var prev = datum.nodes[choice.index - 1],
24996                     next = datum.nodes[choice.index];
24997
24998                 context.perform(
24999                     iD.actions.AddMidpoint({loc: choice.loc, edge: [prev, next]}, node),
25000                     t('operations.add.annotation.vertex'));
25001
25002                 d3.event.preventDefault();
25003                 d3.event.stopPropagation();
25004             }
25005         }
25006
25007         function selectElements(drawn) {
25008             var entity = singular();
25009             if (entity && context.geometry(entity.id) === 'relation') {
25010                 suppressMenu = true;
25011                 return;
25012             }
25013
25014             var selection = context.surface()
25015                     .selectAll(iD.util.entityOrMemberSelector(selectedIDs, context.graph()));
25016
25017             if (selection.empty()) {
25018                 if (drawn) {  // Exit mode if selected DOM elements have disappeared..
25019                     context.enter(iD.modes.Browse(context));
25020                 }
25021             } else {
25022                 selection
25023                     .classed('selected', true);
25024             }
25025         }
25026
25027
25028         behaviors.forEach(function(behavior) {
25029             context.install(behavior);
25030         });
25031
25032         var operations = _.without(d3.values(iD.operations), iD.operations.Delete)
25033                 .map(function(o) { return o(selectedIDs, context); })
25034                 .filter(function(o) { return o.available(); });
25035
25036         operations.unshift(iD.operations.Delete(selectedIDs, context));
25037
25038         keybinding
25039             .on('⎋', function() { context.enter(iD.modes.Browse(context)); }, true)
25040             .on('space', toggleMenu);
25041
25042         operations.forEach(function(operation) {
25043             operation.keys.forEach(function(key) {
25044                 keybinding.on(key, function() {
25045                     if (!operation.disabled()) {
25046                         operation();
25047                     }
25048                 });
25049             });
25050         });
25051
25052         d3.select(document)
25053             .call(keybinding);
25054
25055         radialMenu = iD.ui.RadialMenu(context, operations);
25056
25057         context.ui().sidebar
25058             .select(singular() ? singular().id : null, newFeature);
25059
25060         context.history()
25061             .on('undone.select', update)
25062             .on('redone.select', update);
25063
25064         context.map()
25065             .on('move.select', closeMenu)
25066             .on('drawn.select', selectElements);
25067
25068         selectElements();
25069
25070         var show = d3.event && !suppressMenu;
25071
25072         if (show) {
25073             positionMenu();
25074         }
25075
25076         timeout = window.setTimeout(function() {
25077             if (show) {
25078                 showMenu();
25079             }
25080
25081             context.surface()
25082                 .on('dblclick.select', dblclick);
25083         }, 200);
25084
25085         if (selectedIDs.length > 1) {
25086             var entities = iD.ui.SelectionList(context, selectedIDs);
25087             context.ui().sidebar.show(entities);
25088         }
25089     };
25090
25091     mode.exit = function() {
25092         if (timeout) window.clearTimeout(timeout);
25093
25094         if (inspector) wrap.call(inspector.close);
25095
25096         behaviors.forEach(function(behavior) {
25097             context.uninstall(behavior);
25098         });
25099
25100         keybinding.off();
25101         closeMenu();
25102         radialMenu = undefined;
25103
25104         context.history()
25105             .on('undone.select', null)
25106             .on('redone.select', null);
25107
25108         context.surface()
25109             .on('dblclick.select', null)
25110             .selectAll('.selected')
25111             .classed('selected', false);
25112
25113         context.map().on('drawn.select', null);
25114         context.ui().sidebar.hide();
25115     };
25116
25117     return mode;
25118 };
25119 iD.operations = {};
25120 iD.operations.Circularize = function(selectedIDs, context) {
25121     var entityId = selectedIDs[0],
25122         entity = context.entity(entityId),
25123         extent = entity.extent(context.graph()),
25124         geometry = context.geometry(entityId),
25125         action = iD.actions.Circularize(entityId, context.projection);
25126
25127     var operation = function() {
25128         var annotation = t('operations.circularize.annotation.' + geometry);
25129         context.perform(action, annotation);
25130     };
25131
25132     operation.available = function() {
25133         return selectedIDs.length === 1 &&
25134             entity.type === 'way' &&
25135             _.uniq(entity.nodes).length > 1;
25136     };
25137
25138     operation.disabled = function() {
25139         var reason;
25140         if (extent.percentContainedIn(context.extent()) < 0.8) {
25141             reason = 'too_large';
25142         } else if (context.hasHiddenConnections(entityId)) {
25143             reason = 'connected_to_hidden';
25144         }
25145         return action.disabled(context.graph()) || reason;
25146     };
25147
25148     operation.tooltip = function() {
25149         var disable = operation.disabled();
25150         return disable ?
25151             t('operations.circularize.' + disable) :
25152             t('operations.circularize.description.' + geometry);
25153     };
25154
25155     operation.id = 'circularize';
25156     operation.keys = [t('operations.circularize.key')];
25157     operation.title = t('operations.circularize.title');
25158
25159     return operation;
25160 };
25161 iD.operations.Continue = function(selectedIDs, context) {
25162     var graph = context.graph(),
25163         entities = selectedIDs.map(function(id) { return graph.entity(id); }),
25164         geometries = _.extend({line: [], vertex: []},
25165             _.groupBy(entities, function(entity) { return entity.geometry(graph); })),
25166         vertex = geometries.vertex[0];
25167
25168     function candidateWays() {
25169         return graph.parentWays(vertex).filter(function(parent) {
25170             return parent.geometry(graph) === 'line' &&
25171                 parent.affix(vertex.id) &&
25172                 (geometries.line.length === 0 || geometries.line[0] === parent);
25173         });
25174     }
25175
25176     var operation = function() {
25177         var candidate = candidateWays()[0];
25178         context.enter(iD.modes.DrawLine(
25179             context,
25180             candidate.id,
25181             context.graph(),
25182             candidate.affix(vertex.id)));
25183     };
25184
25185     operation.available = function() {
25186         return geometries.vertex.length === 1 && geometries.line.length <= 1 &&
25187             !context.features().hasHiddenConnections(vertex, context.graph());
25188     };
25189
25190     operation.disabled = function() {
25191         var candidates = candidateWays();
25192         if (candidates.length === 0)
25193             return 'not_eligible';
25194         if (candidates.length > 1)
25195             return 'multiple';
25196     };
25197
25198     operation.tooltip = function() {
25199         var disable = operation.disabled();
25200         return disable ?
25201             t('operations.continue.' + disable) :
25202             t('operations.continue.description');
25203     };
25204
25205     operation.id = 'continue';
25206     operation.keys = [t('operations.continue.key')];
25207     operation.title = t('operations.continue.title');
25208
25209     return operation;
25210 };
25211 iD.operations.Delete = function(selectedIDs, context) {
25212     var action = iD.actions.DeleteMultiple(selectedIDs);
25213
25214     var operation = function() {
25215         var annotation,
25216             nextSelectedID;
25217
25218         if (selectedIDs.length > 1) {
25219             annotation = t('operations.delete.annotation.multiple', {n: selectedIDs.length});
25220
25221         } else {
25222             var id = selectedIDs[0],
25223                 entity = context.entity(id),
25224                 geometry = context.geometry(id),
25225                 parents = context.graph().parentWays(entity),
25226                 parent = parents[0];
25227
25228             annotation = t('operations.delete.annotation.' + geometry);
25229
25230             // Select the next closest node in the way.
25231             if (geometry === 'vertex' && parents.length === 1 && parent.nodes.length > 2) {
25232                 var nodes = parent.nodes,
25233                     i = nodes.indexOf(id);
25234
25235                 if (i === 0) {
25236                     i++;
25237                 } else if (i === nodes.length - 1) {
25238                     i--;
25239                 } else {
25240                     var a = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i - 1]).loc),
25241                         b = iD.geo.sphericalDistance(entity.loc, context.entity(nodes[i + 1]).loc);
25242                     i = a < b ? i - 1 : i + 1;
25243                 }
25244
25245                 nextSelectedID = nodes[i];
25246             }
25247         }
25248
25249         if (nextSelectedID && context.hasEntity(nextSelectedID)) {
25250             context.enter(iD.modes.Select(context, [nextSelectedID]));
25251         } else {
25252             context.enter(iD.modes.Browse(context));
25253         }
25254
25255         context.perform(
25256             action,
25257             annotation);
25258     };
25259
25260     operation.available = function() {
25261         return true;
25262     };
25263
25264     operation.disabled = function() {
25265         var reason;
25266         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25267             reason = 'connected_to_hidden';
25268         }
25269         return action.disabled(context.graph()) || reason;
25270     };
25271
25272     operation.tooltip = function() {
25273         var disable = operation.disabled();
25274         return disable ?
25275             t('operations.delete.' + disable) :
25276             t('operations.delete.description');
25277     };
25278
25279     operation.id = 'delete';
25280     operation.keys = [iD.ui.cmd('⌘⌫'), iD.ui.cmd('⌘⌦')];
25281     operation.title = t('operations.delete.title');
25282
25283     return operation;
25284 };
25285 iD.operations.Disconnect = function(selectedIDs, context) {
25286     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25287         return context.geometry(entityId) === 'vertex';
25288     });
25289
25290     var entityId = vertices[0],
25291         action = iD.actions.Disconnect(entityId);
25292
25293     if (selectedIDs.length > 1) {
25294         action.limitWays(_.without(selectedIDs, entityId));
25295     }
25296
25297     var operation = function() {
25298         context.perform(action, t('operations.disconnect.annotation'));
25299     };
25300
25301     operation.available = function() {
25302         return vertices.length === 1;
25303     };
25304
25305     operation.disabled = function() {
25306         var reason;
25307         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25308             reason = 'connected_to_hidden';
25309         }
25310         return action.disabled(context.graph()) || reason;
25311     };
25312
25313     operation.tooltip = function() {
25314         var disable = operation.disabled();
25315         return disable ?
25316             t('operations.disconnect.' + disable) :
25317             t('operations.disconnect.description');
25318     };
25319
25320     operation.id = 'disconnect';
25321     operation.keys = [t('operations.disconnect.key')];
25322     operation.title = t('operations.disconnect.title');
25323
25324     return operation;
25325 };
25326 iD.operations.Merge = function(selectedIDs, context) {
25327     var join = iD.actions.Join(selectedIDs),
25328         merge = iD.actions.Merge(selectedIDs),
25329         mergePolygon = iD.actions.MergePolygon(selectedIDs);
25330
25331     var operation = function() {
25332         var annotation = t('operations.merge.annotation', {n: selectedIDs.length}),
25333             action;
25334
25335         if (!join.disabled(context.graph())) {
25336             action = join;
25337         } else if (!merge.disabled(context.graph())) {
25338             action = merge;
25339         } else {
25340             action = mergePolygon;
25341         }
25342
25343         context.perform(action, annotation);
25344         context.enter(iD.modes.Select(context, selectedIDs.filter(function(id) { return context.hasEntity(id); }))
25345             .suppressMenu(true));
25346     };
25347
25348     operation.available = function() {
25349         return selectedIDs.length >= 2;
25350     };
25351
25352     operation.disabled = function() {
25353         return join.disabled(context.graph()) &&
25354             merge.disabled(context.graph()) &&
25355             mergePolygon.disabled(context.graph());
25356     };
25357
25358     operation.tooltip = function() {
25359         var j = join.disabled(context.graph()),
25360             m = merge.disabled(context.graph()),
25361             p = mergePolygon.disabled(context.graph());
25362
25363         if (j === 'restriction' && m && p)
25364             return t('operations.merge.restriction', {relation: context.presets().item('type/restriction').name()});
25365
25366         if (p === 'incomplete_relation' && j && m)
25367             return t('operations.merge.incomplete_relation');
25368
25369         if (j && m && p)
25370             return t('operations.merge.' + j);
25371
25372         return t('operations.merge.description');
25373     };
25374
25375     operation.id = 'merge';
25376     operation.keys = [t('operations.merge.key')];
25377     operation.title = t('operations.merge.title');
25378
25379     return operation;
25380 };
25381 iD.operations.Move = function(selectedIDs, context) {
25382     var extent = selectedIDs.reduce(function(extent, id) {
25383             return extent.extend(context.entity(id).extent(context.graph()));
25384         }, iD.geo.Extent());
25385
25386     var operation = function() {
25387         context.enter(iD.modes.Move(context, selectedIDs));
25388     };
25389
25390     operation.available = function() {
25391         return selectedIDs.length > 1 ||
25392             context.entity(selectedIDs[0]).type !== 'node';
25393     };
25394
25395     operation.disabled = function() {
25396         var reason;
25397         if (extent.area() && extent.percentContainedIn(context.extent()) < 0.8) {
25398             reason = 'too_large';
25399         } else if (_.any(selectedIDs, context.hasHiddenConnections)) {
25400             reason = 'connected_to_hidden';
25401         }
25402         return iD.actions.Move(selectedIDs).disabled(context.graph()) || reason;
25403     };
25404
25405     operation.tooltip = function() {
25406         var disable = operation.disabled();
25407         return disable ?
25408             t('operations.move.' + disable) :
25409             t('operations.move.description');
25410     };
25411
25412     operation.id = 'move';
25413     operation.keys = [t('operations.move.key')];
25414     operation.title = t('operations.move.title');
25415
25416     return operation;
25417 };
25418 iD.operations.Orthogonalize = function(selectedIDs, context) {
25419     var entityId = selectedIDs[0],
25420         entity = context.entity(entityId),
25421         extent = entity.extent(context.graph()),
25422         geometry = context.geometry(entityId),
25423         action = iD.actions.Orthogonalize(entityId, context.projection);
25424
25425     var operation = function() {
25426         var annotation = t('operations.orthogonalize.annotation.' + geometry);
25427         context.perform(action, annotation);
25428     };
25429
25430     operation.available = function() {
25431         return selectedIDs.length === 1 &&
25432             entity.type === 'way' &&
25433             entity.isClosed() &&
25434             _.uniq(entity.nodes).length > 2;
25435     };
25436
25437     operation.disabled = function() {
25438         var reason;
25439         if (extent.percentContainedIn(context.extent()) < 0.8) {
25440             reason = 'too_large';
25441         } else if (context.hasHiddenConnections(entityId)) {
25442             reason = 'connected_to_hidden';
25443         }
25444         return action.disabled(context.graph()) || reason;
25445     };
25446
25447     operation.tooltip = function() {
25448         var disable = operation.disabled();
25449         return disable ?
25450             t('operations.orthogonalize.' + disable) :
25451             t('operations.orthogonalize.description.' + geometry);
25452     };
25453
25454     operation.id = 'orthogonalize';
25455     operation.keys = [t('operations.orthogonalize.key')];
25456     operation.title = t('operations.orthogonalize.title');
25457
25458     return operation;
25459 };
25460 iD.operations.Reverse = function(selectedIDs, context) {
25461     var entityId = selectedIDs[0];
25462
25463     var operation = function() {
25464         context.perform(
25465             iD.actions.Reverse(entityId),
25466             t('operations.reverse.annotation'));
25467     };
25468
25469     operation.available = function() {
25470         return selectedIDs.length === 1 &&
25471             context.geometry(entityId) === 'line';
25472     };
25473
25474     operation.disabled = function() {
25475         return false;
25476     };
25477
25478     operation.tooltip = function() {
25479         return t('operations.reverse.description');
25480     };
25481
25482     operation.id = 'reverse';
25483     operation.keys = [t('operations.reverse.key')];
25484     operation.title = t('operations.reverse.title');
25485
25486     return operation;
25487 };
25488 iD.operations.Rotate = function(selectedIDs, context) {
25489     var entityId = selectedIDs[0],
25490         entity = context.entity(entityId),
25491         extent = entity.extent(context.graph()),
25492         geometry = context.geometry(entityId);
25493
25494     var operation = function() {
25495         context.enter(iD.modes.RotateWay(context, entityId));
25496     };
25497
25498     operation.available = function() {
25499         if (selectedIDs.length !== 1 || entity.type !== 'way')
25500             return false;
25501         if (geometry === 'area')
25502             return true;
25503         if (entity.isClosed() &&
25504             context.graph().parentRelations(entity).some(function(r) { return r.isMultipolygon(); }))
25505             return true;
25506         return false;
25507     };
25508
25509     operation.disabled = function() {
25510         if (extent.percentContainedIn(context.extent()) < 0.8) {
25511             return 'too_large';
25512         } else if (context.hasHiddenConnections(entityId)) {
25513             return 'connected_to_hidden';
25514         } else {
25515             return false;
25516         }
25517     };
25518
25519     operation.tooltip = function() {
25520         var disable = operation.disabled();
25521         return disable ?
25522             t('operations.rotate.' + disable) :
25523             t('operations.rotate.description');
25524     };
25525
25526     operation.id = 'rotate';
25527     operation.keys = [t('operations.rotate.key')];
25528     operation.title = t('operations.rotate.title');
25529
25530     return operation;
25531 };
25532 iD.operations.Split = function(selectedIDs, context) {
25533     var vertices = _.filter(selectedIDs, function vertex(entityId) {
25534         return context.geometry(entityId) === 'vertex';
25535     });
25536
25537     var entityId = vertices[0],
25538         action = iD.actions.Split(entityId);
25539
25540     if (selectedIDs.length > 1) {
25541         action.limitWays(_.without(selectedIDs, entityId));
25542     }
25543
25544     var operation = function() {
25545         var annotation;
25546
25547         var ways = action.ways(context.graph());
25548         if (ways.length === 1) {
25549             annotation = t('operations.split.annotation.' + context.geometry(ways[0].id));
25550         } else {
25551             annotation = t('operations.split.annotation.multiple', {n: ways.length});
25552         }
25553
25554         var difference = context.perform(action, annotation);
25555         context.enter(iD.modes.Select(context, difference.extantIDs()));
25556     };
25557
25558     operation.available = function() {
25559         return vertices.length === 1;
25560     };
25561
25562     operation.disabled = function() {
25563         var reason;
25564         if (_.any(selectedIDs, context.hasHiddenConnections)) {
25565             reason = 'connected_to_hidden';
25566         }
25567         return action.disabled(context.graph()) || reason;
25568     };
25569
25570     operation.tooltip = function() {
25571         var disable = operation.disabled();
25572         if (disable) {
25573             return t('operations.split.' + disable);
25574         }
25575
25576         var ways = action.ways(context.graph());
25577         if (ways.length === 1) {
25578             return t('operations.split.description.' + context.geometry(ways[0].id));
25579         } else {
25580             return t('operations.split.description.multiple');
25581         }
25582     };
25583
25584     operation.id = 'split';
25585     operation.keys = [t('operations.split.key')];
25586     operation.title = t('operations.split.title');
25587
25588     return operation;
25589 };
25590 iD.operations.Straighten = function(selectedIDs, context) {
25591     var entityId = selectedIDs[0],
25592         action = iD.actions.Straighten(entityId, context.projection);
25593
25594     function operation() {
25595         var annotation = t('operations.straighten.annotation');
25596         context.perform(action, annotation);
25597     }
25598
25599     operation.available = function() {
25600         var entity = context.entity(entityId);
25601         return selectedIDs.length === 1 &&
25602             entity.type === 'way' &&
25603             !entity.isClosed() &&
25604             _.uniq(entity.nodes).length > 2;
25605     };
25606
25607     operation.disabled = function() {
25608         var reason;
25609         if (context.hasHiddenConnections(entityId)) {
25610             reason = 'connected_to_hidden';
25611         }
25612         return action.disabled(context.graph()) || reason;
25613     };
25614
25615     operation.tooltip = function() {
25616         var disable = operation.disabled();
25617         return disable ?
25618             t('operations.straighten.' + disable) :
25619             t('operations.straighten.description');
25620     };
25621
25622     operation.id = 'straighten';
25623     operation.keys = [t('operations.straighten.key')];
25624     operation.title = t('operations.straighten.title');
25625
25626     return operation;
25627 };
25628 iD.Connection = function(useHttps) {
25629     if (typeof useHttps !== 'boolean') {
25630       useHttps = window.location.protocol === 'https:';
25631     }
25632
25633     var event = d3.dispatch('authenticating', 'authenticated', 'auth', 'loading', 'loaded'),
25634         protocol = useHttps ? 'https:' : 'http:',
25635         url = protocol + '//www.openstreetmap.org',
25636         connection = {},
25637         inflight = {},
25638         loadedTiles = {},
25639         tileZoom = 16,
25640         oauth = osmAuth({
25641             url: protocol + '//www.openstreetmap.org',
25642             oauth_consumer_key: '5A043yRSEugj4DJ5TljuapfnrflWDte8jTOcWLlT',
25643             oauth_secret: 'aB3jKq1TRsCOUrfOIZ6oQMEDmv2ptV76PA54NGLL',
25644             loading: authenticating,
25645             done: authenticated
25646         }),
25647         ndStr = 'nd',
25648         tagStr = 'tag',
25649         memberStr = 'member',
25650         nodeStr = 'node',
25651         wayStr = 'way',
25652         relationStr = 'relation',
25653         userDetails,
25654         off;
25655
25656
25657     connection.changesetURL = function(changesetId) {
25658         return url + '/changeset/' + changesetId;
25659     };
25660
25661     connection.changesetsURL = function(center, zoom) {
25662         var precision = Math.max(0, Math.ceil(Math.log(zoom) / Math.LN2));
25663         return url + '/history#map=' +
25664             Math.floor(zoom) + '/' +
25665             center[1].toFixed(precision) + '/' +
25666             center[0].toFixed(precision);
25667     };
25668
25669     connection.entityURL = function(entity) {
25670         return url + '/' + entity.type + '/' + entity.osmId();
25671     };
25672
25673     connection.userURL = function(username) {
25674         return url + '/user/' + username;
25675     };
25676
25677     connection.loadFromURL = function(url, callback) {
25678         function done(err, dom) {
25679             return callback(err, parse(dom));
25680         }
25681         return d3.xml(url).get(done);
25682     };
25683
25684     connection.loadEntity = function(id, callback) {
25685         var type = iD.Entity.id.type(id),
25686             osmID = iD.Entity.id.toOSM(id);
25687
25688         connection.loadFromURL(
25689             url + '/api/0.6/' + type + '/' + osmID + (type !== 'node' ? '/full' : ''),
25690             function(err, entities) {
25691                 if (callback) callback(err, {data: entities});
25692             });
25693     };
25694
25695     connection.loadEntityVersion = function(id, version, callback) {
25696         var type = iD.Entity.id.type(id),
25697             osmID = iD.Entity.id.toOSM(id);
25698
25699         connection.loadFromURL(
25700             url + '/api/0.6/' + type + '/' + osmID + '/' + version,
25701             function(err, entities) {
25702                 if (callback) callback(err, {data: entities});
25703             });
25704     };
25705
25706     connection.loadMultiple = function(ids, callback) {
25707         _.each(_.groupBy(_.uniq(ids), iD.Entity.id.type), function(v, k) {
25708             var type = k + 's',
25709                 osmIDs = _.map(v, iD.Entity.id.toOSM);
25710
25711             _.each(_.chunk(osmIDs, 150), function(arr) {
25712                 connection.loadFromURL(
25713                     url + '/api/0.6/' + type + '?' + type + '=' + arr.join(),
25714                     function(err, entities) {
25715                         if (callback) callback(err, {data: entities});
25716                     });
25717             });
25718         });
25719     };
25720
25721     function authenticating() {
25722         event.authenticating();
25723     }
25724
25725     function authenticated() {
25726         event.authenticated();
25727     }
25728
25729     function getLoc(attrs) {
25730         var lon = attrs.lon && attrs.lon.value,
25731             lat = attrs.lat && attrs.lat.value;
25732         return [parseFloat(lon), parseFloat(lat)];
25733     }
25734
25735     function getNodes(obj) {
25736         var elems = obj.getElementsByTagName(ndStr),
25737             nodes = new Array(elems.length);
25738         for (var i = 0, l = elems.length; i < l; i++) {
25739             nodes[i] = 'n' + elems[i].attributes.ref.value;
25740         }
25741         return nodes;
25742     }
25743
25744     function getTags(obj) {
25745         var elems = obj.getElementsByTagName(tagStr),
25746             tags = {};
25747         for (var i = 0, l = elems.length; i < l; i++) {
25748             var attrs = elems[i].attributes;
25749             tags[attrs.k.value] = attrs.v.value;
25750         }
25751         return tags;
25752     }
25753
25754     function getMembers(obj) {
25755         var elems = obj.getElementsByTagName(memberStr),
25756             members = new Array(elems.length);
25757         for (var i = 0, l = elems.length; i < l; i++) {
25758             var attrs = elems[i].attributes;
25759             members[i] = {
25760                 id: attrs.type.value[0] + attrs.ref.value,
25761                 type: attrs.type.value,
25762                 role: attrs.role.value
25763             };
25764         }
25765         return members;
25766     }
25767
25768     function getVisible(attrs) {
25769         return (!attrs.visible || attrs.visible.value !== 'false');
25770     }
25771
25772     var parsers = {
25773         node: function nodeData(obj) {
25774             var attrs = obj.attributes;
25775             return new iD.Node({
25776                 id: iD.Entity.id.fromOSM(nodeStr, attrs.id.value),
25777                 loc: getLoc(attrs),
25778                 version: attrs.version.value,
25779                 user: attrs.user && attrs.user.value,
25780                 tags: getTags(obj),
25781                 visible: getVisible(attrs)
25782             });
25783         },
25784
25785         way: function wayData(obj) {
25786             var attrs = obj.attributes;
25787             return new iD.Way({
25788                 id: iD.Entity.id.fromOSM(wayStr, attrs.id.value),
25789                 version: attrs.version.value,
25790                 user: attrs.user && attrs.user.value,
25791                 tags: getTags(obj),
25792                 nodes: getNodes(obj),
25793                 visible: getVisible(attrs)
25794             });
25795         },
25796
25797         relation: function relationData(obj) {
25798             var attrs = obj.attributes;
25799             return new iD.Relation({
25800                 id: iD.Entity.id.fromOSM(relationStr, attrs.id.value),
25801                 version: attrs.version.value,
25802                 user: attrs.user && attrs.user.value,
25803                 tags: getTags(obj),
25804                 members: getMembers(obj),
25805                 visible: getVisible(attrs)
25806             });
25807         }
25808     };
25809
25810     function parse(dom) {
25811         if (!dom || !dom.childNodes) return;
25812
25813         var root = dom.childNodes[0],
25814             children = root.childNodes,
25815             entities = [];
25816
25817         for (var i = 0, l = children.length; i < l; i++) {
25818             var child = children[i],
25819                 parser = parsers[child.nodeName];
25820             if (parser) {
25821                 entities.push(parser(child));
25822             }
25823         }
25824
25825         return entities;
25826     }
25827
25828     connection.authenticated = function() {
25829         return oauth.authenticated();
25830     };
25831
25832     // Generate Changeset XML. Returns a string.
25833     connection.changesetJXON = function(tags) {
25834         return {
25835             osm: {
25836                 changeset: {
25837                     tag: _.map(tags, function(value, key) {
25838                         return { '@k': key, '@v': value };
25839                     }),
25840                     '@version': 0.6,
25841                     '@generator': 'iD'
25842                 }
25843             }
25844         };
25845     };
25846
25847     // Generate [osmChange](http://wiki.openstreetmap.org/wiki/OsmChange)
25848     // XML. Returns a string.
25849     connection.osmChangeJXON = function(changeset_id, changes) {
25850         function nest(x, order) {
25851             var groups = {};
25852             for (var i = 0; i < x.length; i++) {
25853                 var tagName = Object.keys(x[i])[0];
25854                 if (!groups[tagName]) groups[tagName] = [];
25855                 groups[tagName].push(x[i][tagName]);
25856             }
25857             var ordered = {};
25858             order.forEach(function(o) {
25859                 if (groups[o]) ordered[o] = groups[o];
25860             });
25861             return ordered;
25862         }
25863
25864         function rep(entity) {
25865             return entity.asJXON(changeset_id);
25866         }
25867
25868         return {
25869             osmChange: {
25870                 '@version': 0.6,
25871                 '@generator': 'iD',
25872                 'create': nest(changes.created.map(rep), ['node', 'way', 'relation']),
25873                 'modify': nest(changes.modified.map(rep), ['node', 'way', 'relation']),
25874                 'delete': _.extend(nest(changes.deleted.map(rep), ['relation', 'way', 'node']), {'@if-unused': true})
25875             }
25876         };
25877     };
25878
25879     connection.changesetTags = function(comment, imageryUsed) {
25880         var detected = iD.detect(),
25881             tags = {
25882                 created_by: 'iD ' + iD.version,
25883                 imagery_used: imageryUsed.join(';').substr(0, 255),
25884                 host: (window.location.origin + window.location.pathname).substr(0, 255),
25885                 locale: detected.locale
25886             };
25887
25888         if (comment) {
25889             tags.comment = comment.substr(0, 255);
25890         }
25891
25892         return tags;
25893     };
25894
25895     connection.putChangeset = function(changes, comment, imageryUsed, callback) {
25896         oauth.xhr({
25897                 method: 'PUT',
25898                 path: '/api/0.6/changeset/create',
25899                 options: { header: { 'Content-Type': 'text/xml' } },
25900                 content: JXON.stringify(connection.changesetJXON(connection.changesetTags(comment, imageryUsed)))
25901             }, function(err, changeset_id) {
25902                 if (err) return callback(err);
25903                 oauth.xhr({
25904                     method: 'POST',
25905                     path: '/api/0.6/changeset/' + changeset_id + '/upload',
25906                     options: { header: { 'Content-Type': 'text/xml' } },
25907                     content: JXON.stringify(connection.osmChangeJXON(changeset_id, changes))
25908                 }, function(err) {
25909                     if (err) return callback(err);
25910                     // POST was successful, safe to call the callback.
25911                     // Still attempt to close changeset, but ignore response because #2667
25912                     // Add delay to allow for postgres replication #1646 #2678
25913                     window.setTimeout(function() { callback(null, changeset_id); }, 2500);
25914                     oauth.xhr({
25915                         method: 'PUT',
25916                         path: '/api/0.6/changeset/' + changeset_id + '/close'
25917                     }, d3.functor(true));
25918                 });
25919             });
25920     };
25921
25922     connection.userDetails = function(callback) {
25923         if (userDetails) {
25924             callback(undefined, userDetails);
25925             return;
25926         }
25927
25928         function done(err, user_details) {
25929             if (err) return callback(err);
25930
25931             var u = user_details.getElementsByTagName('user')[0],
25932                 img = u.getElementsByTagName('img'),
25933                 image_url = '';
25934
25935             if (img && img[0] && img[0].getAttribute('href')) {
25936                 image_url = img[0].getAttribute('href');
25937             }
25938
25939             userDetails = {
25940                 display_name: u.attributes.display_name.value,
25941                 image_url: image_url,
25942                 id: u.attributes.id.value
25943             };
25944
25945             callback(undefined, userDetails);
25946         }
25947
25948         oauth.xhr({ method: 'GET', path: '/api/0.6/user/details' }, done);
25949     };
25950
25951     connection.status = function(callback) {
25952         function done(capabilities) {
25953             var apiStatus = capabilities.getElementsByTagName('status');
25954             callback(undefined, apiStatus[0].getAttribute('api'));
25955         }
25956         d3.xml(url + '/api/capabilities').get()
25957             .on('load', done)
25958             .on('error', callback);
25959     };
25960
25961     function abortRequest(i) { i.abort(); }
25962
25963     connection.tileZoom = function(_) {
25964         if (!arguments.length) return tileZoom;
25965         tileZoom = _;
25966         return connection;
25967     };
25968
25969     connection.loadTiles = function(projection, dimensions, callback) {
25970
25971         if (off) return;
25972
25973         var s = projection.scale() * 2 * Math.PI,
25974             z = Math.max(Math.log(s) / Math.log(2) - 8, 0),
25975             ts = 256 * Math.pow(2, z - tileZoom),
25976             origin = [
25977                 s / 2 - projection.translate()[0],
25978                 s / 2 - projection.translate()[1]];
25979
25980         var tiles = d3.geo.tile()
25981             .scaleExtent([tileZoom, tileZoom])
25982             .scale(s)
25983             .size(dimensions)
25984             .translate(projection.translate())()
25985             .map(function(tile) {
25986                 var x = tile[0] * ts - origin[0],
25987                     y = tile[1] * ts - origin[1];
25988
25989                 return {
25990                     id: tile.toString(),
25991                     extent: iD.geo.Extent(
25992                         projection.invert([x, y + ts]),
25993                         projection.invert([x + ts, y]))
25994                 };
25995             });
25996
25997         function bboxUrl(tile) {
25998             return url + '/api/0.6/map?bbox=' + tile.extent.toParam();
25999         }
26000
26001         _.filter(inflight, function(v, i) {
26002             var wanted = _.find(tiles, function(tile) {
26003                 return i === tile.id;
26004             });
26005             if (!wanted) delete inflight[i];
26006             return !wanted;
26007         }).map(abortRequest);
26008
26009         tiles.forEach(function(tile) {
26010             var id = tile.id;
26011
26012             if (loadedTiles[id] || inflight[id]) return;
26013
26014             if (_.isEmpty(inflight)) {
26015                 event.loading();
26016             }
26017
26018             inflight[id] = connection.loadFromURL(bboxUrl(tile), function(err, parsed) {
26019                 loadedTiles[id] = true;
26020                 delete inflight[id];
26021
26022                 if (callback) callback(err, _.extend({data: parsed}, tile));
26023
26024                 if (_.isEmpty(inflight)) {
26025                     event.loaded();
26026                 }
26027             });
26028         });
26029     };
26030
26031     connection.switch = function(options) {
26032         url = options.url;
26033         oauth.options(_.extend({
26034             loading: authenticating,
26035             done: authenticated
26036         }, options));
26037         event.auth();
26038         connection.flush();
26039         return connection;
26040     };
26041
26042     connection.toggle = function(_) {
26043         off = !_;
26044         return connection;
26045     };
26046
26047     connection.flush = function() {
26048         userDetails = undefined;
26049         _.forEach(inflight, abortRequest);
26050         loadedTiles = {};
26051         inflight = {};
26052         return connection;
26053     };
26054
26055     connection.loadedTiles = function(_) {
26056         if (!arguments.length) return loadedTiles;
26057         loadedTiles = _;
26058         return connection;
26059     };
26060
26061     connection.logout = function() {
26062         userDetails = undefined;
26063         oauth.logout();
26064         event.auth();
26065         return connection;
26066     };
26067
26068     connection.authenticate = function(callback) {
26069         userDetails = undefined;
26070         function done(err, res) {
26071             event.auth();
26072             if (callback) callback(err, res);
26073         }
26074         return oauth.authenticate(done);
26075     };
26076
26077     return d3.rebind(connection, event, 'on');
26078 };
26079 /*
26080     iD.Difference represents the difference between two graphs.
26081     It knows how to calculate the set of entities that were
26082     created, modified, or deleted, and also contains the logic
26083     for recursively extending a difference to the complete set
26084     of entities that will require a redraw, taking into account
26085     child and parent relationships.
26086  */
26087 iD.Difference = function(base, head) {
26088     var changes = {}, length = 0;
26089
26090     function changed(h, b) {
26091         return h !== b && !_.isEqual(_.omit(h, 'v'), _.omit(b, 'v'));
26092     }
26093
26094     _.each(head.entities, function(h, id) {
26095         var b = base.entities[id];
26096         if (changed(h, b)) {
26097             changes[id] = {base: b, head: h};
26098             length++;
26099         }
26100     });
26101
26102     _.each(base.entities, function(b, id) {
26103         var h = head.entities[id];
26104         if (!changes[id] && changed(h, b)) {
26105             changes[id] = {base: b, head: h};
26106             length++;
26107         }
26108     });
26109
26110     function addParents(parents, result) {
26111         for (var i = 0; i < parents.length; i++) {
26112             var parent = parents[i];
26113
26114             if (parent.id in result)
26115                 continue;
26116
26117             result[parent.id] = parent;
26118             addParents(head.parentRelations(parent), result);
26119         }
26120     }
26121
26122     var difference = {};
26123
26124     difference.length = function() {
26125         return length;
26126     };
26127
26128     difference.changes = function() {
26129         return changes;
26130     };
26131
26132     difference.extantIDs = function() {
26133         var result = [];
26134         _.each(changes, function(change, id) {
26135             if (change.head) result.push(id);
26136         });
26137         return result;
26138     };
26139
26140     difference.modified = function() {
26141         var result = [];
26142         _.each(changes, function(change) {
26143             if (change.base && change.head) result.push(change.head);
26144         });
26145         return result;
26146     };
26147
26148     difference.created = function() {
26149         var result = [];
26150         _.each(changes, function(change) {
26151             if (!change.base && change.head) result.push(change.head);
26152         });
26153         return result;
26154     };
26155
26156     difference.deleted = function() {
26157         var result = [];
26158         _.each(changes, function(change) {
26159             if (change.base && !change.head) result.push(change.base);
26160         });
26161         return result;
26162     };
26163
26164     difference.summary = function() {
26165         var relevant = {};
26166
26167         function addEntity(entity, graph, changeType) {
26168             relevant[entity.id] = {
26169                 entity: entity,
26170                 graph: graph,
26171                 changeType: changeType
26172             };
26173         }
26174
26175         function addParents(entity) {
26176             var parents = head.parentWays(entity);
26177             for (var j = parents.length - 1; j >= 0; j--) {
26178                 var parent = parents[j];
26179                 if (!(parent.id in relevant)) addEntity(parent, head, 'modified');
26180             }
26181         }
26182
26183         _.each(changes, function(change) {
26184             if (change.head && change.head.geometry(head) !== 'vertex') {
26185                 addEntity(change.head, head, change.base ? 'modified' : 'created');
26186
26187             } else if (change.base && change.base.geometry(base) !== 'vertex') {
26188                 addEntity(change.base, base, 'deleted');
26189
26190             } else if (change.base && change.head) { // modified vertex
26191                 var moved    = !_.isEqual(change.base.loc,  change.head.loc),
26192                     retagged = !_.isEqual(change.base.tags, change.head.tags);
26193
26194                 if (moved) {
26195                     addParents(change.head);
26196                 }
26197
26198                 if (retagged || (moved && change.head.hasInterestingTags())) {
26199                     addEntity(change.head, head, 'modified');
26200                 }
26201
26202             } else if (change.head && change.head.hasInterestingTags()) { // created vertex
26203                 addEntity(change.head, head, 'created');
26204
26205             } else if (change.base && change.base.hasInterestingTags()) { // deleted vertex
26206                 addEntity(change.base, base, 'deleted');
26207             }
26208         });
26209
26210         return d3.values(relevant);
26211     };
26212
26213     difference.complete = function(extent) {
26214         var result = {}, id, change;
26215
26216         for (id in changes) {
26217             change = changes[id];
26218
26219             var h = change.head,
26220                 b = change.base,
26221                 entity = h || b;
26222
26223             if (extent &&
26224                 (!h || !h.intersects(extent, head)) &&
26225                 (!b || !b.intersects(extent, base)))
26226                 continue;
26227
26228             result[id] = h;
26229
26230             if (entity.type === 'way') {
26231                 var nh = h ? h.nodes : [],
26232                     nb = b ? b.nodes : [],
26233                     diff, i;
26234
26235                 diff = _.difference(nh, nb);
26236                 for (i = 0; i < diff.length; i++) {
26237                     result[diff[i]] = head.hasEntity(diff[i]);
26238                 }
26239
26240                 diff = _.difference(nb, nh);
26241                 for (i = 0; i < diff.length; i++) {
26242                     result[diff[i]] = head.hasEntity(diff[i]);
26243                 }
26244             }
26245
26246             addParents(head.parentWays(entity), result);
26247             addParents(head.parentRelations(entity), result);
26248         }
26249
26250         return result;
26251     };
26252
26253     return difference;
26254 };
26255 iD.Entity = function(attrs) {
26256     // For prototypal inheritance.
26257     if (this instanceof iD.Entity) return;
26258
26259     // Create the appropriate subtype.
26260     if (attrs && attrs.type) {
26261         return iD.Entity[attrs.type].apply(this, arguments);
26262     } else if (attrs && attrs.id) {
26263         return iD.Entity[iD.Entity.id.type(attrs.id)].apply(this, arguments);
26264     }
26265
26266     // Initialize a generic Entity (used only in tests).
26267     return (new iD.Entity()).initialize(arguments);
26268 };
26269
26270 iD.Entity.id = function(type) {
26271     return iD.Entity.id.fromOSM(type, iD.Entity.id.next[type]--);
26272 };
26273
26274 iD.Entity.id.next = {node: -1, way: -1, relation: -1};
26275
26276 iD.Entity.id.fromOSM = function(type, id) {
26277     return type[0] + id;
26278 };
26279
26280 iD.Entity.id.toOSM = function(id) {
26281     return id.slice(1);
26282 };
26283
26284 iD.Entity.id.type = function(id) {
26285     return {'n': 'node', 'w': 'way', 'r': 'relation'}[id[0]];
26286 };
26287
26288 // A function suitable for use as the second argument to d3.selection#data().
26289 iD.Entity.key = function(entity) {
26290     return entity.id + 'v' + (entity.v || 0);
26291 };
26292
26293 iD.Entity.prototype = {
26294     tags: {},
26295
26296     initialize: function(sources) {
26297         for (var i = 0; i < sources.length; ++i) {
26298             var source = sources[i];
26299             for (var prop in source) {
26300                 if (Object.prototype.hasOwnProperty.call(source, prop)) {
26301                     if (source[prop] === undefined) {
26302                         delete this[prop];
26303                     } else {
26304                         this[prop] = source[prop];
26305                     }
26306                 }
26307             }
26308         }
26309
26310         if (!this.id && this.type) {
26311             this.id = iD.Entity.id(this.type);
26312         }
26313         if (!this.hasOwnProperty('visible')) {
26314             this.visible = true;
26315         }
26316
26317         if (iD.debug) {
26318             Object.freeze(this);
26319             Object.freeze(this.tags);
26320
26321             if (this.loc) Object.freeze(this.loc);
26322             if (this.nodes) Object.freeze(this.nodes);
26323             if (this.members) Object.freeze(this.members);
26324         }
26325
26326         return this;
26327     },
26328
26329     copy: function() {
26330         // Returns an array so that we can support deep copying ways and relations.
26331         // The first array element will contain this.copy, followed by any descendants.
26332         return [iD.Entity(this, {id: undefined, user: undefined, version: undefined})];
26333     },
26334
26335     osmId: function() {
26336         return iD.Entity.id.toOSM(this.id);
26337     },
26338
26339     isNew: function() {
26340         return this.osmId() < 0;
26341     },
26342
26343     update: function(attrs) {
26344         return iD.Entity(this, attrs, {v: 1 + (this.v || 0)});
26345     },
26346
26347     mergeTags: function(tags) {
26348         var merged = _.clone(this.tags), changed = false;
26349         for (var k in tags) {
26350             var t1 = merged[k],
26351                 t2 = tags[k];
26352             if (!t1) {
26353                 changed = true;
26354                 merged[k] = t2;
26355             } else if (t1 !== t2) {
26356                 changed = true;
26357                 merged[k] = _.union(t1.split(/;\s*/), t2.split(/;\s*/)).join(';');
26358             }
26359         }
26360         return changed ? this.update({tags: merged}) : this;
26361     },
26362
26363     intersects: function(extent, resolver) {
26364         return this.extent(resolver).intersects(extent);
26365     },
26366
26367     isUsed: function(resolver) {
26368         return _.without(Object.keys(this.tags), 'area').length > 0 ||
26369             resolver.parentRelations(this).length > 0;
26370     },
26371
26372     hasInterestingTags: function() {
26373         return _.keys(this.tags).some(function(key) {
26374             return key !== 'attribution' &&
26375                 key !== 'created_by' &&
26376                 key !== 'source' &&
26377                 key !== 'odbl' &&
26378                 key.indexOf('tiger:') !== 0;
26379         });
26380     },
26381
26382     isHighwayIntersection: function() {
26383         return false;
26384     },
26385
26386     deprecatedTags: function() {
26387         var tags = _.pairs(this.tags);
26388         var deprecated = {};
26389
26390         iD.data.deprecated.forEach(function(d) {
26391             var match = _.pairs(d.old)[0];
26392             tags.forEach(function(t) {
26393                 if (t[0] === match[0] &&
26394                     (t[1] === match[1] || match[1] === '*')) {
26395                     deprecated[t[0]] = t[1];
26396                 }
26397             });
26398         });
26399
26400         return deprecated;
26401     }
26402 };
26403 iD.Graph = function(other, mutable) {
26404     if (!(this instanceof iD.Graph)) return new iD.Graph(other, mutable);
26405
26406     if (other instanceof iD.Graph) {
26407         var base = other.base();
26408         this.entities = _.assign(Object.create(base.entities), other.entities);
26409         this._parentWays = _.assign(Object.create(base.parentWays), other._parentWays);
26410         this._parentRels = _.assign(Object.create(base.parentRels), other._parentRels);
26411
26412     } else {
26413         this.entities = Object.create({});
26414         this._parentWays = Object.create({});
26415         this._parentRels = Object.create({});
26416         this.rebase(other || [], [this]);
26417     }
26418
26419     this.transients = {};
26420     this._childNodes = {};
26421     this.frozen = !mutable;
26422 };
26423
26424 iD.Graph.prototype = {
26425     hasEntity: function(id) {
26426         return this.entities[id];
26427     },
26428
26429     entity: function(id) {
26430         var entity = this.entities[id];
26431         if (!entity) {
26432             throw new Error('entity ' + id + ' not found');
26433         }
26434         return entity;
26435     },
26436
26437     transient: function(entity, key, fn) {
26438         var id = entity.id,
26439             transients = this.transients[id] ||
26440             (this.transients[id] = {});
26441
26442         if (transients[key] !== undefined) {
26443             return transients[key];
26444         }
26445
26446         transients[key] = fn.call(entity);
26447
26448         return transients[key];
26449     },
26450
26451     parentWays: function(entity) {
26452         var parents = this._parentWays[entity.id],
26453             result = [];
26454
26455         if (parents) {
26456             for (var i = 0; i < parents.length; i++) {
26457                 result.push(this.entity(parents[i]));
26458             }
26459         }
26460         return result;
26461     },
26462
26463     isPoi: function(entity) {
26464         var parentWays = this._parentWays[entity.id];
26465         return !parentWays || parentWays.length === 0;
26466     },
26467
26468     isShared: function(entity) {
26469         var parentWays = this._parentWays[entity.id];
26470         return parentWays && parentWays.length > 1;
26471     },
26472
26473     parentRelations: function(entity) {
26474         var parents = this._parentRels[entity.id],
26475             result = [];
26476
26477         if (parents) {
26478             for (var i = 0; i < parents.length; i++) {
26479                 result.push(this.entity(parents[i]));
26480             }
26481         }
26482         return result;
26483     },
26484
26485     childNodes: function(entity) {
26486         if (this._childNodes[entity.id])
26487             return this._childNodes[entity.id];
26488
26489         var nodes = [];
26490         if (entity.nodes) {
26491             for (var i = 0; i < entity.nodes.length; i++) {
26492                 nodes[i] = this.entity(entity.nodes[i]);
26493             }
26494         }
26495
26496         if (iD.debug) Object.freeze(nodes);
26497
26498         this._childNodes[entity.id] = nodes;
26499         return this._childNodes[entity.id];
26500     },
26501
26502     base: function() {
26503         return {
26504             'entities': iD.util.getPrototypeOf(this.entities),
26505             'parentWays': iD.util.getPrototypeOf(this._parentWays),
26506             'parentRels': iD.util.getPrototypeOf(this._parentRels)
26507         };
26508     },
26509
26510     // Unlike other graph methods, rebase mutates in place. This is because it
26511     // is used only during the history operation that merges newly downloaded
26512     // data into each state. To external consumers, it should appear as if the
26513     // graph always contained the newly downloaded data.
26514     rebase: function(entities, stack, force) {
26515         var base = this.base(),
26516             i, j, k, id;
26517
26518         for (i = 0; i < entities.length; i++) {
26519             var entity = entities[i];
26520
26521             if (!entity.visible || (!force && base.entities[entity.id]))
26522                 continue;
26523
26524             // Merging data into the base graph
26525             base.entities[entity.id] = entity;
26526             this._updateCalculated(undefined, entity, base.parentWays, base.parentRels);
26527
26528             // Restore provisionally-deleted nodes that are discovered to have an extant parent
26529             if (entity.type === 'way') {
26530                 for (j = 0; j < entity.nodes.length; j++) {
26531                     id = entity.nodes[j];
26532                     for (k = 1; k < stack.length; k++) {
26533                         var ents = stack[k].entities;
26534                         if (ents.hasOwnProperty(id) && ents[id] === undefined) {
26535                             delete ents[id];
26536                         }
26537                     }
26538                 }
26539             }
26540         }
26541
26542         for (i = 0; i < stack.length; i++) {
26543             stack[i]._updateRebased();
26544         }
26545     },
26546
26547     _updateRebased: function() {
26548         var base = this.base(),
26549             i, k, child, id, keys;
26550
26551         keys = Object.keys(this._parentWays);
26552         for (i = 0; i < keys.length; i++) {
26553             child = keys[i];
26554             if (base.parentWays[child]) {
26555                 for (k = 0; k < base.parentWays[child].length; k++) {
26556                     id = base.parentWays[child][k];
26557                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentWays[child], id)) {
26558                         this._parentWays[child].push(id);
26559                     }
26560                 }
26561             }
26562         }
26563
26564         keys = Object.keys(this._parentRels);
26565         for (i = 0; i < keys.length; i++) {
26566             child = keys[i];
26567             if (base.parentRels[child]) {
26568                 for (k = 0; k < base.parentRels[child].length; k++) {
26569                     id = base.parentRels[child][k];
26570                     if (!this.entities.hasOwnProperty(id) && !_.contains(this._parentRels[child], id)) {
26571                         this._parentRels[child].push(id);
26572                     }
26573                 }
26574             }
26575         }
26576
26577         this.transients = {};
26578
26579         // this._childNodes is not updated, under the assumption that
26580         // ways are always downloaded with their child nodes.
26581     },
26582
26583     // Updates calculated properties (parentWays, parentRels) for the specified change
26584     _updateCalculated: function(oldentity, entity, parentWays, parentRels) {
26585
26586         parentWays = parentWays || this._parentWays;
26587         parentRels = parentRels || this._parentRels;
26588
26589         var type = entity && entity.type || oldentity && oldentity.type,
26590             removed, added, ways, rels, i;
26591
26592
26593         if (type === 'way') {
26594
26595             // Update parentWays
26596             if (oldentity && entity) {
26597                 removed = _.difference(oldentity.nodes, entity.nodes);
26598                 added = _.difference(entity.nodes, oldentity.nodes);
26599             } else if (oldentity) {
26600                 removed = oldentity.nodes;
26601                 added = [];
26602             } else if (entity) {
26603                 removed = [];
26604                 added = entity.nodes;
26605             }
26606             for (i = 0; i < removed.length; i++) {
26607                 parentWays[removed[i]] = _.without(parentWays[removed[i]], oldentity.id);
26608             }
26609             for (i = 0; i < added.length; i++) {
26610                 ways = _.without(parentWays[added[i]], entity.id);
26611                 ways.push(entity.id);
26612                 parentWays[added[i]] = ways;
26613             }
26614
26615         } else if (type === 'relation') {
26616
26617             // Update parentRels
26618             if (oldentity && entity) {
26619                 removed = _.difference(oldentity.members, entity.members);
26620                 added = _.difference(entity.members, oldentity);
26621             } else if (oldentity) {
26622                 removed = oldentity.members;
26623                 added = [];
26624             } else if (entity) {
26625                 removed = [];
26626                 added = entity.members;
26627             }
26628             for (i = 0; i < removed.length; i++) {
26629                 parentRels[removed[i].id] = _.without(parentRels[removed[i].id], oldentity.id);
26630             }
26631             for (i = 0; i < added.length; i++) {
26632                 rels = _.without(parentRels[added[i].id], entity.id);
26633                 rels.push(entity.id);
26634                 parentRels[added[i].id] = rels;
26635             }
26636         }
26637     },
26638
26639     replace: function(entity) {
26640         if (this.entities[entity.id] === entity)
26641             return this;
26642
26643         return this.update(function() {
26644             this._updateCalculated(this.entities[entity.id], entity);
26645             this.entities[entity.id] = entity;
26646         });
26647     },
26648
26649     remove: function(entity) {
26650         return this.update(function() {
26651             this._updateCalculated(entity, undefined);
26652             this.entities[entity.id] = undefined;
26653         });
26654     },
26655
26656     revert: function(id) {
26657         var baseEntity = this.base().entities[id],
26658             headEntity = this.entities[id];
26659
26660         if (headEntity === baseEntity)
26661             return this;
26662
26663         return this.update(function() {
26664             this._updateCalculated(headEntity, baseEntity);
26665             delete this.entities[id];
26666         });
26667     },
26668
26669     update: function() {
26670         var graph = this.frozen ? iD.Graph(this, true) : this;
26671
26672         for (var i = 0; i < arguments.length; i++) {
26673             arguments[i].call(graph, graph);
26674         }
26675
26676         if (this.frozen) graph.frozen = true;
26677
26678         return graph;
26679     },
26680
26681     // Obliterates any existing entities
26682     load: function(entities) {
26683         var base = this.base();
26684         this.entities = Object.create(base.entities);
26685
26686         for (var i in entities) {
26687             this.entities[i] = entities[i];
26688             this._updateCalculated(base.entities[i], this.entities[i]);
26689         }
26690
26691         return this;
26692     }
26693 };
26694 iD.History = function(context) {
26695     var stack, index, tree,
26696         imageryUsed = ['Bing'],
26697         dispatch = d3.dispatch('change', 'undone', 'redone'),
26698         lock = iD.util.SessionMutex('lock');
26699
26700     function perform(actions) {
26701         actions = Array.prototype.slice.call(actions);
26702
26703         var annotation;
26704
26705         if (!_.isFunction(_.last(actions))) {
26706             annotation = actions.pop();
26707         }
26708
26709         var graph = stack[index].graph;
26710         for (var i = 0; i < actions.length; i++) {
26711             graph = actions[i](graph);
26712         }
26713
26714         return {
26715             graph: graph,
26716             annotation: annotation,
26717             imageryUsed: imageryUsed
26718         };
26719     }
26720
26721     function change(previous) {
26722         var difference = iD.Difference(previous, history.graph());
26723         dispatch.change(difference);
26724         return difference;
26725     }
26726
26727     // iD uses namespaced keys so multiple installations do not conflict
26728     function getKey(n) {
26729         return 'iD_' + window.location.origin + '_' + n;
26730     }
26731
26732     var history = {
26733         graph: function() {
26734             return stack[index].graph;
26735         },
26736
26737         base: function() {
26738             return stack[0].graph;
26739         },
26740
26741         merge: function(entities, extent) {
26742             stack[0].graph.rebase(entities, _.pluck(stack, 'graph'), false);
26743             tree.rebase(entities, false);
26744
26745             dispatch.change(undefined, extent);
26746         },
26747
26748         perform: function() {
26749             var previous = stack[index].graph;
26750
26751             stack = stack.slice(0, index + 1);
26752             stack.push(perform(arguments));
26753             index++;
26754
26755             return change(previous);
26756         },
26757
26758         replace: function() {
26759             var previous = stack[index].graph;
26760
26761             // assert(index == stack.length - 1)
26762             stack[index] = perform(arguments);
26763
26764             return change(previous);
26765         },
26766
26767         pop: function() {
26768             var previous = stack[index].graph;
26769
26770             if (index > 0) {
26771                 index--;
26772                 stack.pop();
26773                 return change(previous);
26774             }
26775         },
26776
26777         // Same as calling pop and then perform
26778         overwrite: function() {
26779             var previous = stack[index].graph;
26780
26781             if (index > 0) {
26782                 index--;
26783                 stack.pop();
26784             }
26785             stack = stack.slice(0, index + 1);
26786             stack.push(perform(arguments));
26787             index++;
26788
26789             return change(previous);
26790         },
26791
26792         undo: function() {
26793             var previous = stack[index].graph;
26794
26795             // Pop to the next annotated state.
26796             while (index > 0) {
26797                 index--;
26798                 if (stack[index].annotation) break;
26799             }
26800
26801             dispatch.undone();
26802             return change(previous);
26803         },
26804
26805         redo: function() {
26806             var previous = stack[index].graph;
26807
26808             while (index < stack.length - 1) {
26809                 index++;
26810                 if (stack[index].annotation) break;
26811             }
26812
26813             dispatch.redone();
26814             return change(previous);
26815         },
26816
26817         undoAnnotation: function() {
26818             var i = index;
26819             while (i >= 0) {
26820                 if (stack[i].annotation) return stack[i].annotation;
26821                 i--;
26822             }
26823         },
26824
26825         redoAnnotation: function() {
26826             var i = index + 1;
26827             while (i <= stack.length - 1) {
26828                 if (stack[i].annotation) return stack[i].annotation;
26829                 i++;
26830             }
26831         },
26832
26833         intersects: function(extent) {
26834             return tree.intersects(extent, stack[index].graph);
26835         },
26836
26837         difference: function() {
26838             var base = stack[0].graph,
26839                 head = stack[index].graph;
26840             return iD.Difference(base, head);
26841         },
26842
26843         changes: function(action) {
26844             var base = stack[0].graph,
26845                 head = stack[index].graph;
26846
26847             if (action) {
26848                 head = action(head);
26849             }
26850
26851             var difference = iD.Difference(base, head);
26852
26853             return {
26854                 modified: difference.modified(),
26855                 created: difference.created(),
26856                 deleted: difference.deleted()
26857             };
26858         },
26859
26860         validate: function(changes) {
26861             return _(iD.validations)
26862                 .map(function(fn) { return fn()(changes, stack[index].graph); })
26863                 .flatten()
26864                 .value();
26865         },
26866
26867         hasChanges: function() {
26868             return this.difference().length() > 0;
26869         },
26870
26871         imageryUsed: function(sources) {
26872             if (sources) {
26873                 imageryUsed = sources;
26874                 return history;
26875             } else {
26876                 return _(stack.slice(1, index + 1))
26877                     .pluck('imageryUsed')
26878                     .flatten()
26879                     .unique()
26880                     .without(undefined, 'Custom')
26881                     .value();
26882             }
26883         },
26884
26885         reset: function() {
26886             stack = [{graph: iD.Graph()}];
26887             index = 0;
26888             tree = iD.Tree(stack[0].graph);
26889             dispatch.change();
26890             return history;
26891         },
26892
26893         toJSON: function() {
26894             if (!this.hasChanges()) return;
26895
26896             var allEntities = {},
26897                 baseEntities = {},
26898                 base = stack[0];
26899
26900             var s = stack.map(function(i) {
26901                 var modified = [], deleted = [];
26902
26903                 _.forEach(i.graph.entities, function(entity, id) {
26904                     if (entity) {
26905                         var key = iD.Entity.key(entity);
26906                         allEntities[key] = entity;
26907                         modified.push(key);
26908                     } else {
26909                         deleted.push(id);
26910                     }
26911
26912                     // make sure that the originals of changed or deleted entities get merged
26913                     // into the base of the stack after restoring the data from JSON.
26914                     if (id in base.graph.entities) {
26915                         baseEntities[id] = base.graph.entities[id];
26916                     }
26917                     // get originals of parent entities too
26918                     _.forEach(base.graph._parentWays[id], function(parentId) {
26919                         if (parentId in base.graph.entities) {
26920                             baseEntities[parentId] = base.graph.entities[parentId];
26921                         }
26922                     });
26923                 });
26924
26925                 var x = {};
26926
26927                 if (modified.length) x.modified = modified;
26928                 if (deleted.length) x.deleted = deleted;
26929                 if (i.imageryUsed) x.imageryUsed = i.imageryUsed;
26930                 if (i.annotation) x.annotation = i.annotation;
26931
26932                 return x;
26933             });
26934
26935             return JSON.stringify({
26936                 version: 3,
26937                 entities: _.values(allEntities),
26938                 baseEntities: _.values(baseEntities),
26939                 stack: s,
26940                 nextIDs: iD.Entity.id.next,
26941                 index: index
26942             });
26943         },
26944
26945         fromJSON: function(json, loadChildNodes) {
26946             var h = JSON.parse(json);
26947
26948             iD.Entity.id.next = h.nextIDs;
26949             index = h.index;
26950
26951             if (h.version === 2 || h.version === 3) {
26952                 var allEntities = {};
26953
26954                 h.entities.forEach(function(entity) {
26955                     allEntities[iD.Entity.key(entity)] = iD.Entity(entity);
26956                 });
26957
26958                 if (h.version === 3) {
26959                     // This merges originals for changed entities into the base of
26960                     // the stack even if the current stack doesn't have them (for
26961                     // example when iD has been restarted in a different region)
26962                     var baseEntities = h.baseEntities.map(function(entity) {
26963                         return iD.Entity(entity);
26964                     });
26965                     stack[0].graph.rebase(baseEntities, _.pluck(stack, 'graph'), true);
26966                     tree.rebase(baseEntities, true);
26967
26968                     // When we restore a modified way, we also need to fetch any missing
26969                     // childnodes that would normally have been downloaded with it.. #2142
26970                     if (loadChildNodes) {
26971                         var missing =  _(baseEntities)
26972                                 .filter('type', 'way')
26973                                 .pluck('nodes')
26974                                 .flatten()
26975                                 .uniq()
26976                                 .reject(function(n) { return stack[0].graph.hasEntity(n); })
26977                                 .value();
26978
26979                         if (!_.isEmpty(missing)) {
26980                             var childNodesLoaded = function(err, result) {
26981                                 if (err) return;
26982
26983                                 var visible = _.groupBy(result.data, 'visible');
26984                                 if (!_.isEmpty(visible.true)) {
26985                                     stack[0].graph.rebase(visible.true, _.pluck(stack, 'graph'), false);
26986                                     tree.rebase(visible.true, false);
26987                                 }
26988
26989                                 // fetch older versions of nodes that were deleted..
26990                                 _.each(visible.false, function(entity) {
26991                                     context.connection()
26992                                         .loadEntityVersion(entity.id, +entity.version - 1, childNodesLoaded);
26993                                 });
26994                             };
26995
26996                             context.connection().loadMultiple(missing, childNodesLoaded);
26997                         }
26998                     }
26999                 }
27000
27001                 stack = h.stack.map(function(d) {
27002                     var entities = {}, entity;
27003
27004                     if (d.modified) {
27005                         d.modified.forEach(function(key) {
27006                             entity = allEntities[key];
27007                             entities[entity.id] = entity;
27008                         });
27009                     }
27010
27011                     if (d.deleted) {
27012                         d.deleted.forEach(function(id) {
27013                             entities[id] = undefined;
27014                         });
27015                     }
27016
27017                     return {
27018                         graph: iD.Graph(stack[0].graph).load(entities),
27019                         annotation: d.annotation,
27020                         imageryUsed: d.imageryUsed
27021                     };
27022                 });
27023             } else { // original version
27024                 stack = h.stack.map(function(d) {
27025                     var entities = {};
27026
27027                     for (var i in d.entities) {
27028                         var entity = d.entities[i];
27029                         entities[i] = entity === 'undefined' ? undefined : iD.Entity(entity);
27030                     }
27031
27032                     d.graph = iD.Graph(stack[0].graph).load(entities);
27033                     return d;
27034                 });
27035             }
27036
27037             dispatch.change();
27038
27039             return history;
27040         },
27041
27042         save: function() {
27043             if (lock.locked()) context.storage(getKey('saved_history'), history.toJSON() || null);
27044             return history;
27045         },
27046
27047         clearSaved: function() {
27048             if (lock.locked()) context.storage(getKey('saved_history'), null);
27049             return history;
27050         },
27051
27052         lock: function() {
27053             return lock.lock();
27054         },
27055
27056         unlock: function() {
27057             lock.unlock();
27058         },
27059
27060         // is iD not open in another window and it detects that
27061         // there's a history stored in localStorage that's recoverable?
27062         restorableChanges: function() {
27063             return lock.locked() && !!context.storage(getKey('saved_history'));
27064         },
27065
27066         // load history from a version stored in localStorage
27067         restore: function() {
27068             if (!lock.locked()) return;
27069
27070             var json = context.storage(getKey('saved_history'));
27071             if (json) history.fromJSON(json, true);
27072         },
27073
27074         _getKey: getKey
27075
27076     };
27077
27078     history.reset();
27079
27080     return d3.rebind(history, dispatch, 'on');
27081 };
27082 iD.Node = iD.Entity.node = function iD_Node() {
27083     if (!(this instanceof iD_Node)) {
27084         return (new iD_Node()).initialize(arguments);
27085     } else if (arguments.length) {
27086         this.initialize(arguments);
27087     }
27088 };
27089
27090 iD.Node.prototype = Object.create(iD.Entity.prototype);
27091
27092 _.extend(iD.Node.prototype, {
27093     type: 'node',
27094
27095     extent: function() {
27096         return new iD.geo.Extent(this.loc);
27097     },
27098
27099     geometry: function(graph) {
27100         return graph.transient(this, 'geometry', function() {
27101             return graph.isPoi(this) ? 'point' : 'vertex';
27102         });
27103     },
27104
27105     move: function(loc) {
27106         return this.update({loc: loc});
27107     },
27108
27109     isIntersection: function(resolver) {
27110         return resolver.transient(this, 'isIntersection', function() {
27111             return resolver.parentWays(this).filter(function(parent) {
27112                 return (parent.tags.highway ||
27113                     parent.tags.waterway ||
27114                     parent.tags.railway ||
27115                     parent.tags.aeroway) &&
27116                     parent.geometry(resolver) === 'line';
27117             }).length > 1;
27118         });
27119     },
27120
27121     isHighwayIntersection: function(resolver) {
27122         return resolver.transient(this, 'isHighwayIntersection', function() {
27123             return resolver.parentWays(this).filter(function(parent) {
27124                 return parent.tags.highway && parent.geometry(resolver) === 'line';
27125             }).length > 1;
27126         });
27127     },
27128
27129     asJXON: function(changeset_id) {
27130         var r = {
27131             node: {
27132                 '@id': this.osmId(),
27133                 '@lon': this.loc[0],
27134                 '@lat': this.loc[1],
27135                 '@version': (this.version || 0),
27136                 tag: _.map(this.tags, function(v, k) {
27137                     return { keyAttributes: { k: k, v: v } };
27138                 })
27139             }
27140         };
27141         if (changeset_id) r.node['@changeset'] = changeset_id;
27142         return r;
27143     },
27144
27145     asGeoJSON: function() {
27146         return {
27147             type: 'Point',
27148             coordinates: this.loc
27149         };
27150     }
27151 });
27152 iD.oneWayTags = {
27153     'aerialway': {
27154         'chair_lift': true,
27155         'mixed_lift': true,
27156         't-bar': true,
27157         'j-bar': true,
27158         'platter': true,
27159         'rope_tow': true,
27160         'magic_carpet': true,
27161         'yes': true
27162     },
27163     'highway': {
27164         'motorway': true,
27165         'motorway_link': true
27166     },
27167     'junction': {
27168         'roundabout': true
27169     },
27170     'man_made': {
27171         'piste:halfpipe': true
27172     },
27173     'piste:type': {
27174         'downhill': true,
27175         'sled': true,
27176         'yes': true
27177     },
27178     'waterway': {
27179         'river': true,
27180         'stream': true
27181     }
27182 };
27183 iD.Relation = iD.Entity.relation = function iD_Relation() {
27184     if (!(this instanceof iD_Relation)) {
27185         return (new iD_Relation()).initialize(arguments);
27186     } else if (arguments.length) {
27187         this.initialize(arguments);
27188     }
27189 };
27190
27191 iD.Relation.prototype = Object.create(iD.Entity.prototype);
27192
27193 iD.Relation.creationOrder = function(a, b) {
27194     var aId = parseInt(iD.Entity.id.toOSM(a.id), 10);
27195     var bId = parseInt(iD.Entity.id.toOSM(b.id), 10);
27196
27197     if (aId < 0 || bId < 0) return aId - bId;
27198     return bId - aId;
27199 };
27200
27201 _.extend(iD.Relation.prototype, {
27202     type: 'relation',
27203     members: [],
27204
27205     copy: function(deep, resolver, replacements) {
27206         var copy = iD.Entity.prototype.copy.call(this);
27207         if (!deep || !resolver || !this.isComplete(resolver)) {
27208             return copy;
27209         }
27210
27211         var members = [],
27212             i, oldmember, oldid, newid, children;
27213
27214         replacements = replacements || {};
27215         replacements[this.id] = copy[0].id;
27216
27217         for (i = 0; i < this.members.length; i++) {
27218             oldmember = this.members[i];
27219             oldid = oldmember.id;
27220             newid = replacements[oldid];
27221             if (!newid) {
27222                 children = resolver.entity(oldid).copy(true, resolver, replacements);
27223                 newid = replacements[oldid] = children[0].id;
27224                 copy = copy.concat(children);
27225             }
27226             members.push({id: newid, type: oldmember.type, role: oldmember.role});
27227         }
27228
27229         copy[0] = copy[0].update({members: members});
27230         return copy;
27231     },
27232
27233     extent: function(resolver, memo) {
27234         return resolver.transient(this, 'extent', function() {
27235             if (memo && memo[this.id]) return iD.geo.Extent();
27236             memo = memo || {};
27237             memo[this.id] = true;
27238
27239             var extent = iD.geo.Extent();
27240             for (var i = 0; i < this.members.length; i++) {
27241                 var member = resolver.hasEntity(this.members[i].id);
27242                 if (member) {
27243                     extent._extend(member.extent(resolver, memo));
27244                 }
27245             }
27246             return extent;
27247         });
27248     },
27249
27250     geometry: function(graph) {
27251         return graph.transient(this, 'geometry', function() {
27252             return this.isMultipolygon() ? 'area' : 'relation';
27253         });
27254     },
27255
27256     isDegenerate: function() {
27257         return this.members.length === 0;
27258     },
27259
27260     // Return an array of members, each extended with an 'index' property whose value
27261     // is the member index.
27262     indexedMembers: function() {
27263         var result = new Array(this.members.length);
27264         for (var i = 0; i < this.members.length; i++) {
27265             result[i] = _.extend({}, this.members[i], {index: i});
27266         }
27267         return result;
27268     },
27269
27270     // Return the first member with the given role. A copy of the member object
27271     // is returned, extended with an 'index' property whose value is the member index.
27272     memberByRole: function(role) {
27273         for (var i = 0; i < this.members.length; i++) {
27274             if (this.members[i].role === role) {
27275                 return _.extend({}, this.members[i], {index: i});
27276             }
27277         }
27278     },
27279
27280     // Return the first member with the given id. A copy of the member object
27281     // is returned, extended with an 'index' property whose value is the member index.
27282     memberById: function(id) {
27283         for (var i = 0; i < this.members.length; i++) {
27284             if (this.members[i].id === id) {
27285                 return _.extend({}, this.members[i], {index: i});
27286             }
27287         }
27288     },
27289
27290     // Return the first member with the given id and role. A copy of the member object
27291     // is returned, extended with an 'index' property whose value is the member index.
27292     memberByIdAndRole: function(id, role) {
27293         for (var i = 0; i < this.members.length; i++) {
27294             if (this.members[i].id === id && this.members[i].role === role) {
27295                 return _.extend({}, this.members[i], {index: i});
27296             }
27297         }
27298     },
27299
27300     addMember: function(member, index) {
27301         var members = this.members.slice();
27302         members.splice(index === undefined ? members.length : index, 0, member);
27303         return this.update({members: members});
27304     },
27305
27306     updateMember: function(member, index) {
27307         var members = this.members.slice();
27308         members.splice(index, 1, _.extend({}, members[index], member));
27309         return this.update({members: members});
27310     },
27311
27312     removeMember: function(index) {
27313         var members = this.members.slice();
27314         members.splice(index, 1);
27315         return this.update({members: members});
27316     },
27317
27318     removeMembersWithID: function(id) {
27319         var members = _.reject(this.members, function(m) { return m.id === id; });
27320         return this.update({members: members});
27321     },
27322
27323     // Wherever a member appears with id `needle.id`, replace it with a member
27324     // with id `replacement.id`, type `replacement.type`, and the original role,
27325     // unless a member already exists with that id and role. Return an updated
27326     // relation.
27327     replaceMember: function(needle, replacement) {
27328         if (!this.memberById(needle.id))
27329             return this;
27330
27331         var members = [];
27332
27333         for (var i = 0; i < this.members.length; i++) {
27334             var member = this.members[i];
27335             if (member.id !== needle.id) {
27336                 members.push(member);
27337             } else if (!this.memberByIdAndRole(replacement.id, member.role)) {
27338                 members.push({id: replacement.id, type: replacement.type, role: member.role});
27339             }
27340         }
27341
27342         return this.update({members: members});
27343     },
27344
27345     asJXON: function(changeset_id) {
27346         var r = {
27347             relation: {
27348                 '@id': this.osmId(),
27349                 '@version': this.version || 0,
27350                 member: _.map(this.members, function(member) {
27351                     return { keyAttributes: { type: member.type, role: member.role, ref: iD.Entity.id.toOSM(member.id) } };
27352                 }),
27353                 tag: _.map(this.tags, function(v, k) {
27354                     return { keyAttributes: { k: k, v: v } };
27355                 })
27356             }
27357         };
27358         if (changeset_id) r.relation['@changeset'] = changeset_id;
27359         return r;
27360     },
27361
27362     asGeoJSON: function(resolver) {
27363         return resolver.transient(this, 'GeoJSON', function () {
27364             if (this.isMultipolygon()) {
27365                 return {
27366                     type: 'MultiPolygon',
27367                     coordinates: this.multipolygon(resolver)
27368                 };
27369             } else {
27370                 return {
27371                     type: 'FeatureCollection',
27372                     properties: this.tags,
27373                     features: this.members.map(function (member) {
27374                         return _.extend({role: member.role}, resolver.entity(member.id).asGeoJSON(resolver));
27375                     })
27376                 };
27377             }
27378         });
27379     },
27380
27381     area: function(resolver) {
27382         return resolver.transient(this, 'area', function() {
27383             return d3.geo.area(this.asGeoJSON(resolver));
27384         });
27385     },
27386
27387     isMultipolygon: function() {
27388         return this.tags.type === 'multipolygon';
27389     },
27390
27391     isComplete: function(resolver) {
27392         for (var i = 0; i < this.members.length; i++) {
27393             if (!resolver.hasEntity(this.members[i].id)) {
27394                 return false;
27395             }
27396         }
27397         return true;
27398     },
27399
27400     isRestriction: function() {
27401         return !!(this.tags.type && this.tags.type.match(/^restriction:?/));
27402     },
27403
27404     // Returns an array [A0, ... An], each Ai being an array of node arrays [Nds0, ... Ndsm],
27405     // where Nds0 is an outer ring and subsequent Ndsi's (if any i > 0) being inner rings.
27406     //
27407     // This corresponds to the structure needed for rendering a multipolygon path using a
27408     // `evenodd` fill rule, as well as the structure of a GeoJSON MultiPolygon geometry.
27409     //
27410     // In the case of invalid geometries, this function will still return a result which
27411     // includes the nodes of all way members, but some Nds may be unclosed and some inner
27412     // rings not matched with the intended outer ring.
27413     //
27414     multipolygon: function(resolver) {
27415         var outers = this.members.filter(function(m) { return 'outer' === (m.role || 'outer'); }),
27416             inners = this.members.filter(function(m) { return 'inner' === m.role; });
27417
27418         outers = iD.geo.joinWays(outers, resolver);
27419         inners = iD.geo.joinWays(inners, resolver);
27420
27421         outers = outers.map(function(outer) { return _.pluck(outer.nodes, 'loc'); });
27422         inners = inners.map(function(inner) { return _.pluck(inner.nodes, 'loc'); });
27423
27424         var result = outers.map(function(o) {
27425             // Heuristic for detecting counterclockwise winding order. Assumes
27426             // that OpenStreetMap polygons are not hemisphere-spanning.
27427             return [d3.geo.area({type: 'Polygon', coordinates: [o]}) > 2 * Math.PI ? o.reverse() : o];
27428         });
27429
27430         function findOuter(inner) {
27431             var o, outer;
27432
27433             for (o = 0; o < outers.length; o++) {
27434                 outer = outers[o];
27435                 if (iD.geo.polygonContainsPolygon(outer, inner))
27436                     return o;
27437             }
27438
27439             for (o = 0; o < outers.length; o++) {
27440                 outer = outers[o];
27441                 if (iD.geo.polygonIntersectsPolygon(outer, inner))
27442                     return o;
27443             }
27444         }
27445
27446         for (var i = 0; i < inners.length; i++) {
27447             var inner = inners[i];
27448
27449             if (d3.geo.area({type: 'Polygon', coordinates: [inner]}) < 2 * Math.PI) {
27450                 inner = inner.reverse();
27451             }
27452
27453             var o = findOuter(inners[i]);
27454             if (o !== undefined)
27455                 result[o].push(inners[i]);
27456             else
27457                 result.push([inners[i]]); // Invalid geometry
27458         }
27459
27460         return result;
27461     }
27462 });
27463 iD.Tree = function(head) {
27464     var rtree = rbush(),
27465         rectangles = {};
27466
27467     function extentRectangle(extent) {
27468         return [
27469             extent[0][0],
27470             extent[0][1],
27471             extent[1][0],
27472             extent[1][1]
27473         ];
27474     }
27475
27476     function entityRectangle(entity) {
27477         var rect = extentRectangle(entity.extent(head));
27478         rect.id = entity.id;
27479         rectangles[entity.id] = rect;
27480         return rect;
27481     }
27482
27483     function updateParents(entity, insertions, memo) {
27484         head.parentWays(entity).forEach(function(parent) {
27485             if (rectangles[parent.id]) {
27486                 rtree.remove(rectangles[parent.id]);
27487                 insertions[parent.id] = parent;
27488             }
27489         });
27490
27491         head.parentRelations(entity).forEach(function(parent) {
27492             if (memo[entity.id]) return;
27493             memo[entity.id] = true;
27494             if (rectangles[parent.id]) {
27495                 rtree.remove(rectangles[parent.id]);
27496                 insertions[parent.id] = parent;
27497             }
27498             updateParents(parent, insertions, memo);
27499         });
27500     }
27501
27502     var tree = {};
27503
27504     tree.rebase = function(entities, force) {
27505         var insertions = {};
27506
27507         for (var i = 0; i < entities.length; i++) {
27508             var entity = entities[i];
27509
27510             if (!entity.visible)
27511                 continue;
27512
27513             if (head.entities.hasOwnProperty(entity.id) || rectangles[entity.id]) {
27514                 if (!force) {
27515                     continue;
27516                 } else if (rectangles[entity.id]) {
27517                     rtree.remove(rectangles[entity.id]);
27518                 }
27519             }
27520
27521             insertions[entity.id] = entity;
27522             updateParents(entity, insertions, {});
27523         }
27524
27525         rtree.load(_.map(insertions, entityRectangle));
27526
27527         return tree;
27528     };
27529
27530     tree.intersects = function(extent, graph) {
27531         if (graph !== head) {
27532             var diff = iD.Difference(head, graph),
27533                 insertions = {};
27534
27535             head = graph;
27536
27537             diff.deleted().forEach(function(entity) {
27538                 rtree.remove(rectangles[entity.id]);
27539                 delete rectangles[entity.id];
27540             });
27541
27542             diff.modified().forEach(function(entity) {
27543                 rtree.remove(rectangles[entity.id]);
27544                 insertions[entity.id] = entity;
27545                 updateParents(entity, insertions, {});
27546             });
27547
27548             diff.created().forEach(function(entity) {
27549                 insertions[entity.id] = entity;
27550             });
27551
27552             rtree.load(_.map(insertions, entityRectangle));
27553         }
27554
27555         return rtree.search(extentRectangle(extent)).map(function(rect) {
27556             return head.entity(rect.id);
27557         });
27558     };
27559
27560     return tree;
27561 };
27562 iD.Way = iD.Entity.way = function iD_Way() {
27563     if (!(this instanceof iD_Way)) {
27564         return (new iD_Way()).initialize(arguments);
27565     } else if (arguments.length) {
27566         this.initialize(arguments);
27567     }
27568 };
27569
27570 iD.Way.prototype = Object.create(iD.Entity.prototype);
27571
27572 _.extend(iD.Way.prototype, {
27573     type: 'way',
27574     nodes: [],
27575
27576     copy: function(deep, resolver) {
27577         var copy = iD.Entity.prototype.copy.call(this);
27578
27579         if (!deep || !resolver) {
27580             return copy;
27581         }
27582
27583         var nodes = [],
27584             replacements = {},
27585             i, oldid, newid, child;
27586
27587         for (i = 0; i < this.nodes.length; i++) {
27588             oldid = this.nodes[i];
27589             newid = replacements[oldid];
27590             if (!newid) {
27591                 child = resolver.entity(oldid).copy();
27592                 newid = replacements[oldid] = child[0].id;
27593                 copy = copy.concat(child);
27594             }
27595             nodes.push(newid);
27596         }
27597
27598         copy[0] = copy[0].update({nodes: nodes});
27599         return copy;
27600     },
27601
27602     extent: function(resolver) {
27603         return resolver.transient(this, 'extent', function() {
27604             var extent = iD.geo.Extent();
27605             for (var i = 0; i < this.nodes.length; i++) {
27606                 var node = resolver.hasEntity(this.nodes[i]);
27607                 if (node) {
27608                     extent._extend(node.extent());
27609                 }
27610             }
27611             return extent;
27612         });
27613     },
27614
27615     first: function() {
27616         return this.nodes[0];
27617     },
27618
27619     last: function() {
27620         return this.nodes[this.nodes.length - 1];
27621     },
27622
27623     contains: function(node) {
27624         return this.nodes.indexOf(node) >= 0;
27625     },
27626
27627     affix: function(node) {
27628         if (this.nodes[0] === node) return 'prefix';
27629         if (this.nodes[this.nodes.length - 1] === node) return 'suffix';
27630     },
27631
27632     layer: function() {
27633         // explicit layer tag, clamp between -10, 10..
27634         if (this.tags.layer !== undefined) {
27635             return Math.max(-10, Math.min(+(this.tags.layer), 10));
27636         }
27637
27638         // implied layer tag..
27639         if (this.tags.location === 'overground') return 1;
27640         if (this.tags.location === 'underground') return -1;
27641         if (this.tags.location === 'underwater') return -10;
27642
27643         if (this.tags.power === 'line') return 10;
27644         if (this.tags.power === 'minor_line') return 10;
27645         if (this.tags.aerialway) return 10;
27646         if (this.tags.bridge) return 1;
27647         if (this.tags.cutting) return -1;
27648         if (this.tags.tunnel) return -1;
27649         if (this.tags.waterway) return -1;
27650         if (this.tags.man_made === 'pipeline') return -10;
27651         if (this.tags.boundary) return -10;
27652         return 0;
27653     },
27654
27655     isOneWay: function() {
27656         // explicit oneway tag..
27657         if (['yes', '1', '-1'].indexOf(this.tags.oneway) !== -1) { return true; }
27658         if (['no', '0'].indexOf(this.tags.oneway) !== -1) { return false; }
27659
27660         // implied oneway tag..
27661         for (var key in this.tags) {
27662             if (key in iD.oneWayTags && (this.tags[key] in iD.oneWayTags[key]))
27663                 return true;
27664         }
27665         return false;
27666     },
27667
27668     isClosed: function() {
27669         return this.nodes.length > 0 && this.first() === this.last();
27670     },
27671
27672     isConvex: function(resolver) {
27673         if (!this.isClosed() || this.isDegenerate()) return null;
27674
27675         var nodes = _.uniq(resolver.childNodes(this)),
27676             coords = _.pluck(nodes, 'loc'),
27677             curr = 0, prev = 0;
27678
27679         for (var i = 0; i < coords.length; i++) {
27680             var o = coords[(i+1) % coords.length],
27681                 a = coords[i],
27682                 b = coords[(i+2) % coords.length],
27683                 res = iD.geo.cross(o, a, b);
27684
27685             curr = (res > 0) ? 1 : (res < 0) ? -1 : 0;
27686             if (curr === 0) {
27687                 continue;
27688             } else if (prev && curr !== prev) {
27689                 return false;
27690             }
27691             prev = curr;
27692         }
27693         return true;
27694     },
27695
27696     isArea: function() {
27697         if (this.tags.area === 'yes')
27698             return true;
27699         if (!this.isClosed() || this.tags.area === 'no')
27700             return false;
27701         for (var key in this.tags)
27702             if (key in iD.areaKeys && !(this.tags[key] in iD.areaKeys[key]))
27703                 return true;
27704         return false;
27705     },
27706
27707     isDegenerate: function() {
27708         return _.uniq(this.nodes).length < (this.isArea() ? 3 : 2);
27709     },
27710
27711     areAdjacent: function(n1, n2) {
27712         for (var i = 0; i < this.nodes.length; i++) {
27713             if (this.nodes[i] === n1) {
27714                 if (this.nodes[i - 1] === n2) return true;
27715                 if (this.nodes[i + 1] === n2) return true;
27716             }
27717         }
27718         return false;
27719     },
27720
27721     geometry: function(graph) {
27722         return graph.transient(this, 'geometry', function() {
27723             return this.isArea() ? 'area' : 'line';
27724         });
27725     },
27726
27727     addNode: function(id, index) {
27728         var nodes = this.nodes.slice();
27729         nodes.splice(index === undefined ? nodes.length : index, 0, id);
27730         return this.update({nodes: nodes});
27731     },
27732
27733     updateNode: function(id, index) {
27734         var nodes = this.nodes.slice();
27735         nodes.splice(index, 1, id);
27736         return this.update({nodes: nodes});
27737     },
27738
27739     replaceNode: function(needle, replacement) {
27740         if (this.nodes.indexOf(needle) < 0)
27741             return this;
27742
27743         var nodes = this.nodes.slice();
27744         for (var i = 0; i < nodes.length; i++) {
27745             if (nodes[i] === needle) {
27746                 nodes[i] = replacement;
27747             }
27748         }
27749         return this.update({nodes: nodes});
27750     },
27751
27752     removeNode: function(id) {
27753         var nodes = [];
27754
27755         for (var i = 0; i < this.nodes.length; i++) {
27756             var node = this.nodes[i];
27757             if (node !== id && nodes[nodes.length - 1] !== node) {
27758                 nodes.push(node);
27759             }
27760         }
27761
27762         // Preserve circularity
27763         if (this.nodes.length > 1 && this.first() === id && this.last() === id && nodes[nodes.length - 1] !== nodes[0]) {
27764             nodes.push(nodes[0]);
27765         }
27766
27767         return this.update({nodes: nodes});
27768     },
27769
27770     asJXON: function(changeset_id) {
27771         var r = {
27772             way: {
27773                 '@id': this.osmId(),
27774                 '@version': this.version || 0,
27775                 nd: _.map(this.nodes, function(id) {
27776                     return { keyAttributes: { ref: iD.Entity.id.toOSM(id) } };
27777                 }),
27778                 tag: _.map(this.tags, function(v, k) {
27779                     return { keyAttributes: { k: k, v: v } };
27780                 })
27781             }
27782         };
27783         if (changeset_id) r.way['@changeset'] = changeset_id;
27784         return r;
27785     },
27786
27787     asGeoJSON: function(resolver) {
27788         return resolver.transient(this, 'GeoJSON', function() {
27789             var coordinates = _.pluck(resolver.childNodes(this), 'loc');
27790             if (this.isArea() && this.isClosed()) {
27791                 return {
27792                     type: 'Polygon',
27793                     coordinates: [coordinates]
27794                 };
27795             } else {
27796                 return {
27797                     type: 'LineString',
27798                     coordinates: coordinates
27799                 };
27800             }
27801         });
27802     },
27803
27804     area: function(resolver) {
27805         return resolver.transient(this, 'area', function() {
27806             var nodes = resolver.childNodes(this);
27807
27808             var json = {
27809                 type: 'Polygon',
27810                 coordinates: [_.pluck(nodes, 'loc')]
27811             };
27812
27813             if (!this.isClosed() && nodes.length) {
27814                 json.coordinates[0].push(nodes[0].loc);
27815             }
27816
27817             var area = d3.geo.area(json);
27818
27819             // Heuristic for detecting counterclockwise winding order. Assumes
27820             // that OpenStreetMap polygons are not hemisphere-spanning.
27821             if (area > 2 * Math.PI) {
27822                 json.coordinates[0] = json.coordinates[0].reverse();
27823                 area = d3.geo.area(json);
27824             }
27825
27826             return isNaN(area) ? 0 : area;
27827         });
27828     }
27829 });
27830 iD.Background = function(context) {
27831     var dispatch = d3.dispatch('change'),
27832         baseLayer = iD.TileLayer()
27833             .projection(context.projection),
27834         gpxLayer = iD.GpxLayer(context, dispatch)
27835             .projection(context.projection),
27836         mapillaryLayer = iD.MapillaryLayer(context),
27837         overlayLayers = [];
27838
27839     var backgroundSources;
27840
27841     function findSource(id) {
27842         return _.find(backgroundSources, function(d) {
27843             return d.id && d.id === id;
27844         });
27845     }
27846
27847     function updateImagery() {
27848         var b = background.baseLayerSource(),
27849             o = overlayLayers.map(function (d) { return d.source().id; }).join(','),
27850             q = iD.util.stringQs(location.hash.substring(1));
27851
27852         var id = b.id;
27853         if (id === 'custom') {
27854             id = 'custom:' + b.template;
27855         }
27856
27857         if (id) {
27858             q.background = id;
27859         } else {
27860             delete q.background;
27861         }
27862
27863         if (o) {
27864             q.overlays = o;
27865         } else {
27866             delete q.overlays;
27867         }
27868
27869         location.replace('#' + iD.util.qsString(q, true));
27870
27871         var imageryUsed = [b.imageryUsed()];
27872
27873         overlayLayers.forEach(function (d) {
27874             var source = d.source();
27875             if (!source.isLocatorOverlay()) {
27876                 imageryUsed.push(source.imageryUsed());
27877             }
27878         });
27879
27880         if (background.showsGpxLayer()) {
27881             imageryUsed.push('Local GPX');
27882         }
27883
27884         context.history().imageryUsed(imageryUsed);
27885     }
27886
27887     function background(selection) {
27888         var base = selection.selectAll('.background-layer')
27889             .data([0]);
27890
27891         base.enter().insert('div', '.layer-data')
27892             .attr('class', 'layer-layer background-layer');
27893
27894         base.call(baseLayer);
27895
27896         var overlays = selection.selectAll('.layer-overlay')
27897             .data(overlayLayers, function(d) { return d.source().name(); });
27898
27899         overlays.enter().insert('div', '.layer-data')
27900             .attr('class', 'layer-layer layer-overlay');
27901
27902         overlays.each(function(layer) {
27903             d3.select(this).call(layer);
27904         });
27905
27906         overlays.exit()
27907             .remove();
27908
27909         var gpx = selection.selectAll('.layer-gpx')
27910             .data([0]);
27911
27912         gpx.enter().insert('div')
27913             .attr('class', 'layer-layer layer-gpx');
27914
27915         gpx.call(gpxLayer);
27916
27917         var mapillary = selection.selectAll('.layer-mapillary')
27918             .data([0]);
27919
27920         mapillary.enter().insert('div')
27921             .attr('class', 'layer-layer layer-mapillary');
27922
27923         mapillary.call(mapillaryLayer);
27924     }
27925
27926     background.sources = function(extent) {
27927         return backgroundSources.filter(function(source) {
27928             return source.intersects(extent);
27929         });
27930     };
27931
27932     background.dimensions = function(_) {
27933         baseLayer.dimensions(_);
27934         gpxLayer.dimensions(_);
27935         mapillaryLayer.dimensions(_);
27936
27937         overlayLayers.forEach(function(layer) {
27938             layer.dimensions(_);
27939         });
27940     };
27941
27942     background.baseLayerSource = function(d) {
27943         if (!arguments.length) return baseLayer.source();
27944
27945         baseLayer.source(d);
27946         dispatch.change();
27947         updateImagery();
27948
27949         return background;
27950     };
27951
27952     background.bing = function() {
27953         background.baseLayerSource(findSource('Bing'));
27954     };
27955
27956     background.hasGpxLayer = function() {
27957         return !_.isEmpty(gpxLayer.geojson());
27958     };
27959
27960     background.showsGpxLayer = function() {
27961         return background.hasGpxLayer() && gpxLayer.enable();
27962     };
27963
27964     function toDom(x) {
27965         return (new DOMParser()).parseFromString(x, 'text/xml');
27966     }
27967
27968     background.gpxLayerFiles = function(fileList) {
27969         var f = fileList[0],
27970             reader = new FileReader();
27971
27972         reader.onload = function(e) {
27973             gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
27974             iD.ui.MapInMap.gpxLayer.geojson(toGeoJSON.gpx(toDom(e.target.result)));
27975             background.zoomToGpxLayer();
27976             dispatch.change();
27977         };
27978
27979         reader.readAsText(f);
27980     };
27981
27982     background.zoomToGpxLayer = function() {
27983         if (background.hasGpxLayer()) {
27984             var map = context.map(),
27985                 viewport = map.trimmedExtent().polygon(),
27986                 coords = _.reduce(gpxLayer.geojson().features, function(coords, feature) {
27987                     var c = feature.geometry.coordinates;
27988                     return _.union(coords, feature.geometry.type === 'Point' ? [c] : c);
27989                 }, []);
27990
27991             if (!iD.geo.polygonIntersectsPolygon(viewport, coords, true)) {
27992                 var extent = iD.geo.Extent(d3.geo.bounds(gpxLayer.geojson()));
27993                 map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
27994             }
27995         }
27996     };
27997
27998     background.toggleGpxLayer = function() {
27999         gpxLayer.enable(!gpxLayer.enable());
28000         iD.ui.MapInMap.gpxLayer.enable(!iD.ui.MapInMap.gpxLayer.enable());
28001         dispatch.change();
28002     };
28003
28004     background.showsMapillaryLayer = function() {
28005         return mapillaryLayer.enable();
28006     };
28007
28008     background.toggleMapillaryLayer = function() {
28009         mapillaryLayer.enable(!mapillaryLayer.enable());
28010         dispatch.change();
28011     };
28012
28013     background.showsLayer = function(d) {
28014         return d === baseLayer.source() ||
28015             (d.id === 'custom' && baseLayer.source().id === 'custom') ||
28016             overlayLayers.some(function(l) { return l.source() === d; });
28017     };
28018
28019     background.overlayLayerSources = function() {
28020         return overlayLayers.map(function (l) { return l.source(); });
28021     };
28022
28023     background.toggleOverlayLayer = function(d) {
28024         var layer;
28025
28026         for (var i = 0; i < overlayLayers.length; i++) {
28027             layer = overlayLayers[i];
28028             if (layer.source() === d) {
28029                 overlayLayers.splice(i, 1);
28030                 dispatch.change();
28031                 updateImagery();
28032                 return;
28033             }
28034         }
28035
28036         layer = iD.TileLayer()
28037             .source(d)
28038             .projection(context.projection)
28039             .dimensions(baseLayer.dimensions());
28040
28041         overlayLayers.push(layer);
28042         dispatch.change();
28043         updateImagery();
28044     };
28045
28046     background.nudge = function(d, zoom) {
28047         baseLayer.source().nudge(d, zoom);
28048         dispatch.change();
28049         return background;
28050     };
28051
28052     background.offset = function(d) {
28053         if (!arguments.length) return baseLayer.source().offset();
28054         baseLayer.source().offset(d);
28055         dispatch.change();
28056         return background;
28057     };
28058
28059     background.load = function(imagery) {
28060         backgroundSources = imagery.map(function(source) {
28061             if (source.type === 'bing') {
28062                 return iD.BackgroundSource.Bing(source, dispatch);
28063             } else {
28064                 return iD.BackgroundSource(source);
28065             }
28066         });
28067
28068         backgroundSources.unshift(iD.BackgroundSource.None());
28069
28070         var q = iD.util.stringQs(location.hash.substring(1)),
28071             chosen = q.background || q.layer;
28072
28073         if (chosen && chosen.indexOf('custom:') === 0) {
28074             background.baseLayerSource(iD.BackgroundSource.Custom(chosen.replace(/^custom:/, '')));
28075         } else {
28076             background.baseLayerSource(findSource(chosen) || findSource('Bing') || backgroundSources[1]);
28077         }
28078
28079         var locator = _.find(backgroundSources, function(d) {
28080             return d.overlay && d.default;
28081         });
28082
28083         if (locator) {
28084             background.toggleOverlayLayer(locator);
28085         }
28086
28087         var overlays = (q.overlays || '').split(',');
28088         overlays.forEach(function(overlay) {
28089             overlay = findSource(overlay);
28090             if (overlay) background.toggleOverlayLayer(overlay);
28091         });
28092
28093         var gpx = q.gpx;
28094         if (gpx) {
28095             d3.text(gpx, function(err, gpxTxt) {
28096                 if (!err) {
28097                     gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28098                     iD.ui.MapInMap.gpxLayer.geojson(toGeoJSON.gpx(toDom(gpxTxt)));
28099                     dispatch.change();
28100                 }
28101             });
28102         }
28103     };
28104
28105     return d3.rebind(background, dispatch, 'on');
28106 };
28107 iD.BackgroundSource = function(data) {
28108     var source = _.clone(data),
28109         offset = [0, 0],
28110         name = source.name;
28111
28112     source.scaleExtent = data.scaleExtent || [0, 20];
28113     source.overzoom = data.overzoom !== false;
28114
28115     source.offset = function(_) {
28116         if (!arguments.length) return offset;
28117         offset = _;
28118         return source;
28119     };
28120
28121     source.nudge = function(_, zoomlevel) {
28122         offset[0] += _[0] / Math.pow(2, zoomlevel);
28123         offset[1] += _[1] / Math.pow(2, zoomlevel);
28124         return source;
28125     };
28126
28127     source.name = function() {
28128         return name;
28129     };
28130
28131     source.imageryUsed = function() {
28132         return source.id || name;
28133     };
28134
28135     source.url = function(coord) {
28136         return data.template
28137             .replace('{x}', coord[0])
28138             .replace('{y}', coord[1])
28139             // TMS-flipped y coordinate
28140             .replace(/\{[t-]y\}/, Math.pow(2, coord[2]) - coord[1] - 1)
28141             .replace(/\{z(oom)?\}/, coord[2])
28142             .replace(/\{switch:([^}]+)\}/, function(s, r) {
28143                 var subdomains = r.split(',');
28144                 return subdomains[(coord[0] + coord[1]) % subdomains.length];
28145             })
28146             .replace('{u}', function() {
28147                 var u = '';
28148                 for (var zoom = coord[2]; zoom > 0; zoom--) {
28149                     var b = 0;
28150                     var mask = 1 << (zoom - 1);
28151                     if ((coord[0] & mask) !== 0) b++;
28152                     if ((coord[1] & mask) !== 0) b += 2;
28153                     u += b.toString();
28154                 }
28155                 return u;
28156             });
28157     };
28158
28159     source.intersects = function(extent) {
28160         extent = extent.polygon();
28161         return !data.polygon || data.polygon.some(function(polygon) {
28162             return iD.geo.polygonIntersectsPolygon(polygon, extent, true);
28163         });
28164     };
28165
28166     source.validZoom = function(z) {
28167         return source.scaleExtent[0] <= z &&
28168             (source.overzoom || source.scaleExtent[1] > z);
28169     };
28170
28171     source.isLocatorOverlay = function() {
28172         return name === 'Locator Overlay';
28173     };
28174
28175     source.copyrightNotices = function() {};
28176
28177     return source;
28178 };
28179
28180 iD.BackgroundSource.Bing = function(data, dispatch) {
28181     // http://msdn.microsoft.com/en-us/library/ff701716.aspx
28182     // http://msdn.microsoft.com/en-us/library/ff701701.aspx
28183
28184     data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z';
28185
28186     var bing = iD.BackgroundSource(data),
28187         key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU', // Same as P2 and JOSM
28188         url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' +
28189             key + '&jsonp={callback}',
28190         providers = [];
28191
28192     d3.jsonp(url, function(json) {
28193         providers = json.resourceSets[0].resources[0].imageryProviders.map(function(provider) {
28194             return {
28195                 attribution: provider.attribution,
28196                 areas: provider.coverageAreas.map(function(area) {
28197                     return {
28198                         zoom: [area.zoomMin, area.zoomMax],
28199                         extent: iD.geo.Extent([area.bbox[1], area.bbox[0]], [area.bbox[3], area.bbox[2]])
28200                     };
28201                 })
28202             };
28203         });
28204         dispatch.change();
28205     });
28206
28207     bing.copyrightNotices = function(zoom, extent) {
28208         zoom = Math.min(zoom, 21);
28209         return providers.filter(function(provider) {
28210             return _.any(provider.areas, function(area) {
28211                 return extent.intersects(area.extent) &&
28212                     area.zoom[0] <= zoom &&
28213                     area.zoom[1] >= zoom;
28214             });
28215         }).map(function(provider) {
28216             return provider.attribution;
28217         }).join(', ');
28218     };
28219
28220     bing.logo = 'bing_maps.png';
28221     bing.terms_url = 'http://opengeodata.org/microsoft-imagery-details';
28222
28223     return bing;
28224 };
28225
28226 iD.BackgroundSource.None = function() {
28227     var source = iD.BackgroundSource({id: 'none', template: ''});
28228
28229     source.name = function() {
28230         return t('background.none');
28231     };
28232
28233     source.imageryUsed = function() {
28234         return 'None';
28235     };
28236
28237     return source;
28238 };
28239
28240 iD.BackgroundSource.Custom = function(template) {
28241     var source = iD.BackgroundSource({id: 'custom', template: template});
28242
28243     source.name = function() {
28244         return t('background.custom');
28245     };
28246
28247     source.imageryUsed = function() {
28248         return 'Custom (' + template + ')';
28249     };
28250
28251     return source;
28252 };
28253 iD.Features = function(context) {
28254     var major_roads = {
28255         'motorway': true,
28256         'motorway_link': true,
28257         'trunk': true,
28258         'trunk_link': true,
28259         'primary': true,
28260         'primary_link': true,
28261         'secondary': true,
28262         'secondary_link': true,
28263         'tertiary': true,
28264         'tertiary_link': true,
28265         'residential': true
28266     };
28267
28268     var minor_roads = {
28269         'service': true,
28270         'living_street': true,
28271         'road': true,
28272         'unclassified': true,
28273         'track': true
28274     };
28275
28276     var paths = {
28277         'path': true,
28278         'footway': true,
28279         'cycleway': true,
28280         'bridleway': true,
28281         'steps': true,
28282         'pedestrian': true,
28283         'corridor': true
28284     };
28285
28286     var past_futures = {
28287         'proposed': true,
28288         'construction': true,
28289         'abandoned': true,
28290         'dismantled': true,
28291         'disused': true,
28292         'razed': true,
28293         'demolished': true,
28294         'obliterated': true
28295     };
28296
28297     var dispatch = d3.dispatch('change', 'redraw'),
28298         _cullFactor = 1,
28299         _cache = {},
28300         _features = {},
28301         _stats = {},
28302         _keys = [],
28303         _hidden = [];
28304
28305     function update() {
28306         _hidden = features.hidden();
28307         dispatch.change();
28308         dispatch.redraw();
28309     }
28310
28311     function defineFeature(k, filter, max) {
28312         _keys.push(k);
28313         _features[k] = {
28314             filter: filter,
28315             enabled: true,   // whether the user wants it enabled..
28316             count: 0,
28317             currentMax: (max || Infinity),
28318             defaultMax: (max || Infinity),
28319             enable: function() { this.enabled = true; this.currentMax = this.defaultMax; },
28320             disable: function() { this.enabled = false; this.currentMax = 0; },
28321             hidden: function() { return !context.editable() || this.count > this.currentMax * _cullFactor; },
28322             autoHidden: function() { return this.hidden() && this.currentMax > 0; }
28323         };
28324     }
28325
28326
28327     defineFeature('points', function isPoint(entity, resolver, geometry) {
28328         return geometry === 'point';
28329     }, 200);
28330
28331     defineFeature('major_roads', function isMajorRoad(entity) {
28332         return major_roads[entity.tags.highway];
28333     });
28334
28335     defineFeature('minor_roads', function isMinorRoad(entity) {
28336         return minor_roads[entity.tags.highway];
28337     });
28338
28339     defineFeature('paths', function isPath(entity) {
28340         return paths[entity.tags.highway];
28341     });
28342
28343     defineFeature('buildings', function isBuilding(entity) {
28344         return (
28345             !!entity.tags['building:part'] ||
28346             (!!entity.tags.building && entity.tags.building !== 'no') ||
28347             entity.tags.amenity === 'shelter' ||
28348             entity.tags.parking === 'multi-storey' ||
28349             entity.tags.parking === 'sheds' ||
28350             entity.tags.parking === 'carports' ||
28351             entity.tags.parking === 'garage_boxes'
28352         );
28353     }, 250);
28354
28355     defineFeature('landuse', function isLanduse(entity, resolver, geometry) {
28356         return geometry === 'area' &&
28357             !_features.buildings.filter(entity) &&
28358             !_features.water.filter(entity);
28359     });
28360
28361     defineFeature('boundaries', function isBoundary(entity) {
28362         return !!entity.tags.boundary;
28363     });
28364
28365     defineFeature('water', function isWater(entity) {
28366         return (
28367             !!entity.tags.waterway ||
28368             entity.tags.natural === 'water' ||
28369             entity.tags.natural === 'coastline' ||
28370             entity.tags.natural === 'bay' ||
28371             entity.tags.landuse === 'pond' ||
28372             entity.tags.landuse === 'basin' ||
28373             entity.tags.landuse === 'reservoir' ||
28374             entity.tags.landuse === 'salt_pond'
28375         );
28376     });
28377
28378     defineFeature('rail', function isRail(entity) {
28379         return (
28380             !!entity.tags.railway ||
28381             entity.tags.landuse === 'railway'
28382         ) && !(
28383             major_roads[entity.tags.highway] ||
28384             minor_roads[entity.tags.highway] ||
28385             paths[entity.tags.highway]
28386         );
28387     });
28388
28389     defineFeature('power', function isPower(entity) {
28390         return !!entity.tags.power;
28391     });
28392
28393     // contains a past/future tag, but not in active use as a road/path/cycleway/etc..
28394     defineFeature('past_future', function isPastFuture(entity) {
28395         if (
28396             major_roads[entity.tags.highway] ||
28397             minor_roads[entity.tags.highway] ||
28398             paths[entity.tags.highway]
28399         ) { return false; }
28400
28401         var strings = Object.keys(entity.tags);
28402
28403         for (var i = 0; i < strings.length; i++) {
28404             var s = strings[i];
28405             if (past_futures[s] || past_futures[entity.tags[s]]) { return true; }
28406         }
28407         return false;
28408     });
28409
28410     // Lines or areas that don't match another feature filter.
28411     // IMPORTANT: The 'others' feature must be the last one defined,
28412     //   so that code in getMatches can skip this test if `hasMatch = true`
28413     defineFeature('others', function isOther(entity, resolver, geometry) {
28414         return (geometry === 'line' || geometry === 'area');
28415     });
28416
28417
28418     function features() {}
28419
28420     features.features = function() {
28421         return _features;
28422     };
28423
28424     features.keys = function() {
28425         return _keys;
28426     };
28427
28428     features.enabled = function(k) {
28429         if (!arguments.length) {
28430             return _.filter(_keys, function(k) { return _features[k].enabled; });
28431         }
28432         return _features[k] && _features[k].enabled;
28433     };
28434
28435     features.disabled = function(k) {
28436         if (!arguments.length) {
28437             return _.reject(_keys, function(k) { return _features[k].enabled; });
28438         }
28439         return _features[k] && !_features[k].enabled;
28440     };
28441
28442     features.hidden = function(k) {
28443         if (!arguments.length) {
28444             return _.filter(_keys, function(k) { return _features[k].hidden(); });
28445         }
28446         return _features[k] && _features[k].hidden();
28447     };
28448
28449     features.autoHidden = function(k) {
28450         if (!arguments.length) {
28451             return _.filter(_keys, function(k) { return _features[k].autoHidden(); });
28452         }
28453         return _features[k] && _features[k].autoHidden();
28454     };
28455
28456     features.enable = function(k) {
28457         if (_features[k] && !_features[k].enabled) {
28458             _features[k].enable();
28459             update();
28460         }
28461     };
28462
28463     features.disable = function(k) {
28464         if (_features[k] && _features[k].enabled) {
28465             _features[k].disable();
28466             update();
28467         }
28468     };
28469
28470     features.toggle = function(k) {
28471         if (_features[k]) {
28472             (function(f) { return f.enabled ? f.disable() : f.enable(); }(_features[k]));
28473             update();
28474         }
28475     };
28476
28477     features.resetStats = function() {
28478         _.each(_features, function(f) { f.count = 0; });
28479         dispatch.change();
28480     };
28481
28482     features.gatherStats = function(d, resolver, dimensions) {
28483         var needsRedraw = false,
28484             type = _.groupBy(d, function(ent) { return ent.type; }),
28485             entities = [].concat(type.relation || [], type.way || [], type.node || []),
28486             currHidden, geometry, matches;
28487
28488         _.each(_features, function(f) { f.count = 0; });
28489
28490         // adjust the threshold for point/building culling based on viewport size..
28491         // a _cullFactor of 1 corresponds to a 1000x1000px viewport..
28492         _cullFactor = dimensions[0] * dimensions[1] / 1000000;
28493
28494         for (var i = 0; i < entities.length; i++) {
28495             geometry = entities[i].geometry(resolver);
28496             if (!(geometry === 'vertex' || geometry === 'relation')) {
28497                 matches = Object.keys(features.getMatches(entities[i], resolver, geometry));
28498                 for (var j = 0; j < matches.length; j++) {
28499                     _features[matches[j]].count++;
28500                 }
28501             }
28502         }
28503
28504         currHidden = features.hidden();
28505         if (currHidden !== _hidden) {
28506             _hidden = currHidden;
28507             needsRedraw = true;
28508             dispatch.change();
28509         }
28510
28511         return needsRedraw;
28512     };
28513
28514     features.stats = function() {
28515         _.each(_keys, function(k) { _stats[k] = _features[k].count; });
28516         return _stats;
28517     };
28518
28519     features.clear = function(d) {
28520         for (var i = 0; i < d.length; i++) {
28521             features.clearEntity(d[i]);
28522         }
28523     };
28524
28525     features.clearEntity = function(entity) {
28526         delete _cache[iD.Entity.key(entity)];
28527     };
28528
28529     features.reset = function() {
28530         _cache = {};
28531     };
28532
28533     features.getMatches = function(entity, resolver, geometry) {
28534         var ent = iD.Entity.key(entity);
28535
28536         if (!_cache[ent]) {
28537             _cache[ent] = {};
28538         }
28539         if (!_cache[ent].matches) {
28540             var matches = {},
28541                 hasMatch = false;
28542
28543             if (!(geometry === 'vertex' || geometry === 'relation')) {
28544                 for (var i = 0; i < _keys.length; i++) {
28545
28546                     if (_keys[i] === 'others') {
28547                         if (hasMatch) continue;
28548
28549                         // If the entity is a way that has not matched any other
28550                         // feature type, see if it has a parent relation, and if so,
28551                         // match whatever feature types the parent has matched.
28552                         // (The way is a member of a multipolygon.)
28553                         //
28554                         // IMPORTANT:
28555                         // For this to work, getMatches must be called on relations before ways.
28556                         //
28557                         if (entity.type === 'way') {
28558                             var parents = features.getParents(entity, resolver, geometry);
28559                             if (parents.length === 1) {
28560                                 var pkey = iD.Entity.key(parents[0]);
28561                                 if (_cache[pkey] && _cache[pkey].matches) {
28562                                     matches = _.clone(_cache[pkey].matches);
28563                                     continue;
28564                                 }
28565                             }
28566                         }
28567                     }
28568
28569                     if (_features[_keys[i]].filter(entity, resolver, geometry)) {
28570                         matches[_keys[i]] = hasMatch = true;
28571                     }
28572                 }
28573             }
28574             _cache[ent].matches = matches;
28575         }
28576         return _cache[ent].matches;
28577     };
28578
28579     features.getParents = function(entity, resolver, geometry) {
28580         var ent = iD.Entity.key(entity);
28581
28582         if (!_cache[ent]) {
28583             _cache[ent] = {};
28584         }
28585         if (!_cache[ent].parents) {
28586             var parents = [];
28587
28588             if (geometry !== 'point') {
28589                 if (geometry === 'vertex') {
28590                     parents = resolver.parentWays(entity);
28591                 } else {   // 'line', 'area', 'relation'
28592                     parents = resolver.parentRelations(entity);
28593                 }
28594             }
28595             _cache[ent].parents = parents;
28596         }
28597         return _cache[ent].parents;
28598     };
28599
28600     features.isHiddenFeature = function(entity, resolver, geometry) {
28601         if (!entity.version) return false;
28602
28603         var matches = features.getMatches(entity, resolver, geometry);
28604
28605         for (var i = 0; i < _hidden.length; i++) {
28606             if (matches[_hidden[i]]) { return true; }
28607         }
28608         return false;
28609     };
28610
28611     features.isHiddenChild = function(entity, resolver, geometry) {
28612         if (!entity.version || geometry === 'point') { return false; }
28613
28614         var parents = features.getParents(entity, resolver, geometry);
28615
28616         if (!parents.length) { return false; }
28617
28618         for (var i = 0; i < parents.length; i++) {
28619             if (!features.isHidden(parents[i], resolver, parents[i].geometry(resolver))) {
28620                 return false;
28621             }
28622         }
28623         return true;
28624     };
28625
28626     features.hasHiddenConnections = function(entity, resolver) {
28627         var childNodes, connections;
28628
28629         if (entity.type === 'midpoint') {
28630             childNodes = [resolver.entity(entity.edge[0]), resolver.entity(entity.edge[1])];
28631             connections = [];
28632         } else {
28633             childNodes = resolver.childNodes(entity);
28634             connections = features.getParents(entity, resolver, entity.geometry(resolver));
28635         }
28636
28637         // gather ways connected to child nodes..
28638         connections = _.reduce(childNodes, function(result, e) {
28639             return resolver.isShared(e) ? _.union(result, resolver.parentWays(e)) : result;
28640         }, connections);
28641
28642         return connections.length ? _.any(connections, function(e) {
28643             return features.isHidden(e, resolver, e.geometry(resolver));
28644         }) : false;
28645     };
28646
28647     features.isHidden = function(entity, resolver, geometry) {
28648         if (!entity.version) return false;
28649
28650         if (geometry === 'vertex')
28651             return features.isHiddenChild(entity, resolver, geometry);
28652         if (geometry === 'point')
28653             return features.isHiddenFeature(entity, resolver, geometry);
28654
28655         return features.isHiddenFeature(entity, resolver, geometry) ||
28656                features.isHiddenChild(entity, resolver, geometry);
28657     };
28658
28659     features.filter = function(d, resolver) {
28660         if (!_hidden.length)
28661             return d;
28662
28663         var result = [];
28664         for (var i = 0; i < d.length; i++) {
28665             var entity = d[i];
28666             if (!features.isHidden(entity, resolver, entity.geometry(resolver))) {
28667                 result.push(entity);
28668             }
28669         }
28670         return result;
28671     };
28672
28673     return d3.rebind(features, dispatch, 'on');
28674 };
28675 iD.GpxLayer = function(context) {
28676     var projection,
28677         gj = {},
28678         enable = true,
28679         svg;
28680
28681     function render(selection) {
28682         svg = selection.selectAll('svg')
28683             .data([render]);
28684
28685         svg.enter()
28686             .append('svg');
28687
28688         svg.style('display', enable ? 'block' : 'none');
28689
28690         var paths = svg
28691             .selectAll('path')
28692             .data([gj]);
28693
28694         paths
28695             .enter()
28696             .append('path')
28697             .attr('class', 'gpx');
28698
28699         var path = d3.geo.path()
28700             .projection(projection);
28701
28702         paths
28703             .attr('d', path);
28704
28705         if (typeof gj.features !== 'undefined') {
28706             svg
28707                 .selectAll('text')
28708                 .remove();
28709
28710             svg
28711                 .selectAll('path')
28712                 .data(gj.features)
28713                 .enter()
28714                 .append('text')
28715                 .attr('class', 'gpx')
28716                 .text(function(d) {
28717                     return d.properties.desc || d.properties.name;
28718                 })
28719                 .attr('x', function(d) {
28720                     var centroid = path.centroid(d);
28721                     return centroid[0] + 5;
28722                 })
28723                 .attr('y', function(d) {
28724                     var centroid = path.centroid(d);
28725                     return centroid[1];
28726                 });
28727         }
28728     }
28729
28730     render.projection = function(_) {
28731         if (!arguments.length) return projection;
28732         projection = _;
28733         return render;
28734     };
28735
28736     render.enable = function(_) {
28737         if (!arguments.length) return enable;
28738         enable = _;
28739         return render;
28740     };
28741
28742     render.geojson = function(_) {
28743         if (!arguments.length) return gj;
28744         gj = _;
28745         return render;
28746     };
28747
28748     render.dimensions = function(_) {
28749         if (!arguments.length) return svg.dimensions();
28750         svg.dimensions(_);
28751         return render;
28752     };
28753
28754     render.id = 'layer-gpx';
28755
28756     function over() {
28757         d3.event.stopPropagation();
28758         d3.event.preventDefault();
28759         d3.event.dataTransfer.dropEffect = 'copy';
28760     }
28761
28762     d3.select('body')
28763         .attr('dropzone', 'copy')
28764         .on('drop.localgpx', function() {
28765             d3.event.stopPropagation();
28766             d3.event.preventDefault();
28767             if (!iD.detect().filedrop) return;
28768             context.background().gpxLayerFiles(d3.event.dataTransfer.files);
28769         })
28770         .on('dragenter.localgpx', over)
28771         .on('dragexit.localgpx', over)
28772         .on('dragover.localgpx', over);
28773
28774     return render;
28775 };
28776 iD.Map = function(context) {
28777     var dimensions = [1, 1],
28778         dispatch = d3.dispatch('move', 'drawn'),
28779         projection = context.projection,
28780         roundedProjection = iD.svg.RoundProjection(projection),
28781         zoom = d3.behavior.zoom()
28782             .translate(projection.translate())
28783             .scale(projection.scale() * 2 * Math.PI)
28784             .scaleExtent([1024, 256 * Math.pow(2, 24)])
28785             .on('zoom', zoomPan),
28786         dblclickEnabled = true,
28787         transformStart,
28788         transformed = false,
28789         minzoom = 0,
28790         points = iD.svg.Points(roundedProjection, context),
28791         vertices = iD.svg.Vertices(roundedProjection, context),
28792         lines = iD.svg.Lines(projection),
28793         areas = iD.svg.Areas(projection),
28794         midpoints = iD.svg.Midpoints(roundedProjection, context),
28795         labels = iD.svg.Labels(projection, context),
28796         supersurface, surface,
28797         mouse,
28798         mousemove;
28799
28800     function map(selection) {
28801         context.history()
28802             .on('change.map', redraw);
28803         context.background()
28804             .on('change.map', redraw);
28805         context.features()
28806             .on('redraw.map', redraw);
28807
28808         selection
28809             .on('dblclick.map', dblClick)
28810             .call(zoom);
28811
28812         supersurface = selection.append('div')
28813             .attr('id', 'supersurface');
28814
28815         // Need a wrapper div because Opera can't cope with an absolutely positioned
28816         // SVG element: http://bl.ocks.org/jfirebaugh/6fbfbd922552bf776c16
28817         var dataLayer = supersurface.append('div')
28818             .attr('class', 'layer-layer layer-data');
28819
28820         map.surface = surface = dataLayer.append('svg')
28821             .on('mousedown.zoom', function() {
28822                 if (d3.event.button === 2) {
28823                     d3.event.stopPropagation();
28824                 }
28825             }, true)
28826             .on('mouseup.zoom', function() {
28827                 if (resetTransform()) redraw();
28828             })
28829             .attr('id', 'surface')
28830             .call(iD.svg.Surface(context));
28831
28832         supersurface.call(context.background());
28833
28834         surface.on('mousemove.map', function() {
28835             mousemove = d3.event;
28836         });
28837
28838         surface.on('mouseover.vertices', function() {
28839             if (map.editable() && !transformed) {
28840                 var hover = d3.event.target.__data__;
28841                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28842                 dispatch.drawn({full: false});
28843             }
28844         });
28845
28846         surface.on('mouseout.vertices', function() {
28847             if (map.editable() && !transformed) {
28848                 var hover = d3.event.relatedTarget && d3.event.relatedTarget.__data__;
28849                 surface.call(vertices.drawHover, context.graph(), hover, map.extent(), map.zoom());
28850                 dispatch.drawn({full: false});
28851             }
28852         });
28853
28854         context.on('enter.map', function() {
28855             if (map.editable() && !transformed) {
28856                 var all = context.intersects(map.extent()),
28857                     filter = d3.functor(true),
28858                     graph = context.graph();
28859
28860                 all = context.features().filter(all, graph);
28861                 surface.call(vertices, graph, all, filter, map.extent(), map.zoom());
28862                 surface.call(midpoints, graph, all, filter, map.trimmedExtent());
28863                 dispatch.drawn({full: false});
28864             }
28865         });
28866
28867         map.dimensions(selection.dimensions());
28868
28869         labels.supersurface(supersurface);
28870     }
28871
28872     function pxCenter() { return [dimensions[0] / 2, dimensions[1] / 2]; }
28873
28874     function drawVector(difference, extent) {
28875         var graph = context.graph(),
28876             features = context.features(),
28877             all = context.intersects(map.extent()),
28878             data, filter;
28879
28880         if (difference) {
28881             var complete = difference.complete(map.extent());
28882             data = _.compact(_.values(complete));
28883             filter = function(d) { return d.id in complete; };
28884             features.clear(data);
28885
28886         } else {
28887             // force a full redraw if gatherStats detects that a feature
28888             // should be auto-hidden (e.g. points or buildings)..
28889             if (features.gatherStats(all, graph, dimensions)) {
28890                 extent = undefined;
28891             }
28892
28893             if (extent) {
28894                 data = context.intersects(map.extent().intersection(extent));
28895                 var set = d3.set(_.pluck(data, 'id'));
28896                 filter = function(d) { return set.has(d.id); };
28897
28898             } else {
28899                 data = all;
28900                 filter = d3.functor(true);
28901             }
28902         }
28903
28904         data = features.filter(data, graph);
28905
28906         surface
28907             .call(vertices, graph, data, filter, map.extent(), map.zoom())
28908             .call(lines, graph, data, filter)
28909             .call(areas, graph, data, filter)
28910             .call(midpoints, graph, data, filter, map.trimmedExtent())
28911             .call(labels, graph, data, filter, dimensions, !difference && !extent)
28912             .call(points, data, filter);
28913
28914         dispatch.drawn({full: true});
28915     }
28916
28917     function editOff() {
28918         context.features().resetStats();
28919         surface.selectAll('.layer *').remove();
28920         dispatch.drawn({full: true});
28921     }
28922
28923     function dblClick() {
28924         if (!dblclickEnabled) {
28925             d3.event.preventDefault();
28926             d3.event.stopImmediatePropagation();
28927         }
28928     }
28929
28930     function zoomPan() {
28931         if (Math.log(d3.event.scale) / Math.LN2 - 8 < minzoom) {
28932             surface.interrupt();
28933             iD.ui.flash(context.container())
28934                 .select('.content')
28935                 .text(t('cannot_zoom'));
28936             setZoom(context.minEditableZoom(), true);
28937             queueRedraw();
28938             dispatch.move(map);
28939             return;
28940         }
28941
28942         projection
28943             .translate(d3.event.translate)
28944             .scale(d3.event.scale / (2 * Math.PI));
28945
28946         var scale = d3.event.scale / transformStart[0],
28947             tX = Math.round((d3.event.translate[0] / scale - transformStart[1][0]) * scale),
28948             tY = Math.round((d3.event.translate[1] / scale - transformStart[1][1]) * scale);
28949
28950         transformed = true;
28951         iD.util.setTransform(supersurface, tX, tY, scale);
28952         queueRedraw();
28953
28954         dispatch.move(map);
28955     }
28956
28957     function resetTransform() {
28958         if (!transformed) return false;
28959         iD.util.setTransform(supersurface, 0, 0);
28960         transformed = false;
28961         return true;
28962     }
28963
28964     function redraw(difference, extent) {
28965
28966         if (!surface) return;
28967
28968         clearTimeout(timeoutId);
28969
28970         // If we are in the middle of a zoom/pan, we can't do differenced redraws.
28971         // It would result in artifacts where differenced entities are redrawn with
28972         // one transform and unchanged entities with another.
28973         if (resetTransform()) {
28974             difference = extent = undefined;
28975         }
28976
28977         var zoom = String(~~map.zoom());
28978         if (surface.attr('data-zoom') !== zoom) {
28979             surface.attr('data-zoom', zoom)
28980                 .classed('low-zoom', zoom <= 16);
28981         }
28982
28983         if (!difference) {
28984             supersurface.call(context.background());
28985         }
28986
28987         if (map.editable()) {
28988             context.loadTiles(projection, dimensions);
28989             drawVector(difference, extent);
28990         } else {
28991             editOff();
28992         }
28993
28994         transformStart = [
28995             projection.scale() * 2 * Math.PI,
28996             projection.translate().slice()];
28997
28998         return map;
28999     }
29000
29001     var timeoutId;
29002     function queueRedraw() {
29003         clearTimeout(timeoutId);
29004         timeoutId = setTimeout(function() { redraw(); }, 300);
29005     }
29006
29007     function pointLocation(p) {
29008         var translate = projection.translate(),
29009             scale = projection.scale() * 2 * Math.PI;
29010         return [(p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale];
29011     }
29012
29013     function locationPoint(l) {
29014         var translate = projection.translate(),
29015             scale = projection.scale() * 2 * Math.PI;
29016         return [l[0] * scale + translate[0], l[1] * scale + translate[1]];
29017     }
29018
29019     map.mouse = function() {
29020         var e = mousemove || d3.event, s;
29021         while ((s = e.sourceEvent)) e = s;
29022         return mouse(e);
29023     };
29024
29025     map.mouseCoordinates = function() {
29026         return projection.invert(map.mouse());
29027     };
29028
29029     map.dblclickEnable = function(_) {
29030         if (!arguments.length) return dblclickEnabled;
29031         dblclickEnabled = _;
29032         return map;
29033     };
29034
29035     function interpolateZoom(_) {
29036         var k = projection.scale(),
29037             t = projection.translate();
29038
29039         surface.node().__chart__ = {
29040             x: t[0],
29041             y: t[1],
29042             k: k * 2 * Math.PI
29043         };
29044
29045         setZoom(_);
29046         projection.scale(k).translate(t);  // undo setZoom projection changes
29047
29048         zoom.event(surface.transition());
29049     }
29050
29051     function setZoom(_, force) {
29052         if (_ === map.zoom() && !force)
29053             return false;
29054         var scale = 256 * Math.pow(2, _),
29055             center = pxCenter(),
29056             l = pointLocation(center);
29057         scale = Math.max(1024, Math.min(256 * Math.pow(2, 24), scale));
29058         projection.scale(scale / (2 * Math.PI));
29059         zoom.scale(scale);
29060         var t = projection.translate();
29061         l = locationPoint(l);
29062         t[0] += center[0] - l[0];
29063         t[1] += center[1] - l[1];
29064         projection.translate(t);
29065         zoom.translate(projection.translate());
29066         return true;
29067     }
29068
29069     function setCenter(_) {
29070         var c = map.center();
29071         if (_[0] === c[0] && _[1] === c[1])
29072             return false;
29073         var t = projection.translate(),
29074             pxC = pxCenter(),
29075             ll = projection(_);
29076         projection.translate([
29077             t[0] - ll[0] + pxC[0],
29078             t[1] - ll[1] + pxC[1]]);
29079         zoom.translate(projection.translate());
29080         return true;
29081     }
29082
29083     map.pan = function(d) {
29084         var t = projection.translate();
29085         t[0] += d[0];
29086         t[1] += d[1];
29087         projection.translate(t);
29088         zoom.translate(projection.translate());
29089         dispatch.move(map);
29090         return redraw();
29091     };
29092
29093     map.dimensions = function(_) {
29094         if (!arguments.length) return dimensions;
29095         var center = map.center();
29096         dimensions = _;
29097         surface.dimensions(dimensions);
29098         context.background().dimensions(dimensions);
29099         projection.clipExtent([[0, 0], dimensions]);
29100         mouse = iD.util.fastMouse(supersurface.node());
29101         setCenter(center);
29102         return redraw();
29103     };
29104
29105     function zoomIn(integer) {
29106       interpolateZoom(~~map.zoom() + integer);
29107     }
29108
29109     function zoomOut(integer) {
29110       interpolateZoom(~~map.zoom() - integer);
29111     }
29112
29113     map.zoomIn = function() { zoomIn(1); };
29114     map.zoomInFurther = function() { zoomIn(4); };
29115
29116     map.zoomOut = function() { zoomOut(1); };
29117     map.zoomOutFurther = function() { zoomOut(4); };
29118
29119     map.center = function(loc) {
29120         if (!arguments.length) {
29121             return projection.invert(pxCenter());
29122         }
29123
29124         if (setCenter(loc)) {
29125             dispatch.move(map);
29126         }
29127
29128         return redraw();
29129     };
29130
29131     map.zoom = function(z) {
29132         if (!arguments.length) {
29133             return Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.LN2 - 8, 0);
29134         }
29135
29136         if (z < minzoom) {
29137             surface.interrupt();
29138             iD.ui.flash(context.container())
29139                 .select('.content')
29140                 .text(t('cannot_zoom'));
29141             z = context.minEditableZoom();
29142         }
29143
29144         if (setZoom(z)) {
29145             dispatch.move(map);
29146         }
29147
29148         return redraw();
29149     };
29150
29151     map.zoomTo = function(entity, zoomLimits) {
29152         var extent = entity.extent(context.graph());
29153         if (!isFinite(extent.area())) return;
29154
29155         var zoom = map.trimmedExtentZoom(extent);
29156         zoomLimits = zoomLimits || [context.minEditableZoom(), 20];
29157         map.centerZoom(extent.center(), Math.min(Math.max(zoom, zoomLimits[0]), zoomLimits[1]));
29158     };
29159
29160     map.centerZoom = function(loc, z) {
29161         var centered = setCenter(loc),
29162             zoomed   = setZoom(z);
29163
29164         if (centered || zoomed) {
29165             dispatch.move(map);
29166         }
29167
29168         return redraw();
29169     };
29170
29171     map.centerEase = function(loc) {
29172         var from = map.center().slice(),
29173             t = 0,
29174             stop;
29175
29176         surface.one('mousedown.ease', function() {
29177             stop = true;
29178         });
29179
29180         d3.timer(function() {
29181             if (stop) return true;
29182             map.center(iD.geo.interp(from, loc, (t += 1) / 10));
29183             return t === 10;
29184         }, 20);
29185         return map;
29186     };
29187
29188     map.extent = function(_) {
29189         if (!arguments.length) {
29190             return new iD.geo.Extent(projection.invert([0, dimensions[1]]),
29191                                  projection.invert([dimensions[0], 0]));
29192         } else {
29193             var extent = iD.geo.Extent(_);
29194             map.centerZoom(extent.center(), map.extentZoom(extent));
29195         }
29196     };
29197
29198     map.trimmedExtent = function(_) {
29199         if (!arguments.length) {
29200             var headerY = 60, footerY = 30, pad = 10;
29201             return new iD.geo.Extent(projection.invert([pad, dimensions[1] - footerY - pad]),
29202                     projection.invert([dimensions[0] - pad, headerY + pad]));
29203         } else {
29204             var extent = iD.geo.Extent(_);
29205             map.centerZoom(extent.center(), map.trimmedExtentZoom(extent));
29206         }
29207     };
29208
29209     function calcZoom(extent, dim) {
29210         var tl = projection([extent[0][0], extent[1][1]]),
29211             br = projection([extent[1][0], extent[0][1]]);
29212
29213         // Calculate maximum zoom that fits extent
29214         var hFactor = (br[0] - tl[0]) / dim[0],
29215             vFactor = (br[1] - tl[1]) / dim[1],
29216             hZoomDiff = Math.log(Math.abs(hFactor)) / Math.LN2,
29217             vZoomDiff = Math.log(Math.abs(vFactor)) / Math.LN2,
29218             newZoom = map.zoom() - Math.max(hZoomDiff, vZoomDiff);
29219
29220         return newZoom;
29221     }
29222
29223     map.extentZoom = function(_) {
29224         return calcZoom(iD.geo.Extent(_), dimensions);
29225     };
29226
29227     map.trimmedExtentZoom = function(_) {
29228         var trimY = 120, trimX = 40,
29229             trimmed = [dimensions[0] - trimX, dimensions[1] - trimY];
29230         return calcZoom(iD.geo.Extent(_), trimmed);
29231     };
29232
29233     map.editable = function() {
29234         return map.zoom() >= context.minEditableZoom();
29235     };
29236
29237     map.minzoom = function(_) {
29238         if (!arguments.length) return minzoom;
29239         minzoom = _;
29240         return map;
29241     };
29242
29243     return d3.rebind(map, dispatch, 'on');
29244 };
29245 iD.MapillaryLayer = function (context) {
29246     var enable = false,
29247         currentImage,
29248         svg, div, request;
29249
29250     function show(image) {
29251         svg.selectAll('g')
29252             .classed('selected', function(d) {
29253                 return currentImage && d.key === currentImage.key;
29254             });
29255
29256         div.classed('hidden', false)
29257             .classed('temp', image !== currentImage);
29258
29259         div.selectAll('img')
29260             .attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg');
29261
29262         div.selectAll('a')
29263             .attr('href', 'http://mapillary.com/map/im/' + image.key);
29264     }
29265
29266     function hide() {
29267         currentImage = undefined;
29268
29269         svg.selectAll('g')
29270             .classed('selected', false);
29271
29272         div.classed('hidden', true);
29273     }
29274
29275     function transform(image) {
29276         var t = 'translate(' + context.projection(image.loc) + ')';
29277         if (image.ca) t += 'rotate(' + image.ca + ',0,0)';
29278         return t;
29279     }
29280
29281     function render(selection) {
29282         svg = selection.selectAll('svg')
29283             .data([0]);
29284
29285         svg.enter().append('svg')
29286             .on('click', function() {
29287                 var image = d3.event.target.__data__;
29288                 if (currentImage === image) {
29289                     hide();
29290                 } else {
29291                     currentImage = image;
29292                     show(image);
29293                 }
29294             })
29295             .on('mouseover', function() {
29296                 show(d3.event.target.__data__);
29297             })
29298             .on('mouseout', function() {
29299                 if (currentImage) {
29300                     show(currentImage);
29301                 } else {
29302                     hide();
29303                 }
29304             });
29305
29306         svg.style('display', enable ? 'block' : 'none');
29307
29308         div = context.container().selectAll('.mapillary-image')
29309             .data([0]);
29310
29311         var enter = div.enter().append('div')
29312             .attr('class', 'mapillary-image');
29313
29314         enter.append('button')
29315             .on('click', hide)
29316             .append('div')
29317             .attr('class', 'icon close');
29318
29319         enter.append('img');
29320
29321         var link = enter.append('a')
29322             .attr('class', 'link')
29323             .attr('target', '_blank');
29324
29325         link.append('span')
29326             .attr('class', 'icon icon-pre-text out-link');
29327
29328         link.append('span')
29329             .text(t('mapillary.view_on_mapillary'));
29330
29331         if (!enable) {
29332             hide();
29333
29334             svg.selectAll('g')
29335                 .remove();
29336
29337             return;
29338         }
29339
29340         // Update existing images while waiting for new ones to load.
29341         svg.selectAll('g')
29342             .attr('transform', transform);
29343
29344         var extent = context.map().extent();
29345
29346         if (request)
29347             request.abort();
29348
29349         request = d3.json('https://a.mapillary.com/v2/search/s/geojson?client_id=NzNRM2otQkR2SHJzaXJmNmdQWVQ0dzoxNjQ3MDY4ZTUxY2QzNGI2&min_lat=' +
29350             extent[0][1] + '&max_lat=' + extent[1][1] + '&min_lon=' +
29351             extent[0][0] + '&max_lon=' + extent[1][0] + '&max_results=100&geojson=true',
29352             function (error, data) {
29353                 if (error) return;
29354
29355                 var images = [];
29356
29357                 for (var i = 0; i < data.features.length; i++) {
29358                     var sequence = data.features[i];
29359                     for (var j = 0; j < sequence.geometry.coordinates.length; j++) {
29360                         images.push({
29361                             key: sequence.properties.keys[j],
29362                             ca: sequence.properties.cas[j],
29363                             loc: sequence.geometry.coordinates[j]
29364                         });
29365                         if (images.length >= 1000) break;
29366                     }
29367                 }
29368
29369                 var g = svg.selectAll('g')
29370                     .data(images, function(d) { return d.key; });
29371
29372                 var enter = g.enter().append('g')
29373                     .attr('class', 'image');
29374
29375                 enter.append('path')
29376                     .attr('class', 'viewfield')
29377                     .attr('transform', 'scale(1.5,1.5),translate(-8, -13)')
29378                     .attr('d', 'M 6,9 C 8,8.4 8,8.4 10,9 L 16,-2 C 12,-5 4,-5 0,-2 z');
29379
29380                 enter.append('circle')
29381                     .attr('dx', '0')
29382                     .attr('dy', '0')
29383                     .attr('r', '6');
29384
29385                 g.attr('transform', transform);
29386
29387                 g.exit()
29388                     .remove();
29389             });
29390     }
29391
29392     render.enable = function(_) {
29393         if (!arguments.length) return enable;
29394         enable = _;
29395         return render;
29396     };
29397
29398     render.dimensions = function(_) {
29399         if (!arguments.length) return svg.dimensions();
29400         svg.dimensions(_);
29401         return render;
29402     };
29403
29404     return render;
29405 };
29406 iD.TileLayer = function() {
29407     var tileSize = 256,
29408         tile = d3.geo.tile(),
29409         projection,
29410         cache = {},
29411         tileOrigin,
29412         z,
29413         transformProp = iD.util.prefixCSSProperty('Transform'),
29414         source = d3.functor('');
29415
29416     function tileSizeAtZoom(d, z) {
29417         return Math.ceil(tileSize * Math.pow(2, z - d[2])) / tileSize;
29418     }
29419
29420     function atZoom(t, distance) {
29421         var power = Math.pow(2, distance);
29422         return [
29423             Math.floor(t[0] * power),
29424             Math.floor(t[1] * power),
29425             t[2] + distance];
29426     }
29427
29428     function lookUp(d) {
29429         for (var up = -1; up > -d[2]; up--) {
29430             var tile = atZoom(d, up);
29431             if (cache[source.url(tile)] !== false) {
29432                 return tile;
29433             }
29434         }
29435     }
29436
29437     function uniqueBy(a, n) {
29438         var o = [], seen = {};
29439         for (var i = 0; i < a.length; i++) {
29440             if (seen[a[i][n]] === undefined) {
29441                 o.push(a[i]);
29442                 seen[a[i][n]] = true;
29443             }
29444         }
29445         return o;
29446     }
29447
29448     function addSource(d) {
29449         d.push(source.url(d));
29450         return d;
29451     }
29452
29453     // Update tiles based on current state of `projection`.
29454     function background(selection) {
29455         tile.scale(projection.scale() * 2 * Math.PI)
29456             .translate(projection.translate());
29457
29458         tileOrigin = [
29459             projection.scale() * Math.PI - projection.translate()[0],
29460             projection.scale() * Math.PI - projection.translate()[1]];
29461
29462         z = Math.max(Math.log(projection.scale() * 2 * Math.PI) / Math.log(2) - 8, 0);
29463
29464         render(selection);
29465     }
29466
29467     // Derive the tiles onscreen, remove those offscreen and position them.
29468     // Important that this part not depend on `projection` because it's
29469     // rentered when tiles load/error (see #644).
29470     function render(selection) {
29471         var requests = [];
29472
29473         if (source.validZoom(z)) {
29474             tile().forEach(function(d) {
29475                 addSource(d);
29476                 if (d[3] === '') return;
29477                 if (typeof d[3] !== 'string') return; // Workaround for chrome crash https://github.com/openstreetmap/iD/issues/2295
29478                 requests.push(d);
29479                 if (cache[d[3]] === false && lookUp(d)) {
29480                     requests.push(addSource(lookUp(d)));
29481                 }
29482             });
29483
29484             requests = uniqueBy(requests, 3).filter(function(r) {
29485                 // don't re-request tiles which have failed in the past
29486                 return cache[r[3]] !== false;
29487             });
29488         }
29489
29490         var pixelOffset = [
29491             Math.round(source.offset()[0] * Math.pow(2, z)),
29492             Math.round(source.offset()[1] * Math.pow(2, z))
29493         ];
29494
29495         function load(d) {
29496             cache[d[3]] = true;
29497             d3.select(this)
29498                 .on('error', null)
29499                 .on('load', null)
29500                 .classed('tile-loaded', true);
29501             render(selection);
29502         }
29503
29504         function error(d) {
29505             cache[d[3]] = false;
29506             d3.select(this)
29507                 .on('error', null)
29508                 .on('load', null)
29509                 .remove();
29510             render(selection);
29511         }
29512
29513         function imageTransform(d) {
29514             var _ts = tileSize * Math.pow(2, z - d[2]);
29515             var scale = tileSizeAtZoom(d, z);
29516             return 'translate(' +
29517                 (Math.round((d[0] * _ts) - tileOrigin[0]) + pixelOffset[0]) + 'px,' +
29518                 (Math.round((d[1] * _ts) - tileOrigin[1]) + pixelOffset[1]) + 'px)' +
29519                 'scale(' + scale + ',' + scale + ')';
29520         }
29521
29522         var image = selection
29523             .selectAll('img')
29524             .data(requests, function(d) { return d[3]; });
29525
29526         image.exit()
29527             .style(transformProp, imageTransform)
29528             .classed('tile-removing', true)
29529             .each(function() {
29530                 var tile = d3.select(this);
29531                 window.setTimeout(function() {
29532                     if (tile.classed('tile-removing')) {
29533                         tile.remove();
29534                     }
29535                 }, 300);
29536             });
29537
29538         image.enter().append('img')
29539             .attr('class', 'tile')
29540             .attr('src', function(d) { return d[3]; })
29541             .on('error', error)
29542             .on('load', load);
29543
29544         image
29545             .style(transformProp, imageTransform)
29546             .classed('tile-removing', false);
29547     }
29548
29549     background.projection = function(_) {
29550         if (!arguments.length) return projection;
29551         projection = _;
29552         return background;
29553     };
29554
29555     background.dimensions = function(_) {
29556         if (!arguments.length) return tile.size();
29557         tile.size(_);
29558         return background;
29559     };
29560
29561     background.source = function(_) {
29562         if (!arguments.length) return source;
29563         source = _;
29564         cache = {};
29565         tile.scaleExtent(source.scaleExtent);
29566         return background;
29567     };
29568
29569     return background;
29570 };
29571 iD.svg = {
29572     RoundProjection: function(projection) {
29573         return function(d) {
29574             return iD.geo.roundCoords(projection(d));
29575         };
29576     },
29577
29578     PointTransform: function(projection) {
29579         return function(entity) {
29580             // http://jsperf.com/short-array-join
29581             var pt = projection(entity.loc);
29582             return 'translate(' + pt[0] + ',' + pt[1] + ')';
29583         };
29584     },
29585
29586     Round: function () {
29587         return d3.geo.transform({
29588             point: function(x, y) { return this.stream.point(Math.floor(x), Math.floor(y)); }
29589         });
29590     },
29591
29592     Path: function(projection, graph, polygon) {
29593         var cache = {},
29594             round = iD.svg.Round().stream,
29595             clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29596             project = projection.stream,
29597             path = d3.geo.path()
29598                 .projection({stream: function(output) { return polygon ? project(round(output)) : project(clip(round(output))); }});
29599
29600         return function(entity) {
29601             if (entity.id in cache) {
29602                 return cache[entity.id];
29603             } else {
29604                 return cache[entity.id] = path(entity.asGeoJSON(graph));
29605             }
29606         };
29607     },
29608
29609     OneWaySegments: function(projection, graph, dt) {
29610         return function(entity) {
29611             var a,
29612                 b,
29613                 i = 0,
29614                 offset = dt,
29615                 segments = [],
29616                 clip = d3.geo.clipExtent().extent(projection.clipExtent()).stream,
29617                 coordinates = graph.childNodes(entity).map(function(n) {
29618                     return n.loc;
29619                 });
29620
29621             if (entity.tags.oneway === '-1') coordinates.reverse();
29622
29623             d3.geo.stream({
29624                 type: 'LineString',
29625                 coordinates: coordinates
29626             }, projection.stream(clip({
29627                 lineStart: function() {},
29628                 lineEnd: function() {
29629                     a = null;
29630                 },
29631                 point: function(x, y) {
29632                     b = [x, y];
29633
29634                     if (a) {
29635                         var span = iD.geo.euclideanDistance(a, b) - offset;
29636
29637                         if (span >= 0) {
29638                             var angle = Math.atan2(b[1] - a[1], b[0] - a[0]),
29639                                 dx = dt * Math.cos(angle),
29640                                 dy = dt * Math.sin(angle),
29641                                 p = [a[0] + offset * Math.cos(angle),
29642                                      a[1] + offset * Math.sin(angle)];
29643
29644                             var segment = 'M' + a[0] + ',' + a[1] +
29645                                           'L' + p[0] + ',' + p[1];
29646
29647                             for (span -= dt; span >= 0; span -= dt) {
29648                                 p[0] += dx;
29649                                 p[1] += dy;
29650                                 segment += 'L' + p[0] + ',' + p[1];
29651                             }
29652
29653                             segment += 'L' + b[0] + ',' + b[1];
29654                             segments.push({id: entity.id, index: i, d: segment});
29655                         }
29656
29657                         offset = -span;
29658                         i++;
29659                     }
29660
29661                     a = b;
29662                 }
29663             })));
29664
29665             return segments;
29666         };
29667     },
29668
29669     MultipolygonMemberTags: function(graph) {
29670         return function(entity) {
29671             var tags = entity.tags;
29672             graph.parentRelations(entity).forEach(function(relation) {
29673                 if (relation.isMultipolygon()) {
29674                     tags = _.extend({}, relation.tags, tags);
29675                 }
29676             });
29677             return tags;
29678         };
29679     }
29680 };
29681 iD.svg.Areas = function(projection) {
29682     // Patterns only work in Firefox when set directly on element.
29683     // (This is not a bug: https://bugzilla.mozilla.org/show_bug.cgi?id=750632)
29684     var patterns = {
29685         wetland: 'wetland',
29686         beach: 'beach',
29687         scrub: 'scrub',
29688         construction: 'construction',
29689         military: 'construction',
29690         cemetery: 'cemetery',
29691         grave_yard: 'cemetery',
29692         meadow: 'meadow',
29693         farm: 'farmland',
29694         farmland: 'farmland',
29695         orchard: 'orchard'
29696     };
29697
29698     var patternKeys = ['landuse', 'natural', 'amenity'];
29699
29700     function setPattern(d) {
29701         for (var i = 0; i < patternKeys.length; i++) {
29702             if (patterns.hasOwnProperty(d.tags[patternKeys[i]])) {
29703                 this.style.fill = this.style.stroke = 'url("#pattern-' + patterns[d.tags[patternKeys[i]]] + '")';
29704                 return;
29705             }
29706         }
29707         this.style.fill = this.style.stroke = '';
29708     }
29709
29710     return function drawAreas(surface, graph, entities, filter) {
29711         var path = iD.svg.Path(projection, graph, true),
29712             areas = {},
29713             multipolygon;
29714
29715         for (var i = 0; i < entities.length; i++) {
29716             var entity = entities[i];
29717             if (entity.geometry(graph) !== 'area') continue;
29718
29719             multipolygon = iD.geo.isSimpleMultipolygonOuterMember(entity, graph);
29720             if (multipolygon) {
29721                 areas[multipolygon.id] = {
29722                     entity: multipolygon.mergeTags(entity.tags),
29723                     area: Math.abs(entity.area(graph))
29724                 };
29725             } else if (!areas[entity.id]) {
29726                 areas[entity.id] = {
29727                     entity: entity,
29728                     area: Math.abs(entity.area(graph))
29729                 };
29730             }
29731         }
29732
29733         areas = d3.values(areas).filter(function hasPath(a) { return path(a.entity); });
29734         areas.sort(function areaSort(a, b) { return b.area - a.area; });
29735         areas = _.pluck(areas, 'entity');
29736
29737         var strokes = areas.filter(function(area) {
29738             return area.type === 'way';
29739         });
29740
29741         var data = {
29742             clip: areas,
29743             shadow: strokes,
29744             stroke: strokes,
29745             fill: areas
29746         };
29747
29748         var clipPaths = surface.selectAll('defs').selectAll('.clipPath')
29749            .filter(filter)
29750            .data(data.clip, iD.Entity.key);
29751
29752         clipPaths.enter()
29753            .append('clipPath')
29754            .attr('class', 'clipPath')
29755            .attr('id', function(entity) { return entity.id + '-clippath'; })
29756            .append('path');
29757
29758         clipPaths.selectAll('path')
29759            .attr('d', path);
29760
29761         clipPaths.exit()
29762            .remove();
29763
29764         var areagroup = surface
29765             .select('.layer-areas')
29766             .selectAll('g.areagroup')
29767             .data(['fill', 'shadow', 'stroke']);
29768
29769         areagroup.enter()
29770             .append('g')
29771             .attr('class', function(d) { return 'layer areagroup area-' + d; });
29772
29773         var paths = areagroup
29774             .selectAll('path')
29775             .filter(filter)
29776             .data(function(layer) { return data[layer]; }, iD.Entity.key);
29777
29778         // Remove exiting areas first, so they aren't included in the `fills`
29779         // array used for sorting below (https://github.com/openstreetmap/iD/issues/1903).
29780         paths.exit()
29781             .remove();
29782
29783         var fills = surface.selectAll('.area-fill path.area')[0];
29784
29785         var bisect = d3.bisector(function(node) {
29786             return -node.__data__.area(graph);
29787         }).left;
29788
29789         function sortedByArea(entity) {
29790             if (this.__data__ === 'fill') {
29791                 return fills[bisect(fills, -entity.area(graph))];
29792             }
29793         }
29794
29795         paths.enter()
29796             .insert('path', sortedByArea)
29797             .each(function(entity) {
29798                 var layer = this.parentNode.__data__;
29799
29800                 this.setAttribute('class', entity.type + ' area ' + layer + ' ' + entity.id);
29801
29802                 if (layer === 'fill') {
29803                     this.setAttribute('clip-path', 'url(#' + entity.id + '-clippath)');
29804                     setPattern.apply(this, arguments);
29805                 }
29806             })
29807             .call(iD.svg.TagClasses());
29808
29809         paths
29810             .attr('d', path);
29811     };
29812 };
29813 /*
29814     A standalone SVG element that contains only a `defs` sub-element. To be
29815     used once globally, since defs IDs must be unique within a document.
29816 */
29817 iD.svg.Defs = function(context) {
29818     function autosize(image) {
29819         var img = document.createElement('img');
29820         img.src = image.attr('xlink:href');
29821         img.onload = function() {
29822             image.attr({
29823                 width: img.width,
29824                 height: img.height
29825             });
29826         };
29827     }
29828
29829     function SpriteDefinition(id, href, data) {
29830         return function(defs) {
29831             defs.append('image')
29832                 .attr('id', id)
29833                 .attr('xlink:href', href)
29834                 .call(autosize);
29835
29836             defs.selectAll()
29837                 .data(data)
29838                 .enter().append('use')
29839                 .attr('id', function(d) { return d.key; })
29840                 .attr('transform', function(d) { return 'translate(-' + d.value[0] + ',-' + d.value[1] + ')'; })
29841                 .attr('xlink:href', '#' + id);
29842         };
29843     }
29844
29845     return function (selection) {
29846         var defs = selection.append('defs');
29847
29848         defs.append('marker')
29849             .attr({
29850                 id: 'oneway-marker',
29851                 viewBox: '0 0 10 10',
29852                 refY: 2.5,
29853                 refX: 5,
29854                 markerWidth: 2,
29855                 markerHeight: 2,
29856                 orient: 'auto'
29857             })
29858             .append('path')
29859             .attr('d', 'M 5 3 L 0 3 L 0 2 L 5 2 L 5 0 L 10 2.5 L 5 5 z');
29860
29861         var patterns = defs.selectAll('pattern')
29862             .data([
29863                 // pattern name, pattern image name
29864                 ['wetland', 'wetland'],
29865                 ['construction', 'construction'],
29866                 ['cemetery', 'cemetery'],
29867                 ['orchard', 'orchard'],
29868                 ['farmland', 'farmland'],
29869                 ['beach', 'dots'],
29870                 ['scrub', 'dots'],
29871                 ['meadow', 'dots']
29872             ])
29873             .enter()
29874             .append('pattern')
29875             .attr({
29876                 id: function (d) {
29877                     return 'pattern-' + d[0];
29878                 },
29879                 width: 32,
29880                 height: 32,
29881                 patternUnits: 'userSpaceOnUse'
29882             });
29883
29884         patterns.append('rect')
29885             .attr({
29886                 x: 0,
29887                 y: 0,
29888                 width: 32,
29889                 height: 32,
29890                 'class': function (d) {
29891                     return 'pattern-color-' + d[0];
29892                 }
29893             });
29894
29895         patterns.append('image')
29896             .attr({
29897                 x: 0,
29898                 y: 0,
29899                 width: 32,
29900                 height: 32
29901             })
29902             .attr('xlink:href', function (d) {
29903                 return context.imagePath('pattern/' + d[1] + '.png');
29904             });
29905
29906         defs.selectAll()
29907             .data([12, 18, 20, 32, 45])
29908             .enter().append('clipPath')
29909             .attr('id', function (d) {
29910                 return 'clip-square-' + d;
29911             })
29912             .append('rect')
29913             .attr('x', 0)
29914             .attr('y', 0)
29915             .attr('width', function (d) {
29916                 return d;
29917             })
29918             .attr('height', function (d) {
29919                 return d;
29920             });
29921
29922         var maki = [];
29923         _.forEach(iD.data.featureIcons, function (dimensions, name) {
29924             if (dimensions['12'] && dimensions['18'] && dimensions['24']) {
29925                 maki.push({key: 'maki-' + name + '-12', value: dimensions['12']});
29926                 maki.push({key: 'maki-' + name + '-18', value: dimensions['18']});
29927                 maki.push({key: 'maki-' + name + '-24', value: dimensions['24']});
29928             }
29929         });
29930
29931         defs.call(SpriteDefinition(
29932             'sprite',
29933             context.imagePath('sprite.svg'),
29934             d3.entries(iD.data.operations)));
29935
29936         defs.call(SpriteDefinition(
29937             'maki-sprite',
29938             context.imagePath('maki-sprite.png'),
29939             maki));
29940     };
29941 };
29942 iD.svg.Labels = function(projection, context) {
29943     var path = d3.geo.path().projection(projection);
29944
29945     // Replace with dict and iterate over entities tags instead?
29946     var label_stack = [
29947         ['line', 'aeroway'],
29948         ['line', 'highway'],
29949         ['line', 'railway'],
29950         ['line', 'waterway'],
29951         ['area', 'aeroway'],
29952         ['area', 'amenity'],
29953         ['area', 'building'],
29954         ['area', 'historic'],
29955         ['area', 'leisure'],
29956         ['area', 'man_made'],
29957         ['area', 'natural'],
29958         ['area', 'shop'],
29959         ['area', 'tourism'],
29960         ['point', 'aeroway'],
29961         ['point', 'amenity'],
29962         ['point', 'building'],
29963         ['point', 'historic'],
29964         ['point', 'leisure'],
29965         ['point', 'man_made'],
29966         ['point', 'natural'],
29967         ['point', 'shop'],
29968         ['point', 'tourism'],
29969         ['line', 'name'],
29970         ['area', 'name'],
29971         ['point', 'name']
29972     ];
29973
29974     var default_size = 12;
29975
29976     var font_sizes = label_stack.map(function(d) {
29977         var style = iD.util.getStyle('text.' + d[0] + '.tag-' + d[1]),
29978             m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
29979         if (m) return parseInt(m[1], 10);
29980
29981         style = iD.util.getStyle('text.' + d[0]);
29982         m = style && style.cssText.match('font-size: ([0-9]{1,2})px;');
29983         if (m) return parseInt(m[1], 10);
29984
29985         return default_size;
29986     });
29987
29988     var iconSize = 18;
29989
29990     var pointOffsets = [
29991         [15, -11, 'start'], // right
29992         [10, -11, 'start'], // unused right now
29993         [-15, -11, 'end']
29994     ];
29995
29996     var lineOffsets = [50, 45, 55, 40, 60, 35, 65, 30, 70, 25,
29997         75, 20, 80, 15, 95, 10, 90, 5, 95];
29998
29999
30000     var noIcons = ['building', 'landuse', 'natural'];
30001     function blacklisted(preset) {
30002         return _.any(noIcons, function(s) {
30003             return preset.id.indexOf(s) >= 0;
30004         });
30005     }
30006
30007     function get(array, prop) {
30008         return function(d, i) { return array[i][prop]; };
30009     }
30010
30011     var textWidthCache = {};
30012
30013     function textWidth(text, size, elem) {
30014         var c = textWidthCache[size];
30015         if (!c) c = textWidthCache[size] = {};
30016
30017         if (c[text]) {
30018             return c[text];
30019
30020         } else if (elem) {
30021             c[text] = elem.getComputedTextLength();
30022             return c[text];
30023
30024         } else {
30025             var str = encodeURIComponent(text).match(/%[CDEFcdef]/g);
30026             if (str === null) {
30027                 return size / 3 * 2 * text.length;
30028             } else {
30029                 return size / 3 * (2 * text.length + str.length);
30030             }
30031         }
30032     }
30033
30034     function drawLineLabels(group, entities, filter, classes, labels) {
30035         var texts = group.selectAll('text.' + classes)
30036             .filter(filter)
30037             .data(entities, iD.Entity.key);
30038
30039         texts.enter()
30040             .append('text')
30041             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; })
30042             .append('textPath')
30043             .attr('class', 'textpath');
30044
30045
30046         texts.selectAll('.textpath')
30047             .filter(filter)
30048             .data(entities, iD.Entity.key)
30049             .attr({
30050                 'startOffset': '50%',
30051                 'xlink:href': function(d) { return '#labelpath-' + d.id; }
30052             })
30053             .text(iD.util.displayName);
30054
30055         texts.exit().remove();
30056     }
30057
30058     function drawLinePaths(group, entities, filter, classes, labels) {
30059         var halos = group.selectAll('path')
30060             .filter(filter)
30061             .data(entities, iD.Entity.key);
30062
30063         halos.enter()
30064             .append('path')
30065             .style('stroke-width', get(labels, 'font-size'))
30066             .attr('id', function(d) { return 'labelpath-' + d.id; })
30067             .attr('class', classes);
30068
30069         halos.attr('d', get(labels, 'lineString'));
30070
30071         halos.exit().remove();
30072     }
30073
30074     function drawPointLabels(group, entities, filter, classes, labels) {
30075
30076         var texts = group.selectAll('text.' + classes)
30077             .filter(filter)
30078             .data(entities, iD.Entity.key);
30079
30080         texts.enter()
30081             .append('text')
30082             .attr('class', function(d, i) { return classes + ' ' + labels[i].classes + ' ' + d.id; });
30083
30084         texts.attr('x', get(labels, 'x'))
30085             .attr('y', get(labels, 'y'))
30086             .style('text-anchor', get(labels, 'textAnchor'))
30087             .text(iD.util.displayName)
30088             .each(function(d, i) { textWidth(iD.util.displayName(d), labels[i].height, this); });
30089
30090         texts.exit().remove();
30091         return texts;
30092     }
30093
30094     function drawAreaLabels(group, entities, filter, classes, labels) {
30095         entities = entities.filter(hasText);
30096         labels = labels.filter(hasText);
30097         return drawPointLabels(group, entities, filter, classes, labels);
30098
30099         function hasText(d, i) {
30100             return labels[i].hasOwnProperty('x') && labels[i].hasOwnProperty('y');
30101         }
30102     }
30103
30104     function drawAreaIcons(group, entities, filter, classes, labels) {
30105
30106         var icons = group.selectAll('use')
30107             .filter(filter)
30108             .data(entities, iD.Entity.key);
30109
30110         icons.enter()
30111             .append('use')
30112             .attr('clip-path', 'url(#clip-square-18)')
30113             .attr('class', 'icon');
30114
30115         icons.attr('transform', get(labels, 'transform'))
30116             .attr('xlink:href', function(d) {
30117                 return '#maki-' + context.presets().match(d, context.graph()).icon + '-18';
30118             });
30119
30120
30121         icons.exit().remove();
30122     }
30123
30124     function reverse(p) {
30125         var angle = Math.atan2(p[1][1] - p[0][1], p[1][0] - p[0][0]);
30126         return !(p[0][0] < p[p.length - 1][0] && angle < Math.PI/2 && angle > -Math.PI/2);
30127     }
30128
30129     function lineString(nodes) {
30130         return 'M' + nodes.join('L');
30131     }
30132
30133     function subpath(nodes, from, to) {
30134         function segmentLength(i) {
30135             var dx = nodes[i][0] - nodes[i + 1][0];
30136             var dy = nodes[i][1] - nodes[i + 1][1];
30137             return Math.sqrt(dx * dx + dy * dy);
30138         }
30139
30140         var sofar = 0,
30141             start, end, i0, i1;
30142         for (var i = 0; i < nodes.length - 1; i++) {
30143             var current = segmentLength(i);
30144             var portion;
30145             if (!start && sofar + current >= from) {
30146                 portion = (from - sofar) / current;
30147                 start = [
30148                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30149                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30150                 ];
30151                 i0 = i + 1;
30152             }
30153             if (!end && sofar + current >= to) {
30154                 portion = (to - sofar) / current;
30155                 end = [
30156                     nodes[i][0] + portion * (nodes[i + 1][0] - nodes[i][0]),
30157                     nodes[i][1] + portion * (nodes[i + 1][1] - nodes[i][1])
30158                 ];
30159                 i1 = i + 1;
30160             }
30161             sofar += current;
30162
30163         }
30164         var ret = nodes.slice(i0, i1);
30165         ret.unshift(start);
30166         ret.push(end);
30167         return ret;
30168
30169     }
30170
30171     function hideOnMouseover() {
30172         var layers = d3.select(this)
30173             .selectAll('.layer-label, .layer-halo');
30174
30175         layers.selectAll('.proximate')
30176             .classed('proximate', false);
30177
30178         var mouse = context.mouse(),
30179             pad = 50,
30180             rect = [mouse[0] - pad, mouse[1] - pad, mouse[0] + pad, mouse[1] + pad],
30181             ids = _.pluck(rtree.search(rect), 'id');
30182
30183         if (!ids.length) return;
30184         layers.selectAll('.' + ids.join(', .'))
30185             .classed('proximate', true);
30186     }
30187
30188     var rtree = rbush(),
30189         rectangles = {};
30190
30191     function labels(surface, graph, entities, filter, dimensions, fullRedraw) {
30192
30193         var hidePoints = !surface.select('.node.point').node();
30194
30195         var labelable = [], i, k, entity;
30196         for (i = 0; i < label_stack.length; i++) labelable.push([]);
30197
30198         if (fullRedraw) {
30199             rtree.clear();
30200             rectangles = {};
30201         } else {
30202             for (i = 0; i < entities.length; i++) {
30203                 rtree.remove(rectangles[entities[i].id]);
30204             }
30205         }
30206
30207         // Split entities into groups specified by label_stack
30208         for (i = 0; i < entities.length; i++) {
30209             entity = entities[i];
30210             var geometry = entity.geometry(graph);
30211
30212             if (geometry === 'vertex')
30213                 continue;
30214             if (hidePoints && geometry === 'point')
30215                 continue;
30216
30217             var preset = geometry === 'area' && context.presets().match(entity, graph),
30218                 icon = preset && !blacklisted(preset) && preset.icon;
30219
30220             if (!icon && !iD.util.displayName(entity))
30221                 continue;
30222
30223             for (k = 0; k < label_stack.length; k++) {
30224                 if (geometry === label_stack[k][0] && entity.tags[label_stack[k][1]]) {
30225                     labelable[k].push(entity);
30226                     break;
30227                 }
30228             }
30229         }
30230
30231         var positions = {
30232             point: [],
30233             line: [],
30234             area: []
30235         };
30236
30237         var labelled = {
30238             point: [],
30239             line: [],
30240             area: []
30241         };
30242
30243         // Try and find a valid label for labellable entities
30244         for (k = 0; k < labelable.length; k++) {
30245             var font_size = font_sizes[k];
30246             for (i = 0; i < labelable[k].length; i++) {
30247                 entity = labelable[k][i];
30248                 var name = iD.util.displayName(entity),
30249                     width = name && textWidth(name, font_size),
30250                     p;
30251                 if (entity.geometry(graph) === 'point') {
30252                     p = getPointLabel(entity, width, font_size);
30253                 } else if (entity.geometry(graph) === 'line') {
30254                     p = getLineLabel(entity, width, font_size);
30255                 } else if (entity.geometry(graph) === 'area') {
30256                     p = getAreaLabel(entity, width, font_size);
30257                 }
30258                 if (p) {
30259                     p.classes = entity.geometry(graph) + ' tag-' + label_stack[k][1];
30260                     positions[entity.geometry(graph)].push(p);
30261                     labelled[entity.geometry(graph)].push(entity);
30262                 }
30263             }
30264         }
30265
30266         function getPointLabel(entity, width, height) {
30267             var coord = projection(entity.loc),
30268                 m = 5,  // margin
30269                 offset = pointOffsets[0],
30270                 p = {
30271                     height: height,
30272                     width: width,
30273                     x: coord[0] + offset[0],
30274                     y: coord[1] + offset[1],
30275                     textAnchor: offset[2]
30276                 };
30277             var rect = [p.x - m, p.y - m, p.x + width + m, p.y + height + m];
30278             if (tryInsert(rect, entity.id)) return p;
30279         }
30280
30281
30282         function getLineLabel(entity, width, height) {
30283             var nodes = _.pluck(graph.childNodes(entity), 'loc').map(projection),
30284                 length = iD.geo.pathLength(nodes);
30285             if (length < width + 20) return;
30286
30287             for (var i = 0; i < lineOffsets.length; i++) {
30288                 var offset = lineOffsets[i],
30289                     middle = offset / 100 * length,
30290                     start = middle - width/2;
30291                 if (start < 0 || start + width > length) continue;
30292                 var sub = subpath(nodes, start, start + width),
30293                     rev = reverse(sub),
30294                     rect = [
30295                         Math.min(sub[0][0], sub[sub.length - 1][0]) - 10,
30296                         Math.min(sub[0][1], sub[sub.length - 1][1]) - 10,
30297                         Math.max(sub[0][0], sub[sub.length - 1][0]) + 20,
30298                         Math.max(sub[0][1], sub[sub.length - 1][1]) + 30
30299                     ];
30300                 if (rev) sub = sub.reverse();
30301                 if (tryInsert(rect, entity.id)) return {
30302                     'font-size': height + 2,
30303                     lineString: lineString(sub),
30304                     startOffset: offset + '%'
30305                 };
30306             }
30307         }
30308
30309         function getAreaLabel(entity, width, height) {
30310             var centroid = path.centroid(entity.asGeoJSON(graph, true)),
30311                 extent = entity.extent(graph),
30312                 entitywidth = projection(extent[1])[0] - projection(extent[0])[0],
30313                 rect;
30314
30315             if (isNaN(centroid[0]) || entitywidth < 20) return;
30316
30317             var iconX = centroid[0] - (iconSize/2),
30318                 iconY = centroid[1] - (iconSize/2),
30319                 textOffset = iconSize + 5;
30320
30321             var p = {
30322                 transform: 'translate(' + iconX + ',' + iconY + ')'
30323             };
30324
30325             if (width && entitywidth >= width + 20) {
30326                 p.x = centroid[0];
30327                 p.y = centroid[1] + textOffset;
30328                 p.textAnchor = 'middle';
30329                 p.height = height;
30330                 rect = [p.x - width/2, p.y, p.x + width/2, p.y + height + textOffset];
30331             } else {
30332                 rect = [iconX, iconY, iconX + iconSize, iconY + iconSize];
30333             }
30334
30335             if (tryInsert(rect, entity.id)) return p;
30336
30337         }
30338
30339         function tryInsert(rect, id) {
30340             // Check that label is visible
30341             if (rect[0] < 0 || rect[1] < 0 || rect[2] > dimensions[0] ||
30342                 rect[3] > dimensions[1]) return false;
30343             var v = rtree.search(rect).length === 0;
30344             if (v) {
30345                 rect.id = id;
30346                 rtree.insert(rect);
30347                 rectangles[id] = rect;
30348             }
30349             return v;
30350         }
30351
30352         var label = surface.select('.layer-label'),
30353             halo = surface.select('.layer-halo');
30354
30355         // points
30356         drawPointLabels(label, labelled.point, filter, 'pointlabel', positions.point);
30357         drawPointLabels(halo, labelled.point, filter, 'pointlabel-halo', positions.point);
30358
30359         // lines
30360         drawLinePaths(halo, labelled.line, filter, '', positions.line);
30361         drawLineLabels(label, labelled.line, filter, 'linelabel', positions.line);
30362         drawLineLabels(halo, labelled.line, filter, 'linelabel-halo', positions.line);
30363
30364         // areas
30365         drawAreaLabels(label, labelled.area, filter, 'arealabel', positions.area);
30366         drawAreaLabels(halo, labelled.area, filter, 'arealabel-halo', positions.area);
30367         drawAreaIcons(label, labelled.area, filter, 'arealabel-icon', positions.area);
30368     }
30369
30370     labels.supersurface = function(supersurface) {
30371         supersurface
30372             .on('mousemove.hidelabels', hideOnMouseover)
30373             .on('mousedown.hidelabels', function () {
30374                 supersurface.on('mousemove.hidelabels', null);
30375             })
30376             .on('mouseup.hidelabels', function () {
30377                 supersurface.on('mousemove.hidelabels', hideOnMouseover);
30378             });
30379     };
30380
30381     return labels;
30382 };
30383 iD.svg.Lines = function(projection) {
30384
30385     var highway_stack = {
30386         motorway: 0,
30387         motorway_link: 1,
30388         trunk: 2,
30389         trunk_link: 3,
30390         primary: 4,
30391         primary_link: 5,
30392         secondary: 6,
30393         tertiary: 7,
30394         unclassified: 8,
30395         residential: 9,
30396         service: 10,
30397         footway: 11
30398     };
30399
30400     function waystack(a, b) {
30401         var as = 0, bs = 0;
30402
30403         if (a.tags.highway) { as -= highway_stack[a.tags.highway]; }
30404         if (b.tags.highway) { bs -= highway_stack[b.tags.highway]; }
30405         return as - bs;
30406     }
30407
30408     return function drawLines(surface, graph, entities, filter) {
30409         var ways = [], pathdata = {}, onewaydata = {},
30410             getPath = iD.svg.Path(projection, graph);
30411
30412         for (var i = 0; i < entities.length; i++) {
30413             var entity = entities[i],
30414                 outer = iD.geo.simpleMultipolygonOuterMember(entity, graph);
30415             if (outer) {
30416                 ways.push(entity.mergeTags(outer.tags));
30417             } else if (entity.geometry(graph) === 'line') {
30418                 ways.push(entity);
30419             }
30420         }
30421
30422         ways = ways.filter(getPath);
30423
30424         pathdata = _.groupBy(ways, function(way) { return way.layer(); });
30425
30426         _.forOwn(pathdata, function(v, k) {
30427             onewaydata[k] = _(v)
30428                 .filter(function(d) { return d.isOneWay(); })
30429                 .map(iD.svg.OneWaySegments(projection, graph, 35))
30430                 .flatten()
30431                 .valueOf();
30432         });
30433
30434         var layergroup = surface
30435             .select('.layer-lines')
30436             .selectAll('g.layergroup')
30437             .data(d3.range(-10, 11));
30438
30439         layergroup.enter()
30440             .append('g')
30441             .attr('class', function(d) { return 'layer layergroup layer' + String(d); });
30442
30443
30444         var linegroup = layergroup
30445             .selectAll('g.linegroup')
30446             .data(['shadow', 'casing', 'stroke']);
30447
30448         linegroup.enter()
30449             .append('g')
30450             .attr('class', function(d) { return 'layer linegroup line-' + d; });
30451
30452
30453         var lines = linegroup
30454             .selectAll('path')
30455             .filter(filter)
30456             .data(
30457                 function() { return pathdata[this.parentNode.parentNode.__data__] || []; },
30458                 iD.Entity.key
30459             );
30460
30461         // Optimization: call simple TagClasses only on enter selection. This
30462         // works because iD.Entity.key is defined to include the entity v attribute.
30463         lines.enter()
30464             .append('path')
30465             .attr('class', function(d) { return 'way line ' + this.parentNode.__data__ + ' ' + d.id; })
30466             .call(iD.svg.TagClasses());
30467
30468         lines
30469             .sort(waystack)
30470             .attr('d', getPath)
30471             .call(iD.svg.TagClasses().tags(iD.svg.MultipolygonMemberTags(graph)));
30472
30473         lines.exit()
30474             .remove();
30475
30476
30477         var onewaygroup = layergroup
30478             .selectAll('g.onewaygroup')
30479             .data(['oneway']);
30480
30481         onewaygroup.enter()
30482             .append('g')
30483             .attr('class', 'layer onewaygroup');
30484
30485
30486         var oneways = onewaygroup
30487             .selectAll('path')
30488             .filter(filter)
30489             .data(
30490                 function() { return onewaydata[this.parentNode.parentNode.__data__] || []; },
30491                 function(d) { return [d.id, d.index]; }
30492             );
30493
30494         oneways.enter()
30495             .append('path')
30496             .attr('class', 'oneway')
30497             .attr('marker-mid', 'url(#oneway-marker)');
30498
30499         oneways
30500             .attr('d', function(d) { return d.d; });
30501
30502         oneways.exit()
30503             .remove();
30504
30505     };
30506 };
30507 iD.svg.Midpoints = function(projection, context) {
30508     return function drawMidpoints(surface, graph, entities, filter, extent) {
30509         var poly = extent.polygon(),
30510             midpoints = {};
30511
30512         for (var i = 0; i < entities.length; i++) {
30513             var entity = entities[i];
30514
30515             if (entity.type !== 'way')
30516                 continue;
30517             if (!filter(entity))
30518                 continue;
30519             if (context.selectedIDs().indexOf(entity.id) < 0)
30520                 continue;
30521
30522             var nodes = graph.childNodes(entity);
30523             for (var j = 0; j < nodes.length - 1; j++) {
30524
30525                 var a = nodes[j],
30526                     b = nodes[j + 1],
30527                     id = [a.id, b.id].sort().join('-');
30528
30529                 if (midpoints[id]) {
30530                     midpoints[id].parents.push(entity);
30531                 } else {
30532                     if (iD.geo.euclideanDistance(projection(a.loc), projection(b.loc)) > 40) {
30533                         var point = iD.geo.interp(a.loc, b.loc, 0.5),
30534                             loc = null;
30535
30536                         if (extent.intersects(point)) {
30537                             loc = point;
30538                         } else {
30539                             for (var k = 0; k < 4; k++) {
30540                                 point = iD.geo.lineIntersection([a.loc, b.loc], [poly[k], poly[k+1]]);
30541                                 if (point &&
30542                                     iD.geo.euclideanDistance(projection(a.loc), projection(point)) > 20 &&
30543                                     iD.geo.euclideanDistance(projection(b.loc), projection(point)) > 20)
30544                                 {
30545                                     loc = point;
30546                                     break;
30547                                 }
30548                             }
30549                         }
30550
30551                         if (loc) {
30552                             midpoints[id] = {
30553                                 type: 'midpoint',
30554                                 id: id,
30555                                 loc: loc,
30556                                 edge: [a.id, b.id],
30557                                 parents: [entity]
30558                             };
30559                         }
30560                     }
30561                 }
30562             }
30563         }
30564
30565         function midpointFilter(d) {
30566             if (midpoints[d.id])
30567                 return true;
30568
30569             for (var i = 0; i < d.parents.length; i++)
30570                 if (filter(d.parents[i]))
30571                     return true;
30572
30573             return false;
30574         }
30575
30576         var groups = surface.select('.layer-hit').selectAll('g.midpoint')
30577             .filter(midpointFilter)
30578             .data(_.values(midpoints), function(d) { return d.id; });
30579
30580         var enter = groups.enter()
30581             .insert('g', ':first-child')
30582             .attr('class', 'midpoint');
30583
30584         enter.append('polygon')
30585             .attr('points', '-6,8 10,0 -6,-8')
30586             .attr('class', 'shadow');
30587
30588         enter.append('polygon')
30589             .attr('points', '-3,4 5,0 -3,-4')
30590             .attr('class', 'fill');
30591
30592         groups
30593             .attr('transform', function(d) {
30594                 var translate = iD.svg.PointTransform(projection),
30595                     a = context.entity(d.edge[0]),
30596                     b = context.entity(d.edge[1]),
30597                     angle = Math.round(iD.geo.angle(a, b, projection) * (180 / Math.PI));
30598                 return translate(d) + ' rotate(' + angle + ')';
30599             })
30600             .call(iD.svg.TagClasses().tags(
30601                 function(d) { return d.parents[0].tags; }
30602             ));
30603
30604         // Propagate data bindings.
30605         groups.select('polygon.shadow');
30606         groups.select('polygon.fill');
30607
30608         groups.exit()
30609             .remove();
30610     };
30611 };
30612 iD.svg.Points = function(projection, context) {
30613     function markerPath(selection, klass) {
30614         selection
30615             .attr('class', klass)
30616             .attr('transform', 'translate(-8, -23)')
30617             .attr('d', 'M 17,8 C 17,13 11,21 8.5,23.5 C 6,21 0,13 0,8 C 0,4 4,-0.5 8.5,-0.5 C 13,-0.5 17,4 17,8 z');
30618     }
30619
30620     function sortY(a, b) {
30621         return b.loc[1] - a.loc[1];
30622     }
30623
30624     return function drawPoints(surface, entities, filter) {
30625         var graph = context.graph(),
30626             wireframe = surface.classed('fill-wireframe'),
30627             points = wireframe ? [] : _.filter(entities, function(e) {
30628                 return e.geometry(graph) === 'point';
30629             });
30630
30631         points.sort(sortY);
30632
30633         var groups = surface.select('.layer-hit').selectAll('g.point')
30634             .filter(filter)
30635             .data(points, iD.Entity.key);
30636
30637         var group = groups.enter()
30638             .append('g')
30639             .attr('class', function(d) { return 'node point ' + d.id; })
30640             .order();
30641
30642         group.append('path')
30643             .call(markerPath, 'shadow');
30644
30645         group.append('path')
30646             .call(markerPath, 'stroke');
30647
30648         group.append('use')
30649             .attr('class', 'icon')
30650             .attr('transform', 'translate(-6, -20)')
30651             .attr('clip-path', 'url(#clip-square-12)');
30652
30653         groups.attr('transform', iD.svg.PointTransform(projection))
30654             .call(iD.svg.TagClasses());
30655
30656         // Selecting the following implicitly
30657         // sets the data (point entity) on the element
30658         groups.select('.shadow');
30659         groups.select('.stroke');
30660         groups.select('.icon')
30661             .attr('xlink:href', function(entity) {
30662                 var preset = context.presets().match(entity, context.graph());
30663                 return preset.icon ? '#maki-' + preset.icon + '-12' : '';
30664             });
30665
30666         groups.exit()
30667             .remove();
30668     };
30669 };
30670 iD.svg.Surface = function() {
30671     return function (selection) {
30672         selection.selectAll('defs')
30673             .data([0])
30674             .enter()
30675             .append('defs');
30676
30677         var layers = selection.selectAll('.layer')
30678             .data(['areas', 'lines', 'hit', 'halo', 'label']);
30679
30680         layers.enter().append('g')
30681             .attr('class', function(d) { return 'layer layer-' + d; });
30682     };
30683 };
30684 iD.svg.TagClasses = function() {
30685     var primaries = [
30686             'building', 'highway', 'railway', 'waterway', 'aeroway',
30687             'motorway', 'boundary', 'power', 'amenity', 'natural', 'landuse',
30688             'leisure', 'place'
30689         ],
30690         statuses = [
30691             'proposed', 'construction', 'disused', 'abandoned', 'dismantled',
30692             'razed', 'demolished', 'obliterated'
30693         ],
30694         secondaries = [
30695             'oneway', 'bridge', 'tunnel', 'embankment', 'cutting', 'barrier'
30696         ],
30697         tagClassRe = /^tag-/,
30698         tags = function(entity) { return entity.tags; };
30699
30700
30701     var tagClasses = function(selection) {
30702         selection.each(function tagClassesEach(entity) {
30703             var value = this.className,
30704                 classes, primary, status;
30705
30706             if (value.baseVal !== undefined) value = value.baseVal;
30707
30708             classes = value.trim().split(/\s+/).filter(function(name) {
30709                 return name.length && !tagClassRe.test(name);
30710             }).join(' ');
30711
30712             var t = tags(entity), i, k, v;
30713
30714             // pick at most one primary classification tag..
30715             for (i = 0; i < primaries.length; i++) {
30716                 k = primaries[i];
30717                 v = t[k];
30718                 if (!v || v === 'no') continue;
30719
30720                 primary = k;
30721                 if (statuses.indexOf(v) !== -1) {   // e.g. `railway=abandoned`
30722                     status = v;
30723                     classes += ' tag-' + k;
30724                 } else {
30725                     classes += ' tag-' + k + ' tag-' + k + '-' + v;
30726                 }
30727
30728                 break;
30729             }
30730
30731             // add at most one ephemeral status tag, only if relates to primary tag..
30732             if (!status) {
30733                 for (i = 0; i < statuses.length; i++) {
30734                     k = statuses[i];
30735                     v = t[k];
30736                     if (!v || v === 'no') continue;
30737
30738                     if (v === 'yes') {   // e.g. `railway=rail + abandoned=yes`
30739                         status = k;
30740                     }
30741                     else if (primary && primary === v) {  // e.g. `railway=rail + abandoned=railway`
30742                         status = k;
30743                     } else if (!primary && primaries.indexOf(v) !== -1) {  // e.g. `abandoned=railway`
30744                         status = k;
30745                         primary = v;
30746                         classes += ' tag-' + v;
30747                     }  // else ignore e.g.  `highway=path + abandoned=railway`
30748
30749                     if (status) break;
30750                 }
30751             }
30752
30753             if (status) {
30754                 classes += ' tag-ephemeral';
30755             }
30756
30757             // add any secondary (structure) tags
30758             for (i = 0; i < secondaries.length; i++) {
30759                 k = secondaries[i];
30760                 v = t[k];
30761                 if (!v || v === 'no') continue;
30762                 classes += ' tag-' + k + ' tag-' + k + '-' + v;
30763             }
30764
30765             classes = classes.trim();
30766
30767             if (classes !== value) {
30768                 d3.select(this).attr('class', classes);
30769             }
30770         });
30771     };
30772
30773     tagClasses.tags = function(_) {
30774         if (!arguments.length) return tags;
30775         tags = _;
30776         return tagClasses;
30777     };
30778
30779     return tagClasses;
30780 };
30781 iD.svg.Turns = function(projection) {
30782     return function(surface, graph, turns) {
30783         function key(turn) {
30784             return [turn.from.node + turn.via.node + turn.to.node].join('-');
30785         }
30786
30787         function icon(turn) {
30788             var u = turn.u ? '-u' : '';
30789             if (!turn.restriction)
30790                 return '#icon-restriction-yes' + u;
30791             var restriction = graph.entity(turn.restriction).tags.restriction;
30792             return '#icon-restriction-' +
30793                 (!turn.indirect_restriction && /^only_/.test(restriction) ? 'only' : 'no') + u;
30794         }
30795
30796         var groups = surface.select('.layer-hit').selectAll('g.turn')
30797             .data(turns, key);
30798
30799         // Enter
30800
30801         var enter = groups.enter().append('g')
30802             .attr('class', 'turn');
30803
30804         var nEnter = enter.filter(function (turn) { return !turn.u; });
30805
30806         nEnter.append('rect')
30807             .attr('transform', 'translate(-12, -12)')
30808             .attr('width', '45')
30809             .attr('height', '25');
30810
30811         nEnter.append('use')
30812             .attr('transform', 'translate(-12, -12)')
30813             .attr('clip-path', 'url(#clip-square-45)');
30814
30815         var uEnter = enter.filter(function (turn) { return turn.u; });
30816
30817         uEnter.append('circle')
30818             .attr('r', '16');
30819
30820         uEnter.append('use')
30821             .attr('transform', 'translate(-16, -16)')
30822             .attr('clip-path', 'url(#clip-square-32)');
30823
30824         // Update
30825
30826         groups
30827             .attr('transform', function (turn) {
30828                 var v = graph.entity(turn.via.node),
30829                     t = graph.entity(turn.to.node),
30830                     a = iD.geo.angle(v, t, projection),
30831                     p = projection(v.loc),
30832                     r = turn.u ? 0 : 60;
30833
30834                 return 'translate(' + (r * Math.cos(a) + p[0]) + ',' + (r * Math.sin(a) + p[1]) + ')' +
30835                     'rotate(' + a * 180 / Math.PI + ')';
30836             });
30837
30838         groups.select('use')
30839             .attr('xlink:href', icon);
30840
30841         groups.select('rect');
30842         groups.select('circle');
30843
30844         // Exit
30845
30846         groups.exit()
30847             .remove();
30848
30849         return this;
30850     };
30851 };
30852 iD.svg.Vertices = function(projection, context) {
30853     var radiuses = {
30854         //       z16-, z17, z18+, tagged
30855         shadow: [6,    7.5,   7.5,  11.5],
30856         stroke: [2.5,  3.5,   3.5,  7],
30857         fill:   [1,    1.5,   1.5,  1.5]
30858     };
30859
30860     var hover;
30861
30862     function siblingAndChildVertices(ids, graph, extent) {
30863         var vertices = {};
30864
30865         function addChildVertices(entity) {
30866             if (!context.features().isHiddenFeature(entity, graph, entity.geometry(graph))) {
30867                 var i;
30868                 if (entity.type === 'way') {
30869                     for (i = 0; i < entity.nodes.length; i++) {
30870                         addChildVertices(graph.entity(entity.nodes[i]));
30871                     }
30872                 } else if (entity.type === 'relation') {
30873                     for (i = 0; i < entity.members.length; i++) {
30874                         var member = context.hasEntity(entity.members[i].id);
30875                         if (member) {
30876                             addChildVertices(member);
30877                         }
30878                     }
30879                 } else if (entity.intersects(extent, graph)) {
30880                     vertices[entity.id] = entity;
30881                 }
30882             }
30883         }
30884
30885         ids.forEach(function(id) {
30886             var entity = context.hasEntity(id);
30887             if (entity && entity.type === 'node') {
30888                 vertices[entity.id] = entity;
30889                 context.graph().parentWays(entity).forEach(function(entity) {
30890                     addChildVertices(entity);
30891                 });
30892             } else if (entity) {
30893                 addChildVertices(entity);
30894             }
30895         });
30896
30897         return vertices;
30898     }
30899
30900     function draw(selection, vertices, klass, graph, zoom) {
30901         var icons = {},
30902             z;
30903
30904         if (zoom < 17) {
30905             z = 0;
30906         } else if (zoom < 18) {
30907             z = 1;
30908         } else {
30909             z = 2;
30910         }
30911
30912         var groups = selection.data(vertices, function(entity) {
30913             return iD.Entity.key(entity);
30914         });
30915
30916         function icon(entity) {
30917             if (entity.id in icons) return icons[entity.id];
30918             icons[entity.id] =
30919                 entity.hasInterestingTags() &&
30920                 context.presets().match(entity, graph).icon;
30921             return icons[entity.id];
30922         }
30923
30924         function classCircle(klass) {
30925             return function(entity) {
30926                 this.setAttribute('class', 'node vertex ' + klass + ' ' + entity.id);
30927             };
30928         }
30929
30930         function setAttributes(selection) {
30931             ['shadow','stroke','fill'].forEach(function(klass) {
30932                 var rads = radiuses[klass];
30933                 selection.selectAll('.' + klass)
30934                     .each(function(entity) {
30935                         var i = z && icon(entity),
30936                             c = i ? 0.5 : 0,
30937                             r = rads[i ? 3 : z];
30938                         this.setAttribute('cx', c);
30939                         this.setAttribute('cy', -c);
30940                         this.setAttribute('r', r);
30941                         if (i && klass === 'fill') {
30942                             this.setAttribute('visibility', 'hidden');
30943                         } else {
30944                             this.removeAttribute('visibility');
30945                         }
30946                     });
30947             });
30948
30949             selection.selectAll('use')
30950                 .each(function() {
30951                     if (z) {
30952                         this.removeAttribute('visibility');
30953                     } else {
30954                         this.setAttribute('visibility', 'hidden');
30955                     }
30956                 });
30957         }
30958
30959         var enter = groups.enter()
30960             .append('g')
30961             .attr('class', function(d) { return 'node vertex ' + klass + ' ' + d.id; });
30962
30963         enter.append('circle')
30964             .each(classCircle('shadow'));
30965
30966         enter.append('circle')
30967             .each(classCircle('stroke'));
30968
30969         // Vertices with icons get a `use`.
30970         enter.filter(function(d) { return icon(d); })
30971             .append('use')
30972             .attr('transform', 'translate(-6, -6)')
30973             .attr('clip-path', 'url(#clip-square-12)')
30974             .attr('xlink:href', function(d) { return '#maki-' + icon(d) + '-12'; });
30975
30976         // Vertices with tags get a fill.
30977         enter.filter(function(d) { return d.hasInterestingTags(); })
30978             .append('circle')
30979             .each(classCircle('fill'));
30980
30981         groups
30982             .attr('transform', iD.svg.PointTransform(projection))
30983             .classed('shared', function(entity) { return graph.isShared(entity); })
30984             .call(setAttributes);
30985
30986         groups.exit()
30987             .remove();
30988     }
30989
30990     function drawVertices(surface, graph, entities, filter, extent, zoom) {
30991         var selected = siblingAndChildVertices(context.selectedIDs(), graph, extent),
30992             wireframe = surface.classed('fill-wireframe'),
30993             vertices = [];
30994
30995         for (var i = 0; i < entities.length; i++) {
30996             var entity = entities[i],
30997                 geometry = entity.geometry(graph);
30998
30999             if (wireframe && geometry === 'point') {
31000                 vertices.push(entity);
31001                 continue;
31002             }
31003
31004             if (geometry !== 'vertex')
31005                 continue;
31006
31007             if (entity.id in selected ||
31008                 entity.hasInterestingTags() ||
31009                 entity.isIntersection(graph)) {
31010                 vertices.push(entity);
31011             }
31012         }
31013
31014         surface.select('.layer-hit').selectAll('g.vertex.vertex-persistent')
31015             .filter(filter)
31016             .call(draw, vertices, 'vertex-persistent', graph, zoom);
31017
31018         drawHover(surface, graph, extent, zoom);
31019     }
31020
31021     function drawHover(surface, graph, extent, zoom) {
31022         var hovered = hover ? siblingAndChildVertices([hover.id], graph, extent) : {};
31023
31024         surface.select('.layer-hit').selectAll('g.vertex.vertex-hover')
31025             .call(draw, d3.values(hovered), 'vertex-hover', graph, zoom);
31026     }
31027
31028     drawVertices.drawHover = function(surface, graph, _, extent, zoom) {
31029         if (hover !== _) {
31030             hover = _;
31031             drawHover(surface, graph, extent, zoom);
31032         }
31033     };
31034
31035     return drawVertices;
31036 };
31037 iD.ui = function(context) {
31038     function render(container) {
31039         var map = context.map();
31040
31041         if (iD.detect().opera) container.classed('opera', true);
31042
31043         var hash = iD.behavior.Hash(context);
31044
31045         hash();
31046
31047         if (!hash.hadHash) {
31048             map.centerZoom([-77.02271, 38.90085], 20);
31049         }
31050
31051         container.append('svg')
31052             .attr('id', 'defs')
31053             .call(iD.svg.Defs(context));
31054
31055         container.append('div')
31056             .attr('id', 'sidebar')
31057             .attr('class', 'col4')
31058             .call(ui.sidebar);
31059
31060         var content = container.append('div')
31061             .attr('id', 'content');
31062
31063         var bar = content.append('div')
31064             .attr('id', 'bar')
31065             .attr('class', 'fillD');
31066
31067         var m = content.append('div')
31068             .attr('id', 'map')
31069             .call(map);
31070
31071         content.append('div')
31072             .attr('class', 'map-in-map')
31073             .style('display', 'none')
31074             .call(iD.ui.MapInMap(context));
31075
31076         content.append('div')
31077             .attr('class', 'infobox fillD2')
31078             .style('display', 'none')
31079             .call(iD.ui.Info(context));
31080
31081         bar.append('div')
31082             .attr('class', 'spacer col4');
31083
31084         var limiter = bar.append('div')
31085             .attr('class', 'limiter');
31086
31087         limiter.append('div')
31088             .attr('class', 'button-wrap joined col3')
31089             .call(iD.ui.Modes(context), limiter);
31090
31091         limiter.append('div')
31092             .attr('class', 'button-wrap joined col1')
31093             .call(iD.ui.UndoRedo(context));
31094
31095         limiter.append('div')
31096             .attr('class', 'button-wrap col1')
31097             .call(iD.ui.Save(context));
31098
31099         bar.append('div')
31100             .attr('class', 'full-screen')
31101             .call(iD.ui.FullScreen(context));
31102
31103         bar.append('div')
31104             .attr('class', 'spinner')
31105             .call(iD.ui.Spinner(context));
31106
31107         var controls = bar.append('div')
31108             .attr('class', 'map-controls');
31109
31110         controls.append('div')
31111             .attr('class', 'map-control zoombuttons')
31112             .call(iD.ui.Zoom(context));
31113
31114         controls.append('div')
31115             .attr('class', 'map-control geolocate-control')
31116             .call(iD.ui.Geolocate(map));
31117
31118         controls.append('div')
31119             .attr('class', 'map-control background-control')
31120             .call(iD.ui.Background(context));
31121
31122         controls.append('div')
31123             .attr('class', 'map-control map-data-control')
31124             .call(iD.ui.MapData(context));
31125
31126         controls.append('div')
31127             .attr('class', 'map-control help-control')
31128             .call(iD.ui.Help(context));
31129
31130         var about = content.append('div')
31131             .attr('id', 'about');
31132
31133         about.append('div')
31134             .attr('id', 'attrib')
31135             .call(iD.ui.Attribution(context));
31136
31137         var footer = about.append('div')
31138             .attr('id', 'footer')
31139             .attr('class', 'fillD');
31140
31141         footer.append('div')
31142             .attr('class', 'api-status')
31143             .call(iD.ui.Status(context));
31144
31145         footer.append('div')
31146             .attr('id', 'scale-block')
31147             .call(iD.ui.Scale(context));
31148
31149         var aboutList = footer.append('div')
31150             .attr('id', 'info-block')
31151             .append('ul')
31152             .attr('id', 'about-list');
31153
31154         if (!context.embed()) {
31155             aboutList.call(iD.ui.Account(context));
31156         }
31157
31158         aboutList.append('li')
31159             .append('a')
31160             .attr('target', '_blank')
31161             .attr('tabindex', -1)
31162             .attr('href', 'http://github.com/openstreetmap/iD')
31163             .text(iD.version);
31164
31165         var bugReport = aboutList.append('li')
31166             .append('a')
31167             .attr('target', '_blank')
31168             .attr('tabindex', -1)
31169             .attr('href', 'https://github.com/openstreetmap/iD/issues');
31170
31171         bugReport.append('span')
31172             .attr('class','icon bug light');
31173
31174         bugReport.call(bootstrap.tooltip()
31175                 .title(t('report_a_bug'))
31176                 .placement('top')
31177             );
31178
31179         aboutList.append('li')
31180             .attr('class', 'feature-warning')
31181             .attr('tabindex', -1)
31182             .call(iD.ui.FeatureInfo(context));
31183
31184         aboutList.append('li')
31185             .attr('class', 'user-list')
31186             .attr('tabindex', -1)
31187             .call(iD.ui.Contributors(context));
31188
31189         window.onbeforeunload = function() {
31190             return context.save();
31191         };
31192
31193         window.onunload = function() {
31194             context.history().unlock();
31195         };
31196
31197         var mapDimensions = map.dimensions();
31198
31199         d3.select(window).on('resize.editor', function() {
31200             mapDimensions = m.dimensions();
31201             map.dimensions(m.dimensions());
31202         });
31203
31204         function pan(d) {
31205             return function() {
31206                 d3.event.preventDefault();
31207                 context.pan(d);
31208             };
31209         }
31210
31211         // pan amount
31212         var pa = 10;
31213
31214         var keybinding = d3.keybinding('main')
31215             .on('⌫', function() { d3.event.preventDefault(); })
31216             .on('←', pan([pa, 0]))
31217             .on('↑', pan([0, pa]))
31218             .on('→', pan([-pa, 0]))
31219             .on('↓', pan([0, -pa]))
31220             .on('⇧←', pan([mapDimensions[0], 0]))
31221             .on('⇧↑', pan([0, mapDimensions[1]]))
31222             .on('⇧→', pan([-mapDimensions[0], 0]))
31223             .on('⇧↓', pan([0, -mapDimensions[1]]))
31224             .on(iD.ui.cmd('⌘←'), pan([mapDimensions[0], 0]))
31225             .on(iD.ui.cmd('⌘↑'), pan([0, mapDimensions[1]]))
31226             .on(iD.ui.cmd('⌘→'), pan([-mapDimensions[0], 0]))
31227             .on(iD.ui.cmd('⌘↓'), pan([0, -mapDimensions[1]]));
31228
31229         d3.select(document)
31230             .call(keybinding);
31231
31232         context.enter(iD.modes.Browse(context));
31233
31234         context.container()
31235             .call(iD.ui.Splash(context))
31236             .call(iD.ui.Restore(context));
31237
31238         var authenticating = iD.ui.Loading(context)
31239             .message(t('loading_auth'));
31240
31241         context.connection()
31242             .on('authenticating.ui', function() {
31243                 context.container()
31244                     .call(authenticating);
31245             })
31246             .on('authenticated.ui', function() {
31247                 authenticating.close();
31248             });
31249     }
31250
31251     function ui(container) {
31252         context.container(container);
31253         context.loadLocale(function() {
31254             render(container);
31255         });
31256     }
31257
31258     ui.sidebar = iD.ui.Sidebar(context);
31259
31260     return ui;
31261 };
31262
31263 iD.ui.tooltipHtml = function(text, key) {
31264     var s = '<span>' + text + '</span>';
31265     if (key) {
31266         s += '<div class="keyhint-wrap">' +
31267             '<span> ' + (t('tooltip_keyhint')) + ' </span>' +
31268             '<span class="keyhint"> ' + key + '</span></div>';
31269     }
31270     return s;
31271 };
31272 iD.ui.Account = function(context) {
31273     var connection = context.connection();
31274
31275     function update(selection) {
31276         if (!connection.authenticated()) {
31277             selection.selectAll('#userLink, #logoutLink')
31278                 .classed('hide', true);
31279             return;
31280         }
31281
31282         connection.userDetails(function(err, details) {
31283             var userLink = selection.select('#userLink'),
31284                 logoutLink = selection.select('#logoutLink');
31285
31286             userLink.html('');
31287             logoutLink.html('');
31288
31289             if (err) return;
31290
31291             selection.selectAll('#userLink, #logoutLink')
31292                 .classed('hide', false);
31293
31294             // Link
31295             userLink.append('a')
31296                 .attr('href', connection.userURL(details.display_name))
31297                 .attr('target', '_blank');
31298
31299             // Add thumbnail or dont
31300             if (details.image_url) {
31301                 userLink.append('img')
31302                     .attr('class', 'icon icon-pre-text user-icon')
31303                     .attr('src', details.image_url);
31304             } else {
31305                 userLink.append('span')
31306                     .attr('class', 'icon avatar light icon-pre-text');
31307             }
31308
31309             // Add user name
31310             userLink.append('span')
31311                 .attr('class', 'label')
31312                 .text(details.display_name);
31313
31314             logoutLink.append('a')
31315                 .attr('class', 'logout')
31316                 .attr('href', '#')
31317                 .text(t('logout'))
31318                 .on('click.logout', function() {
31319                     d3.event.preventDefault();
31320                     connection.logout();
31321                 });
31322         });
31323     }
31324
31325     return function(selection) {
31326         selection.append('li')
31327             .attr('id', 'logoutLink')
31328             .classed('hide', true);
31329
31330         selection.append('li')
31331             .attr('id', 'userLink')
31332             .classed('hide', true);
31333
31334         connection.on('auth.account', function() { update(selection); });
31335         update(selection);
31336     };
31337 };
31338 iD.ui.Attribution = function(context) {
31339     var selection;
31340
31341     function attribution(data, klass) {
31342         var div = selection.selectAll('.' + klass)
31343             .data([0]);
31344
31345         div.enter()
31346             .append('div')
31347             .attr('class', klass);
31348
31349         var background = div.selectAll('.attribution')
31350             .data(data, function(d) { return d.name(); });
31351
31352         background.enter()
31353             .append('span')
31354             .attr('class', 'attribution')
31355             .each(function(d) {
31356                 if (d.terms_html) {
31357                     d3.select(this)
31358                         .html(d.terms_html);
31359                     return;
31360                 }
31361
31362                 var source = d.terms_text || d.id || d.name();
31363
31364                 if (d.logo) {
31365                     source = '<img class="source-image" src="' + context.imagePath(d.logo) + '">';
31366                 }
31367
31368                 if (d.terms_url) {
31369                     d3.select(this)
31370                         .append('a')
31371                         .attr('href', d.terms_url)
31372                         .attr('target', '_blank')
31373                         .html(source);
31374                 } else {
31375                     d3.select(this)
31376                         .text(source);
31377                 }
31378             });
31379
31380         background.exit()
31381             .remove();
31382
31383         var copyright = background.selectAll('.copyright-notice')
31384             .data(function(d) {
31385                 var notice = d.copyrightNotices(context.map().zoom(), context.map().extent());
31386                 return notice ? [notice] : [];
31387             });
31388
31389         copyright.enter()
31390             .append('span')
31391             .attr('class', 'copyright-notice');
31392
31393         copyright.text(String);
31394
31395         copyright.exit()
31396             .remove();
31397     }
31398
31399     function update() {
31400         attribution([context.background().baseLayerSource()], 'base-layer-attribution');
31401         attribution(context.background().overlayLayerSources().filter(function (s) {
31402             return s.validZoom(context.map().zoom());
31403         }), 'overlay-layer-attribution');
31404     }
31405
31406     return function(select) {
31407         selection = select;
31408
31409         context.background()
31410             .on('change.attribution', update);
31411
31412         context.map()
31413             .on('move.attribution', _.throttle(update, 400, {leading: false}));
31414
31415         update();
31416     };
31417 };
31418 iD.ui.Background = function(context) {
31419     var key = 'B',
31420         opacities = [1, 0.75, 0.5, 0.25],
31421         directions = [
31422             ['left', [1, 0]],
31423             ['top', [0, -1]],
31424             ['right', [-1, 0]],
31425             ['bottom', [0, 1]]],
31426         opacityDefault = (context.storage('background-opacity') !== null) ?
31427             (+context.storage('background-opacity')) : 0.5,
31428         customTemplate = context.storage('background-custom-template') || '';
31429
31430     // Can be 0 from <1.3.0 use or due to issue #1923.
31431     if (opacityDefault === 0) opacityDefault = 0.5;
31432
31433     function background(selection) {
31434
31435         function setOpacity(d) {
31436             var bg = context.container().selectAll('.background-layer')
31437                 .transition()
31438                 .style('opacity', d)
31439                 .attr('data-opacity', d);
31440
31441             if (!iD.detect().opera) {
31442                 iD.util.setTransform(bg, 0, 0);
31443             }
31444
31445             opacityList.selectAll('li')
31446                 .classed('active', function(_) { return _ === d; });
31447
31448             context.storage('background-opacity', d);
31449         }
31450
31451         function selectLayer() {
31452             function active(d) {
31453                 return context.background().showsLayer(d);
31454             }
31455
31456             content.selectAll('.layer, .custom_layer')
31457                 .classed('active', active)
31458                 .selectAll('input')
31459                 .property('checked', active);
31460         }
31461
31462         function clickSetSource(d) {
31463             d3.event.preventDefault();
31464             context.background().baseLayerSource(d);
31465             selectLayer();
31466         }
31467
31468         function editCustom() {
31469             d3.event.preventDefault();
31470             var template = window.prompt(t('background.custom_prompt'), customTemplate);
31471             if (!template ||
31472                 template.indexOf('google.com') !== -1 ||
31473                 template.indexOf('googleapis.com') !== -1 ||
31474                 template.indexOf('google.ru') !== -1) {
31475                 selectLayer();
31476                 return;
31477             }
31478             setCustom(template);
31479         }
31480
31481         function setCustom(template) {
31482             context.background().baseLayerSource(iD.BackgroundSource.Custom(template));
31483             selectLayer();
31484             context.storage('background-custom-template', template);
31485         }
31486
31487         function clickSetOverlay(d) {
31488             d3.event.preventDefault();
31489             context.background().toggleOverlayLayer(d);
31490             selectLayer();
31491         }
31492
31493         function drawList(layerList, type, change, filter) {
31494             var sources = context.background()
31495                 .sources(context.map().extent())
31496                 .filter(filter);
31497
31498             var layerLinks = layerList.selectAll('li.layer')
31499                 .data(sources, function(d) { return d.name(); });
31500
31501             var enter = layerLinks.enter()
31502                 .insert('li', '.custom_layer')
31503                 .attr('class', 'layer');
31504
31505             // only set tooltips for layers with tooltips
31506             enter.filter(function(d) { return d.description; })
31507                 .call(bootstrap.tooltip()
31508                     .title(function(d) { return d.description; })
31509                     .placement('top'));
31510
31511             var label = enter.append('label');
31512
31513             label.append('input')
31514                 .attr('type', type)
31515                 .attr('name', 'layers')
31516                 .on('change', change);
31517
31518             label.append('span')
31519                 .text(function(d) { return d.name(); });
31520
31521             layerLinks.exit()
31522                 .remove();
31523
31524             layerList.style('display', layerList.selectAll('li.layer').data().length > 0 ? 'block' : 'none');
31525         }
31526
31527         function update() {
31528             backgroundList.call(drawList, 'radio', clickSetSource, function(d) { return !d.overlay; });
31529             overlayList.call(drawList, 'checkbox', clickSetOverlay, function(d) { return d.overlay; });
31530
31531             selectLayer();
31532
31533             var source = context.background().baseLayerSource();
31534             if (source.id === 'custom') {
31535                 customTemplate = source.template;
31536             }
31537         }
31538
31539         function clickNudge(d) {
31540
31541             var timeout = window.setTimeout(function() {
31542                     interval = window.setInterval(nudge, 100);
31543                 }, 500),
31544                 interval;
31545
31546             d3.select(this).on('mouseup', function() {
31547                 window.clearInterval(interval);
31548                 window.clearTimeout(timeout);
31549                 nudge();
31550             });
31551
31552             function nudge() {
31553                 var offset = context.background()
31554                     .nudge(d[1], context.map().zoom())
31555                     .offset();
31556                 resetButton.classed('disabled', offset[0] === 0 && offset[1] === 0);
31557             }
31558         }
31559
31560         function hide() { setVisible(false); }
31561
31562         function toggle() {
31563             if (d3.event) d3.event.preventDefault();
31564             tooltip.hide(button);
31565             setVisible(!button.classed('active'));
31566         }
31567
31568         function setVisible(show) {
31569             if (show !== shown) {
31570                 button.classed('active', show);
31571                 shown = show;
31572
31573                 if (show) {
31574                     selection.on('mousedown.background-inside', function() {
31575                         return d3.event.stopPropagation();
31576                     });
31577                     content.style('display', 'block')
31578                         .style('right', '-300px')
31579                         .transition()
31580                         .duration(200)
31581                         .style('right', '0px');
31582                 } else {
31583                     content.style('display', 'block')
31584                         .style('right', '0px')
31585                         .transition()
31586                         .duration(200)
31587                         .style('right', '-300px')
31588                         .each('end', function() {
31589                             d3.select(this).style('display', 'none');
31590                         });
31591                     selection.on('mousedown.background-inside', null);
31592                 }
31593             }
31594         }
31595
31596
31597         var content = selection.append('div')
31598                 .attr('class', 'fillL map-overlay col3 content hide'),
31599             tooltip = bootstrap.tooltip()
31600                 .placement('left')
31601                 .html(true)
31602                 .title(iD.ui.tooltipHtml(t('background.description'), key)),
31603             button = selection.append('button')
31604                 .attr('tabindex', -1)
31605                 .on('click', toggle)
31606                 .call(tooltip),
31607             shown = false;
31608
31609         button.append('span')
31610             .attr('class', 'icon layers light');
31611
31612
31613         var opa = content.append('div')
31614                 .attr('class', 'opacity-options-wrapper');
31615
31616         opa.append('h4')
31617             .text(t('background.title'));
31618
31619         var opacityList = opa.append('ul')
31620             .attr('class', 'opacity-options');
31621
31622         opacityList.selectAll('div.opacity')
31623             .data(opacities)
31624             .enter()
31625             .append('li')
31626             .attr('data-original-title', function(d) {
31627                 return t('background.percent_brightness', { opacity: (d * 100) });
31628             })
31629             .on('click.set-opacity', setOpacity)
31630             .html('<div class="select-box"></div>')
31631             .call(bootstrap.tooltip()
31632                 .placement('left'))
31633             .append('div')
31634             .attr('class', 'opacity')
31635             .style('opacity', function(d) { return 1.25 - d; });
31636
31637         var backgroundList = content.append('ul')
31638             .attr('class', 'layer-list');
31639
31640         var custom = backgroundList.append('li')
31641             .attr('class', 'custom_layer')
31642             .datum(iD.BackgroundSource.Custom());
31643
31644         custom.append('button')
31645             .attr('class', 'layer-browse')
31646             .call(bootstrap.tooltip()
31647                 .title(t('background.custom_button'))
31648                 .placement('left'))
31649             .on('click', editCustom)
31650             .append('span')
31651             .attr('class', 'icon geocode');
31652
31653         var label = custom.append('label');
31654
31655         label.append('input')
31656             .attr('type', 'radio')
31657             .attr('name', 'layers')
31658             .on('change', function () {
31659                 if (customTemplate) {
31660                     setCustom(customTemplate);
31661                 } else {
31662                     editCustom();
31663                 }
31664             });
31665
31666         label.append('span')
31667             .text(t('background.custom'));
31668
31669         var overlayList = content.append('ul')
31670             .attr('class', 'layer-list');
31671
31672         var controls = content.append('div')
31673             .attr('class', 'controls-list');
31674
31675         var minimapLabel = controls
31676             .append('label')
31677             .call(bootstrap.tooltip()
31678                 .html(true)
31679                 .title(iD.ui.tooltipHtml(t('background.minimap.tooltip'), '/'))
31680                 .placement('top')
31681             );
31682
31683         minimapLabel.classed('minimap-toggle', true)
31684             .append('input')
31685             .attr('type', 'checkbox')
31686             .on('change', function() {
31687                 iD.ui.MapInMap.toggle();
31688                 d3.event.preventDefault();
31689             });
31690
31691         minimapLabel.append('span')
31692             .text(t('background.minimap.description'));
31693
31694         var adjustments = content.append('div')
31695             .attr('class', 'adjustments');
31696
31697         adjustments.append('a')
31698             .text(t('background.fix_misalignment'))
31699             .attr('href', '#')
31700             .classed('hide-toggle', true)
31701             .classed('expanded', false)
31702             .on('click', function() {
31703                 var exp = d3.select(this).classed('expanded');
31704                 nudgeContainer.style('display', exp ? 'none' : 'block');
31705                 d3.select(this).classed('expanded', !exp);
31706                 d3.event.preventDefault();
31707             });
31708
31709         var nudgeContainer = adjustments.append('div')
31710             .attr('class', 'nudge-container cf')
31711             .style('display', 'none');
31712
31713         nudgeContainer.selectAll('button')
31714             .data(directions).enter()
31715             .append('button')
31716             .attr('class', function(d) { return d[0] + ' nudge'; })
31717             .on('mousedown', clickNudge);
31718
31719         var resetButton = nudgeContainer.append('button')
31720             .attr('class', 'reset disabled')
31721             .on('click', function () {
31722                 context.background().offset([0, 0]);
31723                 resetButton.classed('disabled', true);
31724             });
31725
31726         resetButton.append('div')
31727             .attr('class', 'icon undo');
31728
31729         context.map()
31730             .on('move.background-update', _.debounce(update, 1000));
31731
31732         context.background()
31733             .on('change.background-update', update);
31734
31735         update();
31736         setOpacity(opacityDefault);
31737
31738         var keybinding = d3.keybinding('background')
31739             .on(key, toggle)
31740             .on('F', hide)
31741             .on('H', hide);
31742
31743         d3.select(document)
31744             .call(keybinding);
31745
31746         context.surface().on('mousedown.background-outside', hide);
31747         context.container().on('mousedown.background-outside', hide);
31748     }
31749
31750     return background;
31751 };
31752 // Translate a MacOS key command into the appropriate Windows/Linux equivalent.
31753 // For example, ⌘Z -> Ctrl+Z
31754 iD.ui.cmd = function(code) {
31755     if (iD.detect().os === 'mac')
31756         return code;
31757
31758     var replacements = {
31759         '⌘': 'Ctrl',
31760         '⇧': 'Shift',
31761         '⌥': 'Alt',
31762         '⌫': 'Backspace',
31763         '⌦': 'Delete'
31764     }, keys = [];
31765
31766     if (iD.detect().os === 'win') {
31767         if (code === '⌘⇧Z') return 'Ctrl+Y';
31768     }
31769
31770     for (var i = 0; i < code.length; i++) {
31771         if (code[i] in replacements) {
31772             keys.push(replacements[code[i]]);
31773         } else {
31774             keys.push(code[i]);
31775         }
31776     }
31777
31778     return keys.join('+');
31779 };
31780 iD.ui.Commit = function(context) {
31781     var dispatch = d3.dispatch('cancel', 'save');
31782
31783     function commit(selection) {
31784         var changes = context.history().changes(),
31785             summary = context.history().difference().summary();
31786
31787         function zoomToEntity(change) {
31788             var entity = change.entity;
31789             if (change.changeType !== 'deleted' &&
31790                 context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
31791                 context.map().zoomTo(entity);
31792                 context.surface().selectAll(
31793                     iD.util.entityOrMemberSelector([entity.id], context.graph()))
31794                     .classed('hover', true);
31795             }
31796         }
31797
31798         var header = selection.append('div')
31799             .attr('class', 'header fillL');
31800
31801         header.append('h3')
31802             .text(t('commit.title'));
31803
31804         var body = selection.append('div')
31805             .attr('class', 'body');
31806
31807
31808         // Comment Section
31809         var commentSection = body.append('div')
31810             .attr('class', 'modal-section form-field commit-form');
31811
31812         commentSection.append('label')
31813             .attr('class', 'form-label')
31814             .text(t('commit.message_label'));
31815
31816         var commentField = commentSection.append('textarea')
31817             .attr('placeholder', t('commit.description_placeholder'))
31818             .attr('maxlength', 255)
31819             .property('value', context.storage('comment') || '')
31820             .on('blur.save', function () {
31821                 context.storage('comment', this.value);
31822             });
31823
31824         commentField.node().select();
31825
31826
31827         // Warnings
31828         var warnings = body.selectAll('div.warning-section')
31829             .data([context.history().validate(changes)])
31830             .enter()
31831             .append('div')
31832             .attr('class', 'modal-section warning-section fillL2')
31833             .style('display', function(d) { return _.isEmpty(d) ? 'none' : null; })
31834             .style('background', '#ffb');
31835
31836         warnings.append('h3')
31837             .text(t('commit.warnings'));
31838
31839         var warningLi = warnings.append('ul')
31840             .attr('class', 'changeset-list')
31841             .selectAll('li')
31842             .data(function(d) { return d; })
31843             .enter()
31844             .append('li')
31845             .style()
31846             .on('mouseover', mouseover)
31847             .on('mouseout', mouseout)
31848             .on('click', warningClick);
31849
31850         warningLi.append('span')
31851             .attr('class', 'alert icon icon-pre-text');
31852
31853         warningLi.append('strong').text(function(d) {
31854             return d.message;
31855         });
31856
31857         warningLi.filter(function(d) { return d.tooltip; })
31858             .call(bootstrap.tooltip()
31859                 .title(function(d) { return d.tooltip; })
31860                 .placement('top')
31861             );
31862
31863
31864         // Upload Explanation
31865         var saveSection = body.append('div')
31866             .attr('class','modal-section save-section fillL cf');
31867
31868         var prose = saveSection.append('p')
31869             .attr('class', 'commit-info')
31870             .html(t('commit.upload_explanation'));
31871
31872         context.connection().userDetails(function(err, user) {
31873             if (err) return;
31874
31875             var userLink = d3.select(document.createElement('div'));
31876
31877             if (user.image_url) {
31878                 userLink.append('img')
31879                     .attr('src', user.image_url)
31880                     .attr('class', 'icon icon-pre-text user-icon');
31881             }
31882
31883             userLink.append('a')
31884                 .attr('class','user-info')
31885                 .text(user.display_name)
31886                 .attr('href', context.connection().userURL(user.display_name))
31887                 .attr('tabindex', -1)
31888                 .attr('target', '_blank');
31889
31890             prose.html(t('commit.upload_explanation_with_user', {user: userLink.html()}));
31891         });
31892
31893
31894         // Buttons
31895         var buttonSection = saveSection.append('div')
31896             .attr('class','buttons fillL cf');
31897
31898         var saveButton = buttonSection.append('button')
31899             .attr('class', 'action col5 button')
31900             .on('click.save', function() {
31901                 dispatch.save({
31902                     comment: commentField.node().value
31903                 });
31904             });
31905
31906         saveButton.append('span')
31907             .attr('class', 'label')
31908             .text(t('commit.save'));
31909
31910         var cancelButton = buttonSection.append('button')
31911             .attr('class', 'action col5 button')
31912             .on('click.cancel', function() { dispatch.cancel(); });
31913
31914         cancelButton.append('span')
31915             .attr('class', 'label')
31916             .text(t('commit.cancel'));
31917
31918
31919         // Changes
31920         var changeSection = body.selectAll('div.commit-section')
31921             .data([0])
31922             .enter()
31923             .append('div')
31924             .attr('class', 'commit-section modal-section fillL2');
31925
31926         changeSection.append('h3')
31927             .text(t('commit.changes', {count: summary.length}));
31928
31929         var li = changeSection.append('ul')
31930             .attr('class', 'changeset-list')
31931             .selectAll('li')
31932             .data(summary)
31933             .enter()
31934             .append('li')
31935             .on('mouseover', mouseover)
31936             .on('mouseout', mouseout)
31937             .on('click', zoomToEntity);
31938
31939         li.append('span')
31940             .attr('class', function(d) {
31941                 return d.entity.geometry(d.graph) + ' ' + d.changeType + ' icon icon-pre-text';
31942             });
31943
31944         li.append('span')
31945             .attr('class', 'change-type')
31946             .text(function(d) {
31947                 return t('commit.' + d.changeType) + ' ';
31948             });
31949
31950         li.append('strong')
31951             .attr('class', 'entity-type')
31952             .text(function(d) {
31953                 return context.presets().match(d.entity, d.graph).name();
31954             });
31955
31956         li.append('span')
31957             .attr('class', 'entity-name')
31958             .text(function(d) {
31959                 var name = iD.util.displayName(d.entity) || '',
31960                     string = '';
31961                 if (name !== '') string += ':';
31962                 return string += ' ' + name;
31963             });
31964
31965         li.style('opacity', 0)
31966             .transition()
31967             .style('opacity', 1);
31968
31969         li.style('opacity', 0)
31970             .transition()
31971             .style('opacity', 1);
31972
31973         function mouseover(d) {
31974             if (d.entity) {
31975                 context.surface().selectAll(
31976                     iD.util.entityOrMemberSelector([d.entity.id], context.graph())
31977                 ).classed('hover', true);
31978             }
31979         }
31980
31981         function mouseout() {
31982             context.surface().selectAll('.hover')
31983                 .classed('hover', false);
31984         }
31985
31986         function warningClick(d) {
31987             if (d.entity) {
31988                 context.map().zoomTo(d.entity);
31989                 context.enter(
31990                     iD.modes.Select(context, [d.entity.id])
31991                         .suppressMenu(true));
31992             }
31993         }
31994     }
31995
31996     return d3.rebind(commit, dispatch, 'on');
31997 };
31998 iD.ui.confirm = function(selection) {
31999     var modal = iD.ui.modal(selection);
32000
32001     modal.select('.modal')
32002         .classed('modal-alert', true);
32003
32004     var section = modal.select('.content');
32005
32006     section.append('div')
32007         .attr('class', 'modal-section header');
32008
32009     section.append('div')
32010         .attr('class', 'modal-section message-text');
32011
32012     var buttons = section.append('div')
32013         .attr('class', 'modal-section buttons cf');
32014
32015     modal.okButton = function() {
32016         buttons
32017             .append('button')
32018             .attr('class', 'action col4')
32019             .on('click.confirm', function() {
32020                 modal.remove();
32021             })
32022             .text(t('confirm.okay'));
32023
32024         return modal;
32025     };
32026
32027     return modal;
32028 };
32029 iD.ui.Conflicts = function(context) {
32030     var dispatch = d3.dispatch('download', 'cancel', 'save'),
32031         list;
32032
32033     function conflicts(selection) {
32034         var header = selection
32035             .append('div')
32036             .attr('class', 'header fillL');
32037
32038         header
32039             .append('button')
32040             .attr('class', 'fr')
32041             .on('click', function() { dispatch.cancel(); })
32042             .append('span')
32043             .attr('class', 'icon close');
32044
32045         header
32046             .append('h3')
32047             .text(t('save.conflict.header'));
32048
32049         var body = selection
32050             .append('div')
32051             .attr('class', 'body fillL');
32052
32053         body
32054             .append('div')
32055             .attr('class', 'conflicts-help')
32056             .text(t('save.conflict.help'))
32057             .append('a')
32058             .attr('class', 'conflicts-download')
32059             .text(t('save.conflict.download_changes'))
32060             .on('click.download', function() { dispatch.download(); });
32061
32062         body
32063             .append('div')
32064             .attr('class', 'conflict-container fillL3')
32065             .call(showConflict, 0);
32066
32067         body
32068             .append('div')
32069             .attr('class', 'conflicts-done')
32070             .attr('opacity', 0)
32071             .style('display', 'none')
32072             .text(t('save.conflict.done'));
32073
32074         var buttons = body
32075             .append('div')
32076             .attr('class','buttons col12 joined conflicts-buttons');
32077
32078         buttons
32079             .append('button')
32080             .attr('disabled', list.length > 1)
32081             .attr('class', 'action conflicts-button col6')
32082             .text(t('save.title'))
32083             .on('click.try_again', function() { dispatch.save(); });
32084
32085         buttons
32086             .append('button')
32087             .attr('class', 'secondary-action conflicts-button col6')
32088             .text(t('confirm.cancel'))
32089             .on('click.cancel', function() { dispatch.cancel(); });
32090     }
32091
32092
32093     function showConflict(selection, index) {
32094         if (index < 0 || index >= list.length) return;
32095
32096         var parent = d3.select(selection.node().parentElement);
32097
32098         // enable save button if this is the last conflict being reviewed..
32099         if (index === list.length - 1) {
32100             window.setTimeout(function() {
32101                 parent.select('.conflicts-button')
32102                     .attr('disabled', null);
32103
32104                 parent.select('.conflicts-done')
32105                     .transition()
32106                     .attr('opacity', 1)
32107                     .style('display', 'block');
32108             }, 250);
32109         }
32110
32111         var item = selection
32112             .selectAll('.conflict')
32113             .data([list[index]]);
32114
32115         var enter = item.enter()
32116             .append('div')
32117             .attr('class', 'conflict');
32118
32119         enter
32120             .append('h4')
32121             .attr('class', 'conflict-count')
32122             .text(t('save.conflict.count', { num: index + 1, total: list.length }));
32123
32124         enter
32125             .append('a')
32126             .attr('class', 'conflict-description')
32127             .attr('href', '#')
32128             .text(function(d) { return d.name; })
32129             .on('click', function(d) {
32130                 zoomToEntity(d.id);
32131                 d3.event.preventDefault();
32132             });
32133
32134         var details = enter
32135             .append('div')
32136             .attr('class', 'conflict-detail-container');
32137
32138         details
32139             .append('ul')
32140             .attr('class', 'conflict-detail-list')
32141             .selectAll('li')
32142             .data(function(d) { return d.details || []; })
32143             .enter()
32144             .append('li')
32145             .attr('class', 'conflict-detail-item')
32146             .html(function(d) { return d; });
32147
32148         details
32149             .append('div')
32150             .attr('class', 'conflict-choices')
32151             .call(addChoices);
32152
32153         details
32154             .append('div')
32155             .attr('class', 'conflict-nav-buttons joined cf')
32156             .selectAll('button')
32157             .data(['previous', 'next'])
32158             .enter()
32159             .append('button')
32160             .text(function(d) { return t('save.conflict.' + d); })
32161             .attr('class', 'conflict-nav-button action col6')
32162             .attr('disabled', function(d, i) {
32163                 return (i === 0 && index === 0) ||
32164                     (i === 1 && index === list.length - 1) || null;
32165             })
32166             .on('click', function(d, i) {
32167                 var container = parent.select('.conflict-container'),
32168                 sign = (i === 0 ? -1 : 1);
32169
32170                 container
32171                     .selectAll('.conflict')
32172                     .remove();
32173
32174                 container
32175                     .call(showConflict, index + sign);
32176
32177                 d3.event.preventDefault();
32178             });
32179
32180         item.exit()
32181             .remove();
32182
32183     }
32184
32185     function addChoices(selection) {
32186         var choices = selection
32187             .append('ul')
32188             .attr('class', 'layer-list')
32189             .selectAll('li')
32190             .data(function(d) { return d.choices || []; });
32191
32192         var enter = choices.enter()
32193             .append('li')
32194             .attr('class', 'layer');
32195
32196         var label = enter
32197             .append('label');
32198
32199         label
32200             .append('input')
32201             .attr('type', 'radio')
32202             .attr('name', function(d) { return d.id; })
32203             .on('change', function(d, i) {
32204                 var ul = this.parentElement.parentElement.parentElement;
32205                 ul.__data__.chosen = i;
32206                 choose(ul, d);
32207             });
32208
32209         label
32210             .append('span')
32211             .text(function(d) { return d.text; });
32212
32213         choices
32214             .each(function(d, i) {
32215                 var ul = this.parentElement;
32216                 if (ul.__data__.chosen === i) choose(ul, d);
32217             });
32218     }
32219
32220     function choose(ul, datum) {
32221         if (d3.event) d3.event.preventDefault();
32222
32223         d3.select(ul)
32224             .selectAll('li')
32225             .classed('active', function(d) { return d === datum; })
32226             .selectAll('input')
32227             .property('checked', function(d) { return d === datum; });
32228
32229         var extent = iD.geo.Extent(),
32230             entity;
32231
32232         entity = context.graph().hasEntity(datum.id);
32233         if (entity) extent._extend(entity.extent(context.graph()));
32234
32235         datum.action();
32236
32237         entity = context.graph().hasEntity(datum.id);
32238         if (entity) extent._extend(entity.extent(context.graph()));
32239
32240         zoomToEntity(datum.id, extent);
32241     }
32242
32243     function zoomToEntity(id, extent) {
32244         context.surface().selectAll('.hover')
32245             .classed('hover', false);
32246
32247         var entity = context.graph().hasEntity(id);
32248         if (entity) {
32249             if (extent) {
32250                 context.map().trimmedExtent(extent);
32251             } else {
32252                 context.map().zoomTo(entity);
32253             }
32254             context.surface().selectAll(
32255                 iD.util.entityOrMemberSelector([entity.id], context.graph()))
32256                 .classed('hover', true);
32257         }
32258     }
32259
32260
32261     // The conflict list should be an array of objects like:
32262     // {
32263     //     id: id,
32264     //     name: entityName(local),
32265     //     details: merge.conflicts(),
32266     //     chosen: 1,
32267     //     choices: [
32268     //         choice(id, keepMine, forceLocal),
32269     //         choice(id, keepTheirs, forceRemote)
32270     //     ]
32271     // }
32272     conflicts.list = function(_) {
32273         if (!arguments.length) return list;
32274         list = _;
32275         return conflicts;
32276     };
32277
32278     return d3.rebind(conflicts, dispatch, 'on');
32279 };
32280 iD.ui.Contributors = function(context) {
32281     function update(selection) {
32282         var users = {},
32283             limit = 4,
32284             entities = context.intersects(context.map().extent());
32285
32286         entities.forEach(function(entity) {
32287             if (entity && entity.user) users[entity.user] = true;
32288         });
32289
32290         var u = Object.keys(users),
32291             subset = u.slice(0, u.length > limit ? limit - 1 : limit);
32292
32293         selection.html('')
32294             .append('span')
32295             .attr('class', 'icon nearby light icon-pre-text');
32296
32297         var userList = d3.select(document.createElement('span'));
32298
32299         userList.selectAll()
32300             .data(subset)
32301             .enter()
32302             .append('a')
32303             .attr('class', 'user-link')
32304             .attr('href', function(d) { return context.connection().userURL(d); })
32305             .attr('target', '_blank')
32306             .attr('tabindex', -1)
32307             .text(String);
32308
32309         if (u.length > limit) {
32310             var count = d3.select(document.createElement('span'));
32311
32312             count.append('a')
32313                 .attr('target', '_blank')
32314                 .attr('tabindex', -1)
32315                 .attr('href', function() {
32316                     return context.connection().changesetsURL(context.map().center(), context.map().zoom());
32317                 })
32318                 .text(u.length - limit + 1);
32319
32320             selection.append('span')
32321                 .html(t('contributors.truncated_list', {users: userList.html(), count: count.html()}));
32322         } else {
32323             selection.append('span')
32324                 .html(t('contributors.list', {users: userList.html()}));
32325         }
32326
32327         if (!u.length) {
32328             selection.transition().style('opacity', 0);
32329         } else if (selection.style('opacity') === '0') {
32330             selection.transition().style('opacity', 1);
32331         }
32332     }
32333
32334     return function(selection) {
32335         update(selection);
32336
32337         context.connection().on('loaded.contributors', function() {
32338             update(selection);
32339         });
32340
32341         context.map().on('move.contributors', _.debounce(function() {
32342             update(selection);
32343         }, 500));
32344     };
32345 };
32346 iD.ui.Disclosure = function() {
32347     var dispatch = d3.dispatch('toggled'),
32348         title,
32349         expanded = false,
32350         content = function () {};
32351
32352     var disclosure = function(selection) {
32353         var $link = selection.selectAll('.hide-toggle')
32354             .data([0]);
32355
32356         $link.enter().append('a')
32357             .attr('href', '#')
32358             .attr('class', 'hide-toggle');
32359
32360         $link.text(title)
32361             .on('click', toggle)
32362             .classed('expanded', expanded);
32363
32364         var $body = selection.selectAll('div')
32365             .data([0]);
32366
32367         $body.enter().append('div');
32368
32369         $body.classed('hide', !expanded)
32370             .call(content);
32371
32372         function toggle() {
32373             expanded = !expanded;
32374             $link.classed('expanded', expanded);
32375             $body.call(iD.ui.Toggle(expanded));
32376             dispatch.toggled(expanded);
32377         }
32378     };
32379
32380     disclosure.title = function(_) {
32381         if (!arguments.length) return title;
32382         title = _;
32383         return disclosure;
32384     };
32385
32386     disclosure.expanded = function(_) {
32387         if (!arguments.length) return expanded;
32388         expanded = _;
32389         return disclosure;
32390     };
32391
32392     disclosure.content = function(_) {
32393         if (!arguments.length) return content;
32394         content = _;
32395         return disclosure;
32396     };
32397
32398     return d3.rebind(disclosure, dispatch, 'on');
32399 };
32400 iD.ui.EntityEditor = function(context) {
32401     var event = d3.dispatch('choose'),
32402         state = 'select',
32403         id,
32404         preset,
32405         reference;
32406
32407     var presetEditor = iD.ui.preset(context)
32408         .on('change', changeTags);
32409     var rawTagEditor = iD.ui.RawTagEditor(context)
32410         .on('change', changeTags);
32411
32412     function entityEditor(selection) {
32413         var entity = context.entity(id),
32414             tags = _.clone(entity.tags);
32415
32416         var $header = selection.selectAll('.header')
32417             .data([0]);
32418
32419         // Enter
32420
32421         var $enter = $header.enter().append('div')
32422             .attr('class', 'header fillL cf');
32423
32424         $enter.append('button')
32425             .attr('class', 'fr preset-close')
32426             .append('span')
32427             .attr('class', 'icon close');
32428
32429         $enter.append('h3');
32430
32431         // Update
32432
32433         $header.select('h3')
32434             .text(t('inspector.edit'));
32435
32436         $header.select('.preset-close')
32437             .on('click', function() {
32438                 context.enter(iD.modes.Browse(context));
32439             });
32440
32441         var $body = selection.selectAll('.inspector-body')
32442             .data([0]);
32443
32444         // Enter
32445
32446         $enter = $body.enter().append('div')
32447             .attr('class', 'inspector-body');
32448
32449         $enter.append('div')
32450             .attr('class', 'preset-list-item inspector-inner')
32451             .append('div')
32452             .attr('class', 'preset-list-button-wrap')
32453             .append('button')
32454             .attr('class', 'preset-list-button preset-reset')
32455             .call(bootstrap.tooltip()
32456                 .title(t('inspector.back_tooltip'))
32457                 .placement('bottom'))
32458             .append('div')
32459             .attr('class', 'label');
32460
32461         $body.select('.preset-list-button-wrap')
32462             .call(reference.button);
32463
32464         $body.select('.preset-list-item')
32465             .call(reference.body);
32466
32467         $enter.append('div')
32468             .attr('class', 'inspector-border inspector-preset');
32469
32470         $enter.append('div')
32471             .attr('class', 'inspector-border raw-tag-editor inspector-inner');
32472
32473         $enter.append('div')
32474             .attr('class', 'inspector-border raw-member-editor inspector-inner');
32475
32476         $enter.append('div')
32477             .attr('class', 'raw-membership-editor inspector-inner');
32478
32479         selection.selectAll('.preset-reset')
32480             .on('click', function() {
32481                 event.choose(preset);
32482             });
32483
32484         // Update
32485
32486         $body.select('.preset-list-item button')
32487             .call(iD.ui.PresetIcon()
32488                 .geometry(context.geometry(id))
32489                 .preset(preset));
32490
32491         $body.select('.preset-list-item .label')
32492             .text(preset.name());
32493
32494         $body.select('.inspector-preset')
32495             .call(presetEditor
32496                 .preset(preset)
32497                 .entityID(id)
32498                 .tags(tags)
32499                 .state(state));
32500
32501         $body.select('.raw-tag-editor')
32502             .call(rawTagEditor
32503                 .preset(preset)
32504                 .entityID(id)
32505                 .tags(tags)
32506                 .state(state));
32507
32508         if (entity.type === 'relation') {
32509             $body.select('.raw-member-editor')
32510                 .style('display', 'block')
32511                 .call(iD.ui.RawMemberEditor(context)
32512                     .entityID(id));
32513         } else {
32514             $body.select('.raw-member-editor')
32515                 .style('display', 'none');
32516         }
32517
32518         $body.select('.raw-membership-editor')
32519             .call(iD.ui.RawMembershipEditor(context)
32520                 .entityID(id));
32521
32522         function historyChanged() {
32523             if (state === 'hide') return;
32524             var entity = context.hasEntity(id);
32525             if (!entity) return;
32526             entityEditor.preset(context.presets().match(entity, context.graph()));
32527             entityEditor(selection);
32528         }
32529
32530         context.history()
32531             .on('change.entity-editor', historyChanged);
32532     }
32533
32534     function clean(o) {
32535
32536         function cleanVal(k, v) {
32537             function keepSpaces(k) {
32538                 var whitelist = ['opening_hours', 'service_times', 'collection_times',
32539                     'operating_times', 'smoking_hours', 'happy_hours'];
32540                 return _.any(whitelist, function(s) { return k.indexOf(s) !== -1; });
32541             }
32542
32543             var blacklist = ['description', 'note', 'fixme'];
32544             if (_.any(blacklist, function(s) { return k.indexOf(s) !== -1; })) return v;
32545
32546             var cleaned = v.split(';')
32547                 .map(function(s) { return s.trim(); })
32548                 .join(keepSpaces(k) ? '; ' : ';');
32549
32550             // The code below is not intended to validate websites and emails.
32551             // It is only intended to prevent obvious copy-paste errors. (#2323)
32552
32553             // clean website-like tags
32554             if (k.indexOf('website') !== -1 || cleaned.indexOf('http') === 0) {
32555                 cleaned = cleaned
32556                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32557                     .replace(/[^\w\+\-\.\/\?\[\]\(\)~!@#$%&*',:;=]/g, encodeURIComponent);
32558
32559             // clean email-like tags
32560             } else if (k.indexOf('email') !== -1) {
32561                 cleaned = cleaned
32562                     .replace(/[\u200B-\u200F\uFEFF]/g, '')  // strip LRM and other zero width chars
32563                     .replace(/[^\w\+\-\.\/\?\|~!@#$%^&*'`{};=]/g, '');  // note: ';' allowed as OSM delimiter
32564             }
32565
32566             return cleaned;
32567         }
32568
32569         var out = {}, k, v;
32570         for (k in o) {
32571             if (k && (v = o[k]) !== undefined) {
32572                 out[k] = cleanVal(k, v);
32573             }
32574         }
32575         return out;
32576     }
32577
32578     function changeTags(changed) {
32579         var entity = context.entity(id),
32580             tags = clean(_.extend({}, entity.tags, changed));
32581
32582         if (!_.isEqual(entity.tags, tags)) {
32583             context.perform(
32584                 iD.actions.ChangeTags(id, tags),
32585                 t('operations.change_tags.annotation'));
32586         }
32587     }
32588
32589     entityEditor.state = function(_) {
32590         if (!arguments.length) return state;
32591         state = _;
32592         return entityEditor;
32593     };
32594
32595     entityEditor.entityID = function(_) {
32596         if (!arguments.length) return id;
32597         id = _;
32598         entityEditor.preset(context.presets().match(context.entity(id), context.graph()));
32599         return entityEditor;
32600     };
32601
32602     entityEditor.preset = function(_) {
32603         if (!arguments.length) return preset;
32604         if (_ !== preset) {
32605             preset = _;
32606             reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context)
32607                 .showing(false);
32608         }
32609         return entityEditor;
32610     };
32611
32612     return d3.rebind(entityEditor, event, 'on');
32613 };
32614 iD.ui.FeatureInfo = function(context) {
32615     function update(selection) {
32616         var features = context.features(),
32617             stats = features.stats(),
32618             count = 0,
32619             hiddenList = _.compact(_.map(features.hidden(), function(k) {
32620                 if (stats[k]) {
32621                     count += stats[k];
32622                     return String(stats[k]) + ' ' + t('feature.' + k + '.description');
32623                 }
32624             }));
32625
32626         selection.html('');
32627
32628         if (hiddenList.length) {
32629             var tooltip = bootstrap.tooltip()
32630                     .placement('top')
32631                     .html(true)
32632                     .title(function() {
32633                         return iD.ui.tooltipHtml(hiddenList.join('<br/>'));
32634                     });
32635
32636             var warning = selection.append('a')
32637                 .attr('href', '#')
32638                 .attr('tabindex', -1)
32639                 .html(t('feature_info.hidden_warning', { count: count }))
32640                 .call(tooltip)
32641                 .on('click', function() {
32642                     tooltip.hide(warning);
32643                     // open map data panel?
32644                     d3.event.preventDefault();
32645                 });
32646         }
32647
32648         selection
32649             .classed('hide', !hiddenList.length);
32650     }
32651
32652     return function(selection) {
32653         update(selection);
32654
32655         context.features().on('change.feature_info', function() {
32656             update(selection);
32657         });
32658     };
32659 };
32660 iD.ui.FeatureList = function(context) {
32661     var geocodeResults;
32662
32663     function featureList(selection) {
32664         var header = selection.append('div')
32665             .attr('class', 'header fillL cf');
32666
32667         header.append('h3')
32668             .text(t('inspector.feature_list'));
32669
32670         function keypress() {
32671             var q = search.property('value'),
32672                 items = list.selectAll('.feature-list-item');
32673             if (d3.event.keyCode === 13 && q.length && items.size()) {
32674                 click(items.datum());
32675             }
32676         }
32677
32678         function inputevent() {
32679             geocodeResults = undefined;
32680             drawList();
32681         }
32682
32683         var searchWrap = selection.append('div')
32684             .attr('class', 'search-header');
32685
32686         var search = searchWrap.append('input')
32687             .attr('placeholder', t('inspector.search'))
32688             .attr('type', 'search')
32689             .on('keypress', keypress)
32690             .on('input', inputevent);
32691
32692         searchWrap.append('span')
32693             .attr('class', 'icon search');
32694
32695         var listWrap = selection.append('div')
32696             .attr('class', 'inspector-body');
32697
32698         var list = listWrap.append('div')
32699             .attr('class', 'feature-list cf');
32700
32701         context.map()
32702             .on('drawn.feature-list', mapDrawn);
32703
32704         function mapDrawn(e) {
32705             if (e.full) {
32706                 drawList();
32707             }
32708         }
32709
32710         function features() {
32711             var entities = {},
32712                 result = [],
32713                 graph = context.graph(),
32714                 q = search.property('value').toLowerCase();
32715
32716             if (!q) return result;
32717
32718             var idMatch = q.match(/^([nwr])([0-9]+)$/);
32719
32720             if (idMatch) {
32721                 result.push({
32722                     id: idMatch[0],
32723                     geometry: idMatch[1] === 'n' ? 'point' : idMatch[1] === 'w' ? 'line' : 'relation',
32724                     type: idMatch[1] === 'n' ? t('inspector.node') : idMatch[1] === 'w' ? t('inspector.way') : t('inspector.relation'),
32725                     name: idMatch[2]
32726                 });
32727             }
32728
32729             var locationMatch = sexagesimal.pair(q.toUpperCase()) || q.match(/^(-?\d+\.?\d*)\s+(-?\d+\.?\d*)$/);
32730
32731             if (locationMatch) {
32732                 var loc = [parseFloat(locationMatch[0]), parseFloat(locationMatch[1])];
32733                 result.push({
32734                     id: -1,
32735                     geometry: 'point',
32736                     type: t('inspector.location'),
32737                     name: loc[0].toFixed(6) + ', ' + loc[1].toFixed(6),
32738                     location: loc
32739                 });
32740             }
32741
32742             function addEntity(entity) {
32743                 if (entity.id in entities || result.length > 200)
32744                     return;
32745
32746                 entities[entity.id] = true;
32747
32748                 var name = iD.util.displayName(entity) || '';
32749                 if (name.toLowerCase().indexOf(q) >= 0) {
32750                     result.push({
32751                         id: entity.id,
32752                         entity: entity,
32753                         geometry: context.geometry(entity.id),
32754                         type: context.presets().match(entity, graph).name(),
32755                         name: name
32756                     });
32757                 }
32758
32759                 graph.parentRelations(entity).forEach(function(parent) {
32760                     addEntity(parent);
32761                 });
32762             }
32763
32764             var visible = context.surface().selectAll('.point, .line, .area')[0];
32765             for (var i = 0; i < visible.length && result.length <= 200; i++) {
32766                 addEntity(visible[i].__data__);
32767             }
32768
32769             (geocodeResults || []).forEach(function(d) {
32770                 // https://github.com/openstreetmap/iD/issues/1890
32771                 if (d.osm_type && d.osm_id) {
32772                     result.push({
32773                         id: iD.Entity.id.fromOSM(d.osm_type, d.osm_id),
32774                         geometry: d.osm_type === 'relation' ? 'relation' : d.osm_type === 'way' ? 'line' : 'point',
32775                         type: d.type !== 'yes' ? (d.type.charAt(0).toUpperCase() + d.type.slice(1)).replace('_', ' ')
32776                                                : (d.class.charAt(0).toUpperCase() + d.class.slice(1)).replace('_', ' '),
32777                         name: d.display_name,
32778                         extent: new iD.geo.Extent(
32779                             [parseFloat(d.boundingbox[3]), parseFloat(d.boundingbox[0])],
32780                             [parseFloat(d.boundingbox[2]), parseFloat(d.boundingbox[1])])
32781                     });
32782                 }
32783             });
32784
32785             return result;
32786         }
32787
32788         function drawList() {
32789             var value = search.property('value'),
32790                 results = features();
32791
32792             list.classed('filtered', value.length);
32793
32794             var noResultsWorldwide = geocodeResults && geocodeResults.length === 0;
32795
32796             var resultsIndicator = list.selectAll('.no-results-item')
32797                 .data([0])
32798                 .enter().append('button')
32799                 .property('disabled', true)
32800                 .attr('class', 'no-results-item');
32801
32802             resultsIndicator.append('span')
32803                 .attr('class', 'icon alert');
32804
32805             resultsIndicator.append('span')
32806                 .attr('class', 'entity-name');
32807
32808             list.selectAll('.no-results-item .entity-name')
32809                 .text(noResultsWorldwide ? t('geocoder.no_results_worldwide') : t('geocoder.no_results_visible'));
32810
32811             list.selectAll('.geocode-item')
32812                 .data([0])
32813                 .enter().append('button')
32814                 .attr('class', 'geocode-item')
32815                 .on('click', geocode)
32816                 .append('div')
32817                 .attr('class', 'label')
32818                 .append('span')
32819                 .attr('class', 'entity-name')
32820                 .text(t('geocoder.search'));
32821
32822             list.selectAll('.no-results-item')
32823                 .style('display', (value.length && !results.length) ? 'block' : 'none');
32824
32825             list.selectAll('.geocode-item')
32826                 .style('display', (value && geocodeResults === undefined) ? 'block' : 'none');
32827
32828             list.selectAll('.feature-list-item')
32829                 .data([-1])
32830                 .remove();
32831
32832             var items = list.selectAll('.feature-list-item')
32833                 .data(results, function(d) { return d.id; });
32834
32835             var enter = items.enter().insert('button', '.geocode-item')
32836                 .attr('class', 'feature-list-item')
32837                 .on('mouseover', mouseover)
32838                 .on('mouseout', mouseout)
32839                 .on('click', click);
32840
32841             var label = enter.append('div')
32842                 .attr('class', 'label');
32843
32844             label.append('span')
32845                 .attr('class', function(d) { return d.geometry + ' icon icon-pre-text'; });
32846
32847             label.append('span')
32848                 .attr('class', 'entity-type')
32849                 .text(function(d) { return d.type; });
32850
32851             label.append('span')
32852                 .attr('class', 'entity-name')
32853                 .text(function(d) { return d.name; });
32854
32855             enter.style('opacity', 0)
32856                 .transition()
32857                 .style('opacity', 1);
32858
32859             items.order();
32860
32861             items.exit()
32862                 .remove();
32863         }
32864
32865         function mouseover(d) {
32866             if (d.id === -1) return;
32867
32868             context.surface().selectAll(iD.util.entityOrMemberSelector([d.id], context.graph()))
32869                 .classed('hover', true);
32870         }
32871
32872         function mouseout() {
32873             context.surface().selectAll('.hover')
32874                 .classed('hover', false);
32875         }
32876
32877         function click(d) {
32878             d3.event.preventDefault();
32879             if (d.location) {
32880                 context.map().centerZoom([d.location[1], d.location[0]], 20);
32881             }
32882             else if (d.entity) {
32883                 context.enter(iD.modes.Select(context, [d.entity.id]));
32884             } else {
32885                 context.zoomToEntity(d.id);
32886             }
32887         }
32888
32889         function geocode() {
32890             var searchVal = encodeURIComponent(search.property('value'));
32891             d3.json('http://nominatim.openstreetmap.org/search/' + searchVal + '?limit=10&format=json', function(err, resp) {
32892                 geocodeResults = resp || [];
32893                 drawList();
32894             });
32895         }
32896     }
32897
32898     return featureList;
32899 };
32900 iD.ui.flash = function(selection) {
32901     var modal = iD.ui.modal(selection);
32902
32903     modal.select('.modal').classed('modal-flash', true);
32904
32905     modal.select('.content')
32906         .classed('modal-section', true)
32907         .append('div')
32908         .attr('class', 'description');
32909
32910     modal.on('click.flash', function() { modal.remove(); });
32911
32912     setTimeout(function() {
32913         modal.remove();
32914         return true;
32915     }, 1500);
32916
32917     return modal;
32918 };
32919 iD.ui.FullScreen = function(context) {
32920     var element = context.container().node(),
32921         keybinding = d3.keybinding('full-screen');
32922         // button;
32923
32924     function getFullScreenFn() {
32925         if (element.requestFullscreen) {
32926             return element.requestFullscreen;
32927         } else if (element.msRequestFullscreen) {
32928             return  element.msRequestFullscreen;
32929         } else if (element.mozRequestFullScreen) {
32930             return  element.mozRequestFullScreen;
32931         } else if (element.webkitRequestFullscreen) {
32932             return element.webkitRequestFullscreen;
32933         }
32934     }
32935
32936     function getExitFullScreenFn() {
32937         if (document.exitFullscreen) {
32938             return document.exitFullscreen;
32939         } else if (document.msExitFullscreen) {
32940             return  document.msExitFullscreen;
32941         } else if (document.mozCancelFullScreen) {
32942             return  document.mozCancelFullScreen;
32943         } else if (document.webkitExitFullscreen) {
32944             return document.webkitExitFullscreen;
32945         }
32946     }
32947
32948     function isFullScreen() {
32949         return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement ||
32950             document.msFullscreenElement;
32951     }
32952
32953     function isSupported() {
32954         return !!getFullScreenFn();
32955     }
32956
32957     function fullScreen() {
32958         d3.event.preventDefault();
32959         if (!isFullScreen()) {
32960             // button.classed('active', true);
32961             getFullScreenFn().apply(element);
32962         } else {
32963             // button.classed('active', false);
32964             getExitFullScreenFn().apply(document);
32965         }
32966     }
32967
32968     return function() { // selection) {
32969         if (!isSupported())
32970             return;
32971
32972         // var tooltip = bootstrap.tooltip()
32973         //     .placement('left');
32974
32975         // button = selection.append('button')
32976         //     .attr('title', t('full_screen'))
32977         //     .attr('tabindex', -1)
32978         //     .on('click', fullScreen)
32979         //     .call(tooltip);
32980
32981         // button.append('span')
32982         //     .attr('class', 'icon full-screen');
32983
32984         keybinding
32985             .on(iD.ui.cmd('f11'), fullScreen)
32986             .on(iD.ui.cmd('⌘⇧F'), fullScreen);
32987
32988         d3.select(document)
32989             .call(keybinding);
32990     };
32991 };
32992 iD.ui.Geolocate = function(map) {
32993     function click() {
32994         navigator.geolocation.getCurrentPosition(
32995             success, error);
32996     }
32997
32998     function success(position) {
32999         var extent = iD.geo.Extent([position.coords.longitude, position.coords.latitude])
33000             .padByMeters(position.coords.accuracy);
33001
33002         map.centerZoom(extent.center(), Math.min(20, map.extentZoom(extent)));
33003     }
33004
33005     function error() { }
33006
33007     return function(selection) {
33008         if (!navigator.geolocation) return;
33009
33010         var button = selection.append('button')
33011             .attr('tabindex', -1)
33012             .attr('title', t('geolocate.title'))
33013             .on('click', click)
33014             .call(bootstrap.tooltip()
33015                 .placement('left'));
33016
33017          button.append('span')
33018              .attr('class', 'icon geolocate light');
33019     };
33020 };
33021 iD.ui.Help = function(context) {
33022     var key = 'H';
33023
33024     var docKeys = [
33025         'help.help',
33026         'help.editing_saving',
33027         'help.roads',
33028         'help.gps',
33029         'help.imagery',
33030         'help.addresses',
33031         'help.inspector',
33032         'help.buildings',
33033         'help.relations'];
33034
33035     var docs = docKeys.map(function(key) {
33036         var text = t(key);
33037         return {
33038             title: text.split('\n')[0].replace('#', '').trim(),
33039             html: marked(text.split('\n').slice(1).join('\n'))
33040         };
33041     });
33042
33043     function help(selection) {
33044
33045         function hide() {
33046             setVisible(false);
33047         }
33048
33049         function toggle() {
33050             if (d3.event) d3.event.preventDefault();
33051             tooltip.hide(button);
33052             setVisible(!button.classed('active'));
33053         }
33054
33055         function setVisible(show) {
33056             if (show !== shown) {
33057                 button.classed('active', show);
33058                 shown = show;
33059
33060                 if (show) {
33061                     selection.on('mousedown.help-inside', function() {
33062                         return d3.event.stopPropagation();
33063                     });
33064                     pane.style('display', 'block')
33065                         .style('right', '-500px')
33066                         .transition()
33067                         .duration(200)
33068                         .style('right', '0px');
33069                 } else {
33070                     pane.style('right', '0px')
33071                         .transition()
33072                         .duration(200)
33073                         .style('right', '-500px')
33074                         .each('end', function() {
33075                             d3.select(this).style('display', 'none');
33076                         });
33077                     selection.on('mousedown.help-inside', null);
33078                 }
33079             }
33080         }
33081
33082         function clickHelp(d, i) {
33083             pane.property('scrollTop', 0);
33084             doctitle.html(d.title);
33085             body.html(d.html);
33086             body.selectAll('a')
33087                 .attr('target', '_blank');
33088             menuItems.classed('selected', function(m) {
33089                 return m.title === d.title;
33090             });
33091
33092             nav.html('');
33093
33094             if (i > 0) {
33095                 var prevLink = nav.append('a')
33096                     .attr('class', 'previous')
33097                     .on('click', function() {
33098                         clickHelp(docs[i - 1], i - 1);
33099                     });
33100                 prevLink.append('span').attr('class', 'icon back blue');
33101                 prevLink.append('span').html(docs[i - 1].title);
33102             }
33103             if (i < docs.length - 1) {
33104                 var nextLink = nav.append('a')
33105                     .attr('class', 'next')
33106                     .on('click', function() {
33107                         clickHelp(docs[i + 1], i + 1);
33108                     });
33109                 nextLink.append('span').html(docs[i + 1].title);
33110                 nextLink.append('span').attr('class', 'icon forward blue');
33111             }
33112         }
33113
33114         function clickWalkthrough() {
33115             d3.select(document.body).call(iD.ui.intro(context));
33116             setVisible(false);
33117         }
33118
33119
33120         var pane = selection.append('div')
33121                 .attr('class', 'help-wrap map-overlay fillL col5 content hide'),
33122             tooltip = bootstrap.tooltip()
33123                 .placement('left')
33124                 .html(true)
33125                 .title(iD.ui.tooltipHtml(t('help.title'), key)),
33126             button = selection.append('button')
33127                 .attr('tabindex', -1)
33128                 .on('click', toggle)
33129                 .call(tooltip),
33130             shown = false;
33131
33132         button.append('span')
33133             .attr('class', 'icon help light');
33134
33135
33136         var toc = pane.append('ul')
33137             .attr('class', 'toc');
33138
33139         var menuItems = toc.selectAll('li')
33140             .data(docs)
33141             .enter()
33142             .append('li')
33143             .append('a')
33144             .html(function(d) { return d.title; })
33145             .on('click', clickHelp);
33146
33147         toc.append('li')
33148             .attr('class','walkthrough')
33149             .append('a')
33150             .text(t('splash.walkthrough'))
33151             .on('click', clickWalkthrough);
33152
33153         var content = pane.append('div')
33154             .attr('class', 'left-content');
33155
33156         var doctitle = content.append('h2')
33157             .text(t('help.title'));
33158
33159         var body = content.append('div')
33160             .attr('class', 'body');
33161
33162         var nav = content.append('div')
33163             .attr('class', 'nav');
33164
33165         clickHelp(docs[0], 0);
33166
33167         var keybinding = d3.keybinding('help')
33168             .on(key, toggle)
33169             .on('B', hide)
33170             .on('F', hide);
33171
33172         d3.select(document)
33173             .call(keybinding);
33174
33175         context.surface().on('mousedown.help-outside', hide);
33176         context.container().on('mousedown.help-outside', hide);
33177     }
33178
33179     return help;
33180 };
33181 iD.ui.Info = function(context) {
33182     var key = iD.ui.cmd('⌘I'),
33183         imperial = (iD.detect().locale.toLowerCase() === 'en-us');
33184
33185     function info(selection) {
33186         function radiansToMeters(r) {
33187             // using WGS84 authalic radius (6371007.1809 m)
33188             return r * 6371007.1809;
33189         }
33190
33191         function steradiansToSqmeters(r) {
33192             // http://gis.stackexchange.com/a/124857/40446
33193             return r / 12.56637 * 510065621724000;
33194         }
33195
33196         function displayLength(m) {
33197             var d = m * (imperial ? 3.28084 : 1),
33198                 p, unit;
33199
33200             if (imperial) {
33201                 if (d >= 5280) {
33202                     d /= 5280;
33203                     unit = 'mi';
33204                 } else {
33205                     unit = 'ft';
33206                 }
33207             } else {
33208                 if (d >= 1000) {
33209                     d /= 1000;
33210                     unit = 'km';
33211                 } else {
33212                     unit = 'm';
33213                 }
33214             }
33215
33216             // drop unnecessary precision
33217             p = d > 1000 ? 0 : d > 100 ? 1 : 2;
33218
33219             return String(d.toFixed(p)) + ' ' + unit;
33220         }
33221
33222         function displayArea(m2) {
33223             var d = m2 * (imperial ? 10.7639111056 : 1),
33224                 d1, d2, p1, p2, unit1, unit2;
33225
33226             if (imperial) {
33227                 if (d >= 6969600) {     // > 0.25mi² show mi²
33228                     d1 = d / 27878400;
33229                     unit1 = 'mi²';
33230                 } else {
33231                     d1 = d;
33232                     unit1 = 'ft²';
33233                 }
33234
33235                 if (d > 4356 && d < 43560000) {   // 0.1 - 1000 acres
33236                     d2 = d / 43560;
33237                     unit2 = 'ac';
33238                 }
33239
33240             } else {
33241                 if (d >= 250000) {    // > 0.25km² show km²
33242                     d1 = d / 1000000;
33243                     unit1 = 'km²';
33244                 } else {
33245                     d1 = d;
33246                     unit1 = 'm²';
33247                 }
33248
33249                 if (d > 1000 && d < 10000000) {   // 0.1 - 1000 hectares
33250                     d2 = d / 10000;
33251                     unit2 = 'ha';
33252                 }
33253             }
33254
33255             // drop unnecessary precision
33256             p1 = d1 > 1000 ? 0 : d1 > 100 ? 1 : 2;
33257             p2 = d2 > 1000 ? 0 : d2 > 100 ? 1 : 2;
33258
33259             return String(d1.toFixed(p1)) + ' ' + unit1 +
33260                 (d2 ? ' (' + String(d2.toFixed(p2)) + ' ' + unit2 + ')' : '');
33261         }
33262
33263
33264         function redraw() {
33265             if (hidden()) return;
33266
33267             var resolver = context.graph(),
33268                 selected = context.selectedIDs(),
33269                 singular = selected.length === 1 ? selected[0] : null,
33270                 extent = iD.geo.Extent(),
33271                 entity;
33272
33273             selection.html('');
33274             selection.append('h4')
33275                 .attr('class', 'selection-heading fillD')
33276                 .text(singular || t('infobox.selected', { n: selected.length }));
33277
33278             if (!selected.length) return;
33279
33280             var center;
33281             for (var i = 0; i < selected.length; i++) {
33282                 entity = context.entity(selected[i]);
33283                 extent._extend(entity.extent(resolver));
33284             }
33285             center = extent.center();
33286
33287
33288             var list = selection.append('ul');
33289
33290             // multiple selection, just display extent center..
33291             if (!singular) {
33292                 list.append('li')
33293                     .text(t('infobox.center') + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33294                 return;
33295             }
33296
33297             // single selection, display details..
33298             if (!entity) return;
33299             var geometry = entity.geometry(resolver);
33300
33301             if (geometry === 'line' || geometry === 'area') {
33302                 var closed = (entity.type === 'relation') || (entity.isClosed() && !entity.isDegenerate()),
33303                     feature = entity.asGeoJSON(resolver),
33304                     length = radiansToMeters(d3.geo.length(feature)),
33305                     lengthLabel = t('infobox.' + (closed ? 'perimeter' : 'length')),
33306                     centroid = d3.geo.centroid(feature);
33307
33308                 list.append('li')
33309                     .text(t('infobox.geometry') + ': ' +
33310                         (closed ? t('infobox.closed') + ' ' : '') + t('geometry.' + geometry) );
33311
33312                 if (closed) {
33313                     var area = steradiansToSqmeters(entity.area(resolver));
33314                     list.append('li')
33315                         .text(t('infobox.area') + ': ' + displayArea(area));
33316                 }
33317
33318                 list.append('li')
33319                     .text(lengthLabel + ': ' + displayLength(length));
33320
33321                 list.append('li')
33322                     .text(t('infobox.centroid') + ': ' + centroid[0].toFixed(5) + ', ' + centroid[1].toFixed(5));
33323
33324
33325                 var toggle  = imperial ? 'imperial' : 'metric';
33326                 selection.append('a')
33327                     .text(t('infobox.' + toggle))
33328                     .attr('href', '#')
33329                     .attr('class', 'button')
33330                     .on('click', function() {
33331                         d3.event.preventDefault();
33332                         imperial = !imperial;
33333                         redraw();
33334                     });
33335
33336             } else {
33337                 var centerLabel = t('infobox.' + (entity.type === 'node' ? 'location' : 'center'));
33338
33339                 list.append('li')
33340                     .text(t('infobox.geometry') + ': ' + t('geometry.' + geometry));
33341
33342                 list.append('li')
33343                     .text(centerLabel + ': ' + center[0].toFixed(5) + ', ' + center[1].toFixed(5));
33344             }
33345         }
33346
33347
33348         function hidden() {
33349             return selection.style('display') === 'none';
33350         }
33351
33352
33353         function toggle() {
33354             if (d3.event) d3.event.preventDefault();
33355
33356             if (hidden()) {
33357                 selection
33358                     .style('display', 'block')
33359                     .style('opacity', 0)
33360                     .transition()
33361                     .duration(200)
33362                     .style('opacity', 1);
33363
33364                 redraw();
33365
33366             } else {
33367                 selection
33368                     .style('display', 'block')
33369                     .style('opacity', 1)
33370                     .transition()
33371                     .duration(200)
33372                     .style('opacity', 0)
33373                     .each('end', function() {
33374                         d3.select(this).style('display', 'none');
33375                     });
33376             }
33377         }
33378
33379         context.map()
33380             .on('drawn.info', redraw);
33381
33382         redraw();
33383
33384         var keybinding = d3.keybinding('info')
33385             .on(key, toggle);
33386
33387         d3.select(document)
33388             .call(keybinding);
33389     }
33390
33391     return info;
33392 };
33393 iD.ui.Inspector = function(context) {
33394     var presetList = iD.ui.PresetList(context),
33395         entityEditor = iD.ui.EntityEditor(context),
33396         state = 'select',
33397         entityID,
33398         newFeature = false;
33399
33400     function inspector(selection) {
33401         presetList
33402             .entityID(entityID)
33403             .autofocus(newFeature)
33404             .on('choose', setPreset);
33405
33406         entityEditor
33407             .state(state)
33408             .entityID(entityID)
33409             .on('choose', showList);
33410
33411         var $wrap = selection.selectAll('.panewrap')
33412             .data([0]);
33413
33414         var $enter = $wrap.enter().append('div')
33415             .attr('class', 'panewrap');
33416
33417         $enter.append('div')
33418             .attr('class', 'preset-list-pane pane');
33419
33420         $enter.append('div')
33421             .attr('class', 'entity-editor-pane pane');
33422
33423         var $presetPane = $wrap.select('.preset-list-pane');
33424         var $editorPane = $wrap.select('.entity-editor-pane');
33425
33426         var graph = context.graph(),
33427             entity = context.entity(entityID),
33428             showEditor = state === 'hover' ||
33429                 entity.isUsed(graph) ||
33430                 entity.isHighwayIntersection(graph);
33431
33432         if (showEditor) {
33433             $wrap.style('right', '0%');
33434             $editorPane.call(entityEditor);
33435         } else {
33436             $wrap.style('right', '-100%');
33437             $presetPane.call(presetList);
33438         }
33439
33440         var $footer = selection.selectAll('.footer')
33441             .data([0]);
33442
33443         $footer.enter().append('div')
33444             .attr('class', 'footer');
33445
33446         selection.select('.footer')
33447             .call(iD.ui.ViewOnOSM(context)
33448                 .entityID(entityID));
33449
33450         function showList(preset) {
33451             $wrap.transition()
33452                 .styleTween('right', function() { return d3.interpolate('0%', '-100%'); });
33453
33454             $presetPane.call(presetList
33455                 .preset(preset)
33456                 .autofocus(true));
33457         }
33458
33459         function setPreset(preset) {
33460             $wrap.transition()
33461                 .styleTween('right', function() { return d3.interpolate('-100%', '0%'); });
33462
33463             $editorPane.call(entityEditor
33464                 .preset(preset));
33465         }
33466     }
33467
33468     inspector.state = function(_) {
33469         if (!arguments.length) return state;
33470         state = _;
33471         entityEditor.state(state);
33472         return inspector;
33473     };
33474
33475     inspector.entityID = function(_) {
33476         if (!arguments.length) return entityID;
33477         entityID = _;
33478         return inspector;
33479     };
33480
33481     inspector.newFeature = function(_) {
33482         if (!arguments.length) return newFeature;
33483         newFeature = _;
33484         return inspector;
33485     };
33486
33487     return inspector;
33488 };
33489 iD.ui.intro = function(context) {
33490
33491     var step;
33492
33493     function intro(selection) {
33494
33495         context.enter(iD.modes.Browse(context));
33496
33497         // Save current map state
33498         var history = context.history().toJSON(),
33499             hash = window.location.hash,
33500             background = context.background().baseLayerSource(),
33501             opacity = d3.select('.background-layer').style('opacity'),
33502             loadedTiles = context.connection().loadedTiles(),
33503             baseEntities = context.history().graph().base().entities,
33504             introGraph;
33505
33506         // Load semi-real data used in intro
33507         context.connection().toggle(false).flush();
33508         context.history().reset();
33509
33510         introGraph = JSON.parse(iD.introGraph);
33511         for (var key in introGraph) {
33512             introGraph[key] = iD.Entity(introGraph[key]);
33513         }
33514         context.history().merge(d3.values(iD.Graph().load(introGraph).entities));
33515         context.background().bing();
33516
33517         // Block saving
33518         var savebutton = d3.select('#bar button.save'),
33519             save = savebutton.on('click');
33520         savebutton.on('click', null);
33521         context.inIntro(true);
33522
33523         d3.select('.background-layer').style('opacity', 1);
33524
33525         var curtain = d3.curtain();
33526         selection.call(curtain);
33527
33528         function reveal(box, text, options) {
33529             options = options || {};
33530             if (text) curtain.reveal(box, text, options.tooltipClass, options.duration);
33531             else curtain.reveal(box, '', '', options.duration);
33532         }
33533
33534         var steps = ['navigation', 'point', 'area', 'line', 'startEditing'].map(function(step, i) {
33535             var s = iD.ui.intro[step](context, reveal)
33536                 .on('done', function() {
33537                     entered.filter(function(d) {
33538                         return d.title === s.title;
33539                     }).classed('finished', true);
33540                     enter(steps[i + 1]);
33541                 });
33542             return s;
33543         });
33544
33545         steps[steps.length - 1].on('startEditing', function() {
33546             curtain.remove();
33547             navwrap.remove();
33548             d3.select('.background-layer').style('opacity', opacity);
33549             context.connection().toggle(true).flush().loadedTiles(loadedTiles);
33550             context.history().reset().merge(d3.values(baseEntities));
33551             context.background().baseLayerSource(background);
33552             if (history) context.history().fromJSON(history, false);
33553             window.location.replace(hash);
33554             context.inIntro(false);
33555             d3.select('#bar button.save').on('click', save);
33556         });
33557
33558         var navwrap = selection.append('div').attr('class', 'intro-nav-wrap fillD');
33559
33560         var buttonwrap = navwrap.append('div')
33561             .attr('class', 'joined')
33562             .selectAll('button.step');
33563
33564         var entered = buttonwrap.data(steps)
33565             .enter().append('button')
33566                 .attr('class', 'step')
33567                 .on('click', enter);
33568
33569         entered.append('div').attr('class','icon icon-pre-text apply');
33570         entered.append('label').text(function(d) { return t(d.title); });
33571         enter(steps[0]);
33572
33573         function enter (newStep) {
33574
33575             if (step) {
33576                 step.exit();
33577             }
33578
33579             context.enter(iD.modes.Browse(context));
33580
33581             step = newStep;
33582             step.enter();
33583
33584             entered.classed('active', function(d) {
33585                 return d.title === step.title;
33586             });
33587         }
33588
33589     }
33590     return intro;
33591 };
33592
33593 iD.ui.intro.pointBox = function(point, context) {
33594     var rect = context.surfaceRect();
33595     point = context.projection(point);
33596     return {
33597         left: point[0] + rect.left - 30,
33598         top: point[1] + rect.top - 50,
33599         width: 60,
33600         height: 70
33601     };
33602 };
33603
33604 iD.ui.intro.pad = function(box, padding, context) {
33605     if (box instanceof Array) {
33606         var rect = context.surfaceRect();
33607         box = context.projection(box);
33608         box = {
33609             left: box[0] + rect.left,
33610             top: box[1] + rect.top
33611         };
33612     }
33613     return {
33614         left: box.left - padding,
33615         top: box.top - padding,
33616         width: (box.width || 0) + 2 * padding,
33617         height: (box.width || 0) + 2 * padding
33618     };
33619 };
33620 iD.ui.Lasso = function(context) {
33621
33622     var box, group,
33623         a = [0, 0],
33624         b = [0, 0];
33625
33626     function lasso(selection) {
33627
33628         context.container().classed('lasso', true);
33629
33630         group = selection.append('g')
33631             .attr('class', 'lasso hide');
33632
33633         box = group.append('rect')
33634             .attr('class', 'lasso-box');
33635
33636         group.call(iD.ui.Toggle(true));
33637
33638     }
33639
33640     // top-left
33641     function topLeft(d) {
33642         return 'translate(' + Math.min(d[0][0], d[1][0]) + ',' + Math.min(d[0][1], d[1][1]) + ')';
33643     }
33644
33645     function width(d) { return Math.abs(d[0][0] - d[1][0]); }
33646     function height(d) { return Math.abs(d[0][1] - d[1][1]); }
33647
33648     function draw() {
33649         if (box) {
33650             box.data([[a, b]])
33651                 .attr('transform', topLeft)
33652                 .attr('width', width)
33653                 .attr('height', height);
33654         }
33655     }
33656
33657     lasso.a = function(_) {
33658         if (!arguments.length) return a;
33659         a = _;
33660         draw();
33661         return lasso;
33662     };
33663
33664     lasso.b = function(_) {
33665         if (!arguments.length) return b;
33666         b = _;
33667         draw();
33668         return lasso;
33669     };
33670
33671     lasso.close = function() {
33672         if (group) {
33673             group.call(iD.ui.Toggle(false, function() {
33674                 d3.select(this).remove();
33675             }));
33676         }
33677         context.container().classed('lasso', false);
33678     };
33679
33680     return lasso;
33681 };
33682 iD.ui.Loading = function(context) {
33683     var message = '',
33684         blocking = false,
33685         modal;
33686
33687     var loading = function(selection) {
33688         modal = iD.ui.modal(selection, blocking);
33689
33690         var loadertext = modal.select('.content')
33691             .classed('loading-modal', true)
33692             .append('div')
33693             .attr('class', 'modal-section fillL');
33694
33695         loadertext.append('img')
33696             .attr('class', 'loader')
33697             .attr('src', context.imagePath('loader-white.gif'));
33698
33699         loadertext.append('h3')
33700             .text(message);
33701
33702         modal.select('button.close')
33703             .attr('class', 'hide');
33704
33705         return loading;
33706     };
33707
33708     loading.message = function(_) {
33709         if (!arguments.length) return message;
33710         message = _;
33711         return loading;
33712     };
33713
33714     loading.blocking = function(_) {
33715         if (!arguments.length) return blocking;
33716         blocking = _;
33717         return loading;
33718     };
33719
33720     loading.close = function() {
33721         modal.remove();
33722     };
33723
33724     return loading;
33725 };
33726 iD.ui.MapData = function(context) {
33727     var key = 'F',
33728         features = context.features().keys(),
33729         fills = ['wireframe', 'partial', 'full'],
33730         fillDefault = context.storage('area-fill') || 'partial',
33731         fillSelected = fillDefault;
33732
33733     function map_data(selection) {
33734
33735         function showsFeature(d) {
33736             return context.features().enabled(d);
33737         }
33738
33739         function autoHiddenFeature(d) {
33740             return context.features().autoHidden(d);
33741         }
33742
33743         function clickFeature(d) {
33744             context.features().toggle(d);
33745             update();
33746         }
33747
33748         function showsFill(d) {
33749             return fillSelected === d;
33750         }
33751
33752         function setFill(d) {
33753             _.each(fills, function(opt) {
33754                 context.surface().classed('fill-' + opt, Boolean(opt === d));
33755             });
33756
33757             fillSelected = d;
33758             if (d !== 'wireframe') {
33759                 fillDefault = d;
33760                 context.storage('area-fill', d);
33761             }
33762             update();
33763         }
33764
33765         function clickGpx() {
33766             context.background().toggleGpxLayer();
33767             update();
33768         }
33769
33770         function clickMapillary() {
33771             context.background().toggleMapillaryLayer();
33772             update();
33773         }
33774
33775         function drawList(selection, data, type, name, change, active) {
33776             var items = selection.selectAll('li')
33777                 .data(data);
33778
33779             //enter
33780             var enter = items.enter()
33781                 .append('li')
33782                 .attr('class', 'layer')
33783                 .call(bootstrap.tooltip()
33784                     .html(true)
33785                     .title(function(d) {
33786                         var tip = t(name + '.' + d + '.tooltip'),
33787                             key = (d === 'wireframe' ? 'W' : null);
33788
33789                         if (name === 'feature' && autoHiddenFeature(d)) {
33790                             tip += '<div>' + t('map_data.autohidden') + '</div>';
33791                         }
33792                         return iD.ui.tooltipHtml(tip, key);
33793                     })
33794                     .placement('top')
33795                 );
33796
33797             var label = enter.append('label');
33798
33799             label.append('input')
33800                 .attr('type', type)
33801                 .attr('name', name)
33802                 .on('change', change);
33803
33804             label.append('span')
33805                 .text(function(d) { return t(name + '.' + d + '.description'); });
33806
33807             //update
33808             items
33809                 .classed('active', active)
33810                 .selectAll('input')
33811                 .property('checked', active)
33812                 .property('indeterminate', function(d) {
33813                     return (name === 'feature' && autoHiddenFeature(d));
33814                 });
33815
33816             //exit
33817             items.exit()
33818                 .remove();
33819         }
33820
33821         function update() {
33822             featureList.call(drawList, features, 'checkbox', 'feature', clickFeature, showsFeature);
33823             fillList.call(drawList, fills, 'radio', 'area_fill', setFill, showsFill);
33824
33825             var hasGpx = context.background().hasGpxLayer(),
33826                 showsGpx = context.background().showsGpxLayer(),
33827                 showsMapillary = context.background().showsMapillaryLayer();
33828
33829             gpxLayerItem
33830                 .classed('active', showsGpx)
33831                 .selectAll('input')
33832                 .property('disabled', !hasGpx)
33833                 .property('checked', showsGpx);
33834
33835             mapillaryLayerItem
33836                 .classed('active', showsMapillary)
33837                 .selectAll('input')
33838                 .property('checked', showsMapillary);
33839         }
33840
33841         function hidePanel() { setVisible(false); }
33842
33843         function togglePanel() {
33844             if (d3.event) d3.event.preventDefault();
33845             tooltip.hide(button);
33846             setVisible(!button.classed('active'));
33847         }
33848
33849         function toggleWireframe() {
33850             if (d3.event) {
33851                 d3.event.preventDefault();
33852                 d3.event.stopPropagation();
33853             }
33854             setFill((fillSelected === 'wireframe' ? fillDefault : 'wireframe'));
33855             context.map().pan([0,0]);  // trigger a redraw
33856         }
33857
33858         function setVisible(show) {
33859             if (show !== shown) {
33860                 button.classed('active', show);
33861                 shown = show;
33862
33863                 if (show) {
33864                     selection.on('mousedown.map_data-inside', function() {
33865                         return d3.event.stopPropagation();
33866                     });
33867                     content.style('display', 'block')
33868                         .style('right', '-300px')
33869                         .transition()
33870                         .duration(200)
33871                         .style('right', '0px');
33872                 } else {
33873                     content.style('display', 'block')
33874                         .style('right', '0px')
33875                         .transition()
33876                         .duration(200)
33877                         .style('right', '-300px')
33878                         .each('end', function() {
33879                             d3.select(this).style('display', 'none');
33880                         });
33881                     selection.on('mousedown.map_data-inside', null);
33882                 }
33883             }
33884         }
33885
33886
33887         var content = selection.append('div')
33888                 .attr('class', 'fillL map-overlay col3 content hide'),
33889             tooltip = bootstrap.tooltip()
33890                 .placement('left')
33891                 .html(true)
33892                 .title(iD.ui.tooltipHtml(t('map_data.description'), key)),
33893             button = selection.append('button')
33894                 .attr('tabindex', -1)
33895                 .on('click', togglePanel)
33896                 .call(tooltip),
33897             shown = false;
33898
33899         button.append('span')
33900             .attr('class', 'icon data light');
33901
33902         content.append('h4')
33903             .text(t('map_data.title'));
33904
33905
33906         // data layers
33907         content.append('a')
33908             .text(t('map_data.data_layers'))
33909             .attr('href', '#')
33910             .classed('hide-toggle', true)
33911             .classed('expanded', true)
33912             .on('click', function() {
33913                 var exp = d3.select(this).classed('expanded');
33914                 layerContainer.style('display', exp ? 'none' : 'block');
33915                 d3.select(this).classed('expanded', !exp);
33916                 d3.event.preventDefault();
33917             });
33918
33919         var layerContainer = content.append('div')
33920             .attr('class', 'filters')
33921             .style('display', 'block');
33922
33923         // mapillary
33924         var mapillaryLayerItem = layerContainer.append('ul')
33925             .attr('class', 'layer-list')
33926             .append('li');
33927
33928         var label = mapillaryLayerItem.append('label')
33929             .call(bootstrap.tooltip()
33930                 .title(t('mapillary.tooltip'))
33931                 .placement('top'));
33932
33933         label.append('input')
33934             .attr('type', 'checkbox')
33935             .on('change', clickMapillary);
33936
33937         label.append('span')
33938             .text(t('mapillary.title'));
33939
33940         // gpx
33941         var gpxLayerItem = layerContainer.append('ul')
33942             .style('display', iD.detect().filedrop ? 'block' : 'none')
33943             .attr('class', 'layer-list')
33944             .append('li')
33945             .classed('layer-toggle-gpx', true);
33946
33947         gpxLayerItem.append('button')
33948             .attr('class', 'layer-extent')
33949             .call(bootstrap.tooltip()
33950                 .title(t('gpx.zoom'))
33951                 .placement('left'))
33952             .on('click', function() {
33953                 d3.event.preventDefault();
33954                 d3.event.stopPropagation();
33955                 context.background().zoomToGpxLayer();
33956             })
33957             .append('span')
33958             .attr('class', 'icon geolocate');
33959
33960         gpxLayerItem.append('button')
33961             .attr('class', 'layer-browse')
33962             .call(bootstrap.tooltip()
33963                 .title(t('gpx.browse'))
33964                 .placement('left'))
33965             .on('click', function() {
33966                 d3.select(document.createElement('input'))
33967                     .attr('type', 'file')
33968                     .on('change', function() {
33969                         context.background().gpxLayerFiles(d3.event.target.files);
33970                     })
33971                     .node().click();
33972             })
33973             .append('span')
33974             .attr('class', 'icon geocode');
33975
33976         label = gpxLayerItem.append('label')
33977             .call(bootstrap.tooltip()
33978                 .title(t('gpx.drag_drop'))
33979                 .placement('top'));
33980
33981         label.append('input')
33982             .attr('type', 'checkbox')
33983             .property('disabled', true)
33984             .on('change', clickGpx);
33985
33986         label.append('span')
33987             .text(t('gpx.local_layer'));
33988
33989
33990         // area fills
33991         content.append('a')
33992             .text(t('map_data.fill_area'))
33993             .attr('href', '#')
33994             .classed('hide-toggle', true)
33995             .classed('expanded', false)
33996             .on('click', function() {
33997                 var exp = d3.select(this).classed('expanded');
33998                 fillContainer.style('display', exp ? 'none' : 'block');
33999                 d3.select(this).classed('expanded', !exp);
34000                 d3.event.preventDefault();
34001             });
34002
34003         var fillContainer = content.append('div')
34004             .attr('class', 'filters')
34005             .style('display', 'none');
34006
34007         var fillList = fillContainer.append('ul')
34008             .attr('class', 'layer-list');
34009
34010
34011         // feature filters
34012         content.append('a')
34013             .text(t('map_data.map_features'))
34014             .attr('href', '#')
34015             .classed('hide-toggle', true)
34016             .classed('expanded', false)
34017             .on('click', function() {
34018                 var exp = d3.select(this).classed('expanded');
34019                 featureContainer.style('display', exp ? 'none' : 'block');
34020                 d3.select(this).classed('expanded', !exp);
34021                 d3.event.preventDefault();
34022             });
34023
34024         var featureContainer = content.append('div')
34025             .attr('class', 'filters')
34026             .style('display', 'none');
34027
34028         var featureList = featureContainer.append('ul')
34029             .attr('class', 'layer-list');
34030
34031
34032         context.features()
34033             .on('change.map_data-update', update);
34034
34035         setFill(fillDefault);
34036
34037         var keybinding = d3.keybinding('features')
34038             .on(key, togglePanel)
34039             .on('W', toggleWireframe)
34040             .on('B', hidePanel)
34041             .on('H', hidePanel);
34042
34043         d3.select(document)
34044             .call(keybinding);
34045
34046         context.surface().on('mousedown.map_data-outside', hidePanel);
34047         context.container().on('mousedown.map_data-outside', hidePanel);
34048     }
34049
34050     return map_data;
34051 };
34052 iD.ui.MapInMap = function(context) {
34053     var key = '/';
34054
34055     function map_in_map(selection) {
34056
34057         var backgroundLayer = iD.TileLayer(),
34058             dispatch = d3.dispatch('change'),
34059             gpxLayer = iD.GpxLayer(context, dispatch),
34060             overlayLayer = iD.TileLayer(),
34061             projection = iD.geo.RawMercator(),
34062             zoom = d3.behavior.zoom()
34063                 .scaleExtent([ztok(0.5), ztok(24)])
34064                 .on('zoom', zoomPan),
34065             transformed = false,
34066             panning = false,
34067             zDiff = 6,    // by default, minimap renders at (main zoom - 6)
34068             tStart, tLast, tCurr, kLast, kCurr, tiles, svg, gpx, timeoutId;
34069
34070         iD.ui.MapInMap.gpxLayer = gpxLayer;
34071
34072         function ztok(z) { return 256 * Math.pow(2, z); }
34073         function ktoz(k) { return Math.log(k) / Math.LN2 - 8; }
34074
34075
34076         function startMouse() {
34077             context.surface().on('mouseup.map-in-map-outside', endMouse);
34078             context.container().on('mouseup.map-in-map-outside', endMouse);
34079
34080             tStart = tLast = tCurr = projection.translate();
34081             panning = true;
34082         }
34083
34084
34085         function zoomPan() {
34086             var e = d3.event.sourceEvent,
34087                 t = d3.event.translate,
34088                 k = d3.event.scale,
34089                 zMain = ktoz(context.projection.scale() * 2 * Math.PI),
34090                 zMini = ktoz(k);
34091
34092             // restrict minimap zoom to < (main zoom - 3)
34093             if (zMini > zMain - 3) {
34094                 zMini = zMain - 3;
34095                 zoom.scale(kCurr).translate(tCurr);  // restore last good values
34096                 return;
34097             }
34098
34099             tCurr = t;
34100             kCurr = k;
34101             zDiff = zMain - zMini;
34102
34103             var scale = kCurr / kLast,
34104                 tX = Math.round((tCurr[0] / scale - tLast[0]) * scale),
34105                 tY = Math.round((tCurr[1] / scale - tLast[1]) * scale);
34106
34107             iD.util.setTransform(tiles, tX, tY, scale);
34108             iD.util.setTransform(svg, 0, 0, scale);
34109             iD.util.setTransform(gpx, 0, 0, scale);
34110             transformed = true;
34111
34112             queueRedraw();
34113
34114             e.preventDefault();
34115             e.stopPropagation();
34116         }
34117
34118
34119         function endMouse() {
34120             context.surface().on('mouseup.map-in-map-outside', null);
34121             context.container().on('mouseup.map-in-map-outside', null);
34122
34123             updateProjection();
34124             panning = false;
34125
34126             if (tCurr[0] !== tStart[0] && tCurr[1] !== tStart[1]) {
34127                 var dMini = selection.dimensions(),
34128                     cMini = [ dMini[0] / 2, dMini[1] / 2 ];
34129
34130                 context.map().center(projection.invert(cMini));
34131             }
34132         }
34133
34134
34135         function updateProjection() {
34136             var loc = context.map().center(),
34137                 dMini = selection.dimensions(),
34138                 cMini = [ dMini[0] / 2, dMini[1] / 2 ],
34139                 tMain = context.projection.translate(),
34140                 kMain = context.projection.scale(),
34141                 zMain = ktoz(kMain * 2 * Math.PI),
34142                 zMini = Math.max(zMain - zDiff, 0.5),
34143                 kMini = ztok(zMini);
34144
34145             projection
34146                 .translate(tMain)
34147                 .scale(kMini / (2 * Math.PI));
34148
34149             var s = projection(loc),
34150                 mouse = panning ? [ tCurr[0] - tStart[0], tCurr[1] - tStart[1] ] : [0, 0],
34151                 tMini = [
34152                     cMini[0] - s[0] + tMain[0] + mouse[0],
34153                     cMini[1] - s[1] + tMain[1] + mouse[1]
34154                 ];
34155
34156             projection
34157                 .translate(tMini)
34158                 .clipExtent([[0, 0], dMini]);
34159
34160             zoom
34161                 .center(cMini)
34162                 .translate(tMini)
34163                 .scale(kMini);
34164
34165             tLast = tCurr = tMini;
34166             kLast = kCurr = kMini;
34167
34168             if (transformed) {
34169                 iD.util.setTransform(tiles, 0, 0);
34170                 iD.util.setTransform(svg, 0, 0);
34171                 iD.util.setTransform(gpx, 0, 0);
34172                 transformed = false;
34173             }
34174         }
34175
34176
34177         function redraw() {
34178             if (hidden()) return;
34179
34180             updateProjection();
34181
34182             var dMini = selection.dimensions(),
34183                 zMini = ktoz(projection.scale() * 2 * Math.PI);
34184
34185             // setup tile container
34186             tiles = selection
34187                 .selectAll('.map-in-map-tiles')
34188                 .data([0]);
34189
34190             tiles
34191                 .enter()
34192                 .append('div')
34193                 .attr('class', 'map-in-map-tiles');
34194
34195             // redraw background
34196             backgroundLayer
34197                 .source(context.background().baseLayerSource())
34198                 .projection(projection)
34199                 .dimensions(dMini);
34200
34201             var background = tiles
34202                 .selectAll('.map-in-map-background')
34203                 .data([0]);
34204
34205             background.enter()
34206                 .append('div')
34207                 .attr('class', 'map-in-map-background');
34208
34209             background
34210                 .call(backgroundLayer);
34211
34212             // redraw overlay
34213             var overlaySources = context.background().overlayLayerSources(),
34214                 hasOverlay = false;
34215
34216             for (var i = 0; i < overlaySources.length; i++) {
34217                 if (overlaySources[i].validZoom(zMini)) {
34218                     overlayLayer
34219                         .source(overlaySources[i])
34220                         .projection(projection)
34221                         .dimensions(dMini);
34222
34223                     hasOverlay = true;
34224                     break;
34225                 }
34226             }
34227
34228             var overlay = tiles
34229                 .selectAll('.map-in-map-overlay')
34230                 .data(hasOverlay ? [0] : []);
34231
34232             overlay.enter()
34233                 .append('div')
34234                 .attr('class', 'map-in-map-overlay');
34235
34236             overlay.exit()
34237                 .remove();
34238
34239             if (hasOverlay) {
34240                 overlay
34241                     .call(overlayLayer);
34242             }
34243
34244             gpxLayer
34245                 .projection(projection);
34246
34247             gpx = tiles
34248                 .selectAll('.map-in-map-gpx')
34249                 .data([0]);
34250
34251             gpx.enter()
34252                 .append('div')
34253                 .attr('class', 'map-in-map-gpx');
34254
34255             gpx.call(gpxLayer);
34256             gpx.dimensions(dMini);
34257
34258             // redraw bounding box
34259             if (!panning) {
34260                 var getPath = d3.geo.path().projection(projection),
34261                     bbox = { type: 'Polygon', coordinates: [context.map().extent().polygon()] };
34262
34263                 svg = selection.selectAll('.map-in-map-svg')
34264                     .data([0]);
34265
34266                 svg.enter()
34267                     .append('svg')
34268                     .attr('class', 'map-in-map-svg');
34269
34270                 var path = svg.selectAll('.map-in-map-bbox')
34271                     .data([bbox]);
34272
34273                 path.enter()
34274                     .append('path')
34275                     .attr('class', 'map-in-map-bbox');
34276
34277                 path
34278                     .attr('d', getPath)
34279                     .classed('thick', function(d) { return getPath.area(d) < 30; });
34280             }
34281         }
34282
34283
34284         function queueRedraw() {
34285             clearTimeout(timeoutId);
34286             timeoutId = setTimeout(function() { redraw(); }, 300);
34287         }
34288
34289
34290         function hidden() {
34291             return selection.style('display') === 'none';
34292         }
34293
34294
34295         function toggle() {
34296             if (d3.event) d3.event.preventDefault();
34297
34298             var label = d3.select('.minimap-toggle');
34299
34300             if (hidden()) {
34301                 selection
34302                     .style('display', 'block')
34303                     .style('opacity', 0)
34304                     .transition()
34305                     .duration(200)
34306                     .style('opacity', 1);
34307
34308                 label.classed('active', true)
34309                     .select('input').property('checked', true);
34310
34311                 redraw();
34312
34313             } else {
34314                 selection
34315                     .style('display', 'block')
34316                     .style('opacity', 1)
34317                     .transition()
34318                     .duration(200)
34319                     .style('opacity', 0)
34320                     .each('end', function() {
34321                         d3.select(this).style('display', 'none');
34322                     });
34323
34324                 label.classed('active', false)
34325                     .select('input').property('checked', false);
34326             }
34327         }
34328
34329         iD.ui.MapInMap.toggle = toggle;
34330
34331         selection
34332             .on('mousedown.map-in-map', startMouse)
34333             .on('mouseup.map-in-map', endMouse);
34334
34335         selection
34336             .call(zoom)
34337             .on('dblclick.zoom', null);
34338
34339         context.map()
34340             .on('drawn.map-in-map', function(drawn) {
34341                 if (drawn.full === true) redraw();
34342             });
34343
34344         redraw();
34345
34346         var keybinding = d3.keybinding('map-in-map')
34347             .on(key, toggle);
34348
34349         d3.select(document)
34350             .call(keybinding);
34351     }
34352
34353     return map_in_map;
34354 };
34355 iD.ui.modal = function(selection, blocking) {
34356
34357     var previous = selection.select('div.modal');
34358     var animate = previous.empty();
34359
34360     previous.transition()
34361         .duration(200)
34362         .style('opacity', 0)
34363         .remove();
34364
34365     var shaded = selection
34366         .append('div')
34367         .attr('class', 'shaded')
34368         .style('opacity', 0);
34369
34370     shaded.close = function() {
34371         shaded
34372             .transition()
34373             .duration(200)
34374             .style('opacity',0)
34375             .remove();
34376         modal
34377             .transition()
34378             .duration(200)
34379             .style('top','0px');
34380         keybinding.off();
34381     };
34382
34383     var keybinding = d3.keybinding('modal')
34384         .on('⌫', shaded.close)
34385         .on('⎋', shaded.close);
34386
34387     d3.select(document).call(keybinding);
34388
34389     var modal = shaded.append('div')
34390         .attr('class', 'modal fillL col6');
34391
34392         shaded.on('click.remove-modal', function() {
34393             if (d3.event.target === this && !blocking) shaded.close();
34394         });
34395
34396     modal.append('button')
34397         .attr('class', 'close')
34398         .on('click', function() {
34399             if (!blocking) shaded.close();
34400         })
34401         .append('div')
34402             .attr('class','icon close');
34403
34404     modal.append('div')
34405         .attr('class', 'content');
34406
34407     if (animate) {
34408         shaded.transition().style('opacity', 1);
34409     } else {
34410         shaded.style('opacity', 1);
34411     }
34412
34413     return shaded;
34414 };
34415 iD.ui.Modes = function(context) {
34416     var modes = [
34417         iD.modes.AddPoint(context),
34418         iD.modes.AddLine(context),
34419         iD.modes.AddArea(context)];
34420
34421     function editable() {
34422         return context.editable() && context.mode().id !== 'save';
34423     }
34424
34425     return function(selection) {
34426         var buttons = selection.selectAll('button.add-button')
34427             .data(modes);
34428
34429        buttons.enter().append('button')
34430            .attr('tabindex', -1)
34431            .attr('class', function(mode) { return mode.id + ' add-button col4'; })
34432            .on('click.mode-buttons', function(mode) {
34433                if (mode.id === context.mode().id) {
34434                    context.enter(iD.modes.Browse(context));
34435                } else {
34436                    context.enter(mode);
34437                }
34438            })
34439            .call(bootstrap.tooltip()
34440                .placement('bottom')
34441                .html(true)
34442                .title(function(mode) {
34443                    return iD.ui.tooltipHtml(mode.description, mode.key);
34444                }));
34445
34446         context.map()
34447             .on('move.modes', _.debounce(update, 500));
34448
34449         context
34450             .on('enter.modes', update);
34451
34452         buttons.append('span')
34453             .attr('class', function(mode) { return mode.id + ' icon icon-pre-text'; });
34454
34455         buttons.append('span')
34456             .attr('class', 'label')
34457             .text(function(mode) { return mode.title; });
34458
34459         context.on('enter.editor', function(entered) {
34460             buttons.classed('active', function(mode) { return entered.button === mode.button; });
34461             context.container()
34462                 .classed('mode-' + entered.id, true);
34463         });
34464
34465         context.on('exit.editor', function(exited) {
34466             context.container()
34467                 .classed('mode-' + exited.id, false);
34468         });
34469
34470         var keybinding = d3.keybinding('mode-buttons');
34471
34472         modes.forEach(function(m) {
34473             keybinding.on(m.key, function() { if (editable()) context.enter(m); });
34474         });
34475
34476         d3.select(document)
34477             .call(keybinding);
34478
34479         function update() {
34480             buttons.property('disabled', !editable());
34481         }
34482     };
34483 };
34484 iD.ui.Notice = function(context) {
34485     return function(selection) {
34486         var div = selection.append('div')
34487             .attr('class', 'notice');
34488
34489         var button = div.append('button')
34490             .attr('class', 'zoom-to notice')
34491             .on('click', function() { context.map().zoom(context.minEditableZoom()); });
34492
34493         button.append('span')
34494             .attr('class', 'icon zoom-in-invert');
34495
34496         button.append('span')
34497             .attr('class', 'label')
34498             .text(t('zoom_in_edit'));
34499
34500         function disableTooHigh() {
34501             div.style('display', context.editable() ? 'none' : 'block');
34502         }
34503
34504         context.map()
34505             .on('move.notice', _.debounce(disableTooHigh, 500));
34506
34507         disableTooHigh();
34508     };
34509 };
34510 iD.ui.preset = function(context) {
34511     var event = d3.dispatch('change'),
34512         state,
34513         fields,
34514         preset,
34515         tags,
34516         id;
34517
34518     function UIField(field, entity, show) {
34519         field = _.clone(field);
34520
34521         field.input = iD.ui.preset[field.type](field, context)
34522             .on('change', event.change);
34523
34524         if (field.input.entity) field.input.entity(entity);
34525
34526         field.keys = field.keys || [field.key];
34527
34528         field.show = show;
34529
34530         field.shown = function() {
34531             return field.id === 'name' || field.show || _.any(field.keys, function(key) { return !!tags[key]; });
34532         };
34533
34534         field.modified = function() {
34535             var original = context.graph().base().entities[entity.id];
34536             return _.any(field.keys, function(key) {
34537                 return original ? tags[key] !== original.tags[key] : tags[key];
34538             });
34539         };
34540
34541         field.revert = function() {
34542             var original = context.graph().base().entities[entity.id],
34543                 t = {};
34544             field.keys.forEach(function(key) {
34545                 t[key] = original ? original.tags[key] : undefined;
34546             });
34547             return t;
34548         };
34549
34550         field.present = function() {
34551             return _.any(field.keys, function(key) {
34552                 return tags[key];
34553             });
34554         };
34555
34556         field.remove = function() {
34557             var t = {};
34558             field.keys.forEach(function(key) {
34559                 t[key] = undefined;
34560             });
34561             return t;
34562         };
34563
34564         return field;
34565     }
34566
34567     function fieldKey(field) {
34568         return field.id;
34569     }
34570
34571     function presets(selection) {
34572         if (!fields) {
34573             var entity = context.entity(id),
34574                 geometry = context.geometry(id);
34575
34576             fields = [UIField(context.presets().field('name'), entity)];
34577
34578             preset.fields.forEach(function(field) {
34579                 if (field.matchGeometry(geometry)) {
34580                     fields.push(UIField(field, entity, true));
34581                 }
34582             });
34583
34584             if (entity.isHighwayIntersection(context.graph())) {
34585                 fields.push(UIField(context.presets().field('restrictions'), entity, true));
34586             }
34587
34588             context.presets().universal().forEach(function(field) {
34589                 if (preset.fields.indexOf(field) < 0) {
34590                     fields.push(UIField(field, entity));
34591                 }
34592             });
34593         }
34594
34595         var shown = fields.filter(function(field) { return field.shown(); }),
34596             notShown = fields.filter(function(field) { return !field.shown(); });
34597
34598         var $form = selection.selectAll('.preset-form')
34599             .data([0]);
34600
34601         $form.enter().append('div')
34602             .attr('class', 'preset-form inspector-inner fillL3');
34603
34604         var $fields = $form.selectAll('.form-field')
34605             .data(shown, fieldKey);
34606
34607         // Enter
34608
34609         var $enter = $fields.enter()
34610             .append('div')
34611             .attr('class', function(field) {
34612                 return 'form-field form-field-' + field.id;
34613             });
34614
34615         var $label = $enter.append('label')
34616             .attr('class', 'form-label')
34617             .attr('for', function(field) { return 'preset-input-' + field.id; })
34618             .text(function(field) { return field.label(); });
34619
34620         var wrap = $label.append('div')
34621             .attr('class', 'form-label-button-wrap');
34622
34623         wrap.append('button')
34624             .attr('class', 'remove-icon')
34625             .append('span').attr('class', 'icon delete');
34626
34627         wrap.append('button')
34628             .attr('class', 'modified-icon')
34629             .attr('tabindex', -1)
34630             .append('div')
34631             .attr('class', 'icon undo');
34632
34633         // Update
34634
34635         $fields.select('.form-label-button-wrap .remove-icon')
34636             .on('click', remove);
34637
34638         $fields.select('.modified-icon')
34639             .on('click', revert);
34640
34641         $fields
34642             .order()
34643             .classed('modified', function(field) {
34644                 return field.modified();
34645             })
34646             .classed('present', function(field) {
34647                 return field.present();
34648             })
34649             .each(function(field) {
34650                 var reference = iD.ui.TagReference(field.reference || {key: field.key}, context);
34651
34652                 if (state === 'hover') {
34653                     reference.showing(false);
34654                 }
34655
34656                 d3.select(this)
34657                     .call(field.input)
34658                     .call(reference.body)
34659                     .select('.form-label-button-wrap')
34660                     .call(reference.button);
34661
34662                 field.input.tags(tags);
34663             });
34664
34665         $fields.exit()
34666             .remove();
34667
34668         notShown = notShown.map(function(field) {
34669             return {
34670                 title: field.label(),
34671                 value: field.label(),
34672                 field: field
34673             };
34674         });
34675
34676         var $more = selection.selectAll('.more-fields')
34677             .data((notShown.length > 0) ? [0] : []);
34678
34679         $more.enter().append('div')
34680             .attr('class', 'more-fields')
34681             .append('label')
34682                 .text(t('inspector.add_fields'));
34683
34684         var $input = $more.selectAll('.value')
34685             .data([0]);
34686
34687         $input.enter().append('input')
34688             .attr('class', 'value')
34689             .attr('type', 'text');
34690
34691         $input.value('')
34692             .attr('placeholder', function() {
34693                 var placeholder = [];
34694                 for (var field in notShown) {
34695                     placeholder.push(notShown[field].title);
34696                 }
34697                 return placeholder.slice(0,3).join(', ') + ((placeholder.length > 3) ? '…' : '');
34698             })
34699             .call(d3.combobox().data(notShown)
34700                 .minItems(1)
34701                 .on('accept', show));
34702
34703         $more.exit()
34704             .remove();
34705
34706         $input.exit()
34707             .remove();
34708
34709         function show(field) {
34710             field = field.field;
34711             field.show = true;
34712             presets(selection);
34713             field.input.focus();
34714         }
34715
34716         function revert(field) {
34717             d3.event.stopPropagation();
34718             d3.event.preventDefault();
34719             event.change(field.revert());
34720         }
34721
34722         function remove(field) {
34723             d3.event.stopPropagation();
34724             d3.event.preventDefault();
34725             event.change(field.remove());
34726         }
34727     }
34728
34729     presets.preset = function(_) {
34730         if (!arguments.length) return preset;
34731         if (preset && preset.id === _.id) return presets;
34732         preset = _;
34733         fields = null;
34734         return presets;
34735     };
34736
34737     presets.state = function(_) {
34738         if (!arguments.length) return state;
34739         state = _;
34740         return presets;
34741     };
34742
34743     presets.tags = function(_) {
34744         if (!arguments.length) return tags;
34745         tags = _;
34746         // Don't reset fields here.
34747         return presets;
34748     };
34749
34750     presets.entityID = function(_) {
34751         if (!arguments.length) return id;
34752         if (id === _) return presets;
34753         id = _;
34754         fields = null;
34755         return presets;
34756     };
34757
34758     return d3.rebind(presets, event, 'on');
34759 };
34760 iD.ui.PresetIcon = function() {
34761     var preset, geometry;
34762
34763     function presetIcon(selection) {
34764         selection.each(setup);
34765     }
34766
34767     function setup() {
34768         var selection = d3.select(this),
34769             p = preset.apply(this, arguments),
34770             geom = geometry.apply(this, arguments);
34771
34772         var $fill = selection.selectAll('.preset-icon-fill')
34773             .data([0]);
34774
34775         $fill.enter().append('div');
34776
34777         $fill.attr('class', function() {
34778             var s = 'preset-icon-fill preset-icon-fill-' + geom;
34779             for (var i in p.tags) {
34780                 s += ' tag-' + i + ' tag-' + i + '-' + p.tags[i];
34781             }
34782             return s;
34783         });
34784
34785         var $icon = selection.selectAll('.preset-icon')
34786             .data([0]);
34787
34788         $icon.enter().append('div');
34789
34790         $icon.attr('class', function() {
34791             var icon = p.icon || (geom === 'line' ? 'other-line' : 'marker-stroked'),
34792                 klass = 'feature-' + icon + ' preset-icon';
34793
34794             var featureicon = iD.data.featureIcons[icon];
34795             if (featureicon && featureicon[geom]) {
34796                 klass += ' preset-icon-' + geom;
34797             } else if (icon === 'multipolygon') {
34798                 // Special case (geometry === 'area')
34799                 klass += ' preset-icon-relation';
34800             }
34801
34802             return klass;
34803         });
34804     }
34805
34806     presetIcon.preset = function(_) {
34807         if (!arguments.length) return preset;
34808         preset = d3.functor(_);
34809         return presetIcon;
34810     };
34811
34812     presetIcon.geometry = function(_) {
34813         if (!arguments.length) return geometry;
34814         geometry = d3.functor(_);
34815         return presetIcon;
34816     };
34817
34818     return presetIcon;
34819 };
34820 iD.ui.PresetList = function(context) {
34821     var event = d3.dispatch('choose'),
34822         id,
34823         currentPreset,
34824         autofocus = false;
34825
34826     function presetList(selection) {
34827         var geometry = context.geometry(id),
34828             presets = context.presets().matchGeometry(geometry);
34829
34830         selection.html('');
34831
34832         var messagewrap = selection.append('div')
34833             .attr('class', 'header fillL cf');
34834
34835         var message = messagewrap.append('h3')
34836             .text(t('inspector.choose'));
34837
34838         if (context.entity(id).isUsed(context.graph())) {
34839             messagewrap.append('button')
34840                 .attr('class', 'preset-choose')
34841                 .on('click', function() { event.choose(currentPreset); })
34842                 .append('span')
34843                 .attr('class', 'icon forward');
34844         } else {
34845             messagewrap.append('button')
34846                 .attr('class', 'close')
34847                 .on('click', function() {
34848                     context.enter(iD.modes.Browse(context));
34849                 })
34850                 .append('span')
34851                 .attr('class', 'icon close');
34852         }
34853
34854         function keydown() {
34855             // hack to let delete shortcut work when search is autofocused
34856             if (search.property('value').length === 0 &&
34857                 (d3.event.keyCode === d3.keybinding.keyCodes['⌫'] ||
34858                  d3.event.keyCode === d3.keybinding.keyCodes['⌦'])) {
34859                 d3.event.preventDefault();
34860                 d3.event.stopPropagation();
34861                 iD.operations.Delete([id], context)();
34862             } else if (search.property('value').length === 0 &&
34863                 (d3.event.ctrlKey || d3.event.metaKey) &&
34864                 d3.event.keyCode === d3.keybinding.keyCodes.z) {
34865                 d3.event.preventDefault();
34866                 d3.event.stopPropagation();
34867                 context.undo();
34868             } else if (!d3.event.ctrlKey && !d3.event.metaKey) {
34869                 d3.select(this).on('keydown', null);
34870             }
34871         }
34872
34873         function keypress() {
34874             // enter
34875             var value = search.property('value');
34876             if (d3.event.keyCode === 13 && value.length) {
34877                 list.selectAll('.preset-list-item:first-child').datum().choose();
34878             }
34879         }
34880
34881         function inputevent() {
34882             var value = search.property('value');
34883             list.classed('filtered', value.length);
34884             if (value.length) {
34885                 var results = presets.search(value, geometry);
34886                 message.text(t('inspector.results', {
34887                     n: results.collection.length,
34888                     search: value
34889                 }));
34890                 list.call(drawList, results);
34891             } else {
34892                 list.call(drawList, context.presets().defaults(geometry, 36));
34893                 message.text(t('inspector.choose'));
34894             }
34895         }
34896
34897         var searchWrap = selection.append('div')
34898             .attr('class', 'search-header');
34899
34900         var search = searchWrap.append('input')
34901             .attr('class', 'preset-search-input')
34902             .attr('placeholder', t('inspector.search'))
34903             .attr('type', 'search')
34904             .on('keydown', keydown)
34905             .on('keypress', keypress)
34906             .on('input', inputevent);
34907
34908         searchWrap.append('span')
34909             .attr('class', 'icon search');
34910
34911         if (autofocus) {
34912             search.node().focus();
34913         }
34914
34915         var listWrap = selection.append('div')
34916             .attr('class', 'inspector-body');
34917
34918         var list = listWrap.append('div')
34919             .attr('class', 'preset-list fillL cf')
34920             .call(drawList, context.presets().defaults(geometry, 36));
34921     }
34922
34923     function drawList(list, presets) {
34924         var collection = presets.collection.map(function(preset) {
34925             return preset.members ? CategoryItem(preset) : PresetItem(preset);
34926         });
34927
34928         var items = list.selectAll('.preset-list-item')
34929             .data(collection, function(d) { return d.preset.id; });
34930
34931         items.enter().append('div')
34932             .attr('class', function(item) { return 'preset-list-item preset-' + item.preset.id.replace('/', '-'); })
34933             .classed('current', function(item) { return item.preset === currentPreset; })
34934             .each(function(item) {
34935                 d3.select(this).call(item);
34936             })
34937             .style('opacity', 0)
34938             .transition()
34939             .style('opacity', 1);
34940
34941         items.order();
34942
34943         items.exit()
34944             .remove();
34945     }
34946
34947     function CategoryItem(preset) {
34948         var box, sublist, shown = false;
34949
34950         function item(selection) {
34951             var wrap = selection.append('div')
34952                 .attr('class', 'preset-list-button-wrap category col12');
34953
34954             wrap.append('button')
34955                 .attr('class', 'preset-list-button')
34956                 .call(iD.ui.PresetIcon()
34957                     .geometry(context.geometry(id))
34958                     .preset(preset))
34959                 .on('click', item.choose)
34960                 .append('div')
34961                 .attr('class', 'label')
34962                 .text(preset.name());
34963
34964             box = selection.append('div')
34965                 .attr('class', 'subgrid col12')
34966                 .style('max-height', '0px')
34967                 .style('opacity', 0);
34968
34969             box.append('div')
34970                 .attr('class', 'arrow');
34971
34972             sublist = box.append('div')
34973                 .attr('class', 'preset-list fillL3 cf fl');
34974         }
34975
34976         item.choose = function() {
34977             if (shown) {
34978                 shown = false;
34979                 box.transition()
34980                     .duration(200)
34981                     .style('opacity', '0')
34982                     .style('max-height', '0px')
34983                     .style('padding-bottom', '0px');
34984             } else {
34985                 shown = true;
34986                 sublist.call(drawList, preset.members);
34987                 box.transition()
34988                     .duration(200)
34989                     .style('opacity', '1')
34990                     .style('max-height', 200 + preset.members.collection.length * 80 + 'px')
34991                     .style('padding-bottom', '20px');
34992             }
34993         };
34994
34995         item.preset = preset;
34996
34997         return item;
34998     }
34999
35000     function PresetItem(preset) {
35001         function item(selection) {
35002             var wrap = selection.append('div')
35003                 .attr('class', 'preset-list-button-wrap col12');
35004
35005             wrap.append('button')
35006                 .attr('class', 'preset-list-button')
35007                 .call(iD.ui.PresetIcon()
35008                     .geometry(context.geometry(id))
35009                     .preset(preset))
35010                 .on('click', item.choose)
35011                 .append('div')
35012                 .attr('class', 'label')
35013                 .text(preset.name());
35014
35015             wrap.call(item.reference.button);
35016             selection.call(item.reference.body);
35017         }
35018
35019         item.choose = function() {
35020             context.presets().choose(preset);
35021
35022             context.perform(
35023                 iD.actions.ChangePreset(id, currentPreset, preset),
35024                 t('operations.change_tags.annotation'));
35025
35026             event.choose(preset);
35027         };
35028
35029         item.help = function() {
35030             d3.event.stopPropagation();
35031             item.reference.toggle();
35032         };
35033
35034         item.preset = preset;
35035         item.reference = iD.ui.TagReference(preset.reference(context.geometry(id)), context);
35036
35037         return item;
35038     }
35039
35040     presetList.autofocus = function(_) {
35041         if (!arguments.length) return autofocus;
35042         autofocus = _;
35043         return presetList;
35044     };
35045
35046     presetList.entityID = function(_) {
35047         if (!arguments.length) return id;
35048         id = _;
35049         presetList.preset(context.presets().match(context.entity(id), context.graph()));
35050         return presetList;
35051     };
35052
35053     presetList.preset = function(_) {
35054         if (!arguments.length) return currentPreset;
35055         currentPreset = _;
35056         return presetList;
35057     };
35058
35059     return d3.rebind(presetList, event, 'on');
35060 };
35061 iD.ui.RadialMenu = function(context, operations) {
35062     var menu,
35063         center = [0, 0],
35064         tooltip;
35065
35066     var radialMenu = function(selection) {
35067         if (!operations.length)
35068             return;
35069
35070         selection.node().parentNode.focus();
35071
35072         function click(operation) {
35073             d3.event.stopPropagation();
35074             if (operation.disabled())
35075                 return;
35076             operation();
35077             radialMenu.close();
35078         }
35079
35080         menu = selection.append('g')
35081             .attr('class', 'radial-menu')
35082             .attr('transform', 'translate(' + center + ')')
35083             .attr('opacity', 0);
35084
35085         menu.transition()
35086             .attr('opacity', 1);
35087
35088         var r = 50,
35089             a = Math.PI / 4,
35090             a0 = -Math.PI / 4,
35091             a1 = a0 + (operations.length - 1) * a;
35092
35093         menu.append('path')
35094             .attr('class', 'radial-menu-background')
35095             .attr('d', 'M' + r * Math.sin(a0) + ',' +
35096                              r * Math.cos(a0) +
35097                       ' A' + r + ',' + r + ' 0 ' + (operations.length > 5 ? '1' : '0') + ',0 ' +
35098                              (r * Math.sin(a1) + 1e-3) + ',' +
35099                              (r * Math.cos(a1) + 1e-3)) // Force positive-length path (#1305)
35100             .attr('stroke-width', 50)
35101             .attr('stroke-linecap', 'round');
35102
35103         var button = menu.selectAll()
35104             .data(operations)
35105             .enter().append('g')
35106             .attr('transform', function(d, i) {
35107                 return 'translate(' + r * Math.sin(a0 + i * a) + ',' +
35108                                       r * Math.cos(a0 + i * a) + ')';
35109             });
35110
35111         button.append('circle')
35112             .attr('class', function(d) { return 'radial-menu-item radial-menu-item-' + d.id; })
35113             .attr('r', 15)
35114             .classed('disabled', function(d) { return d.disabled(); })
35115             .on('click', click)
35116             .on('mousedown', mousedown)
35117             .on('mouseover', mouseover)
35118             .on('mouseout', mouseout);
35119
35120         button.append('use')
35121             .attr('transform', 'translate(-10, -10)')
35122             .attr('clip-path', 'url(#clip-square-20)')
35123             .attr('xlink:href', function(d) { return '#icon-operation-' + (d.disabled() ? 'disabled-' : '') + d.id; });
35124
35125         tooltip = d3.select(document.body)
35126             .append('div')
35127             .attr('class', 'tooltip-inner radial-menu-tooltip');
35128
35129         function mousedown() {
35130             d3.event.stopPropagation(); // https://github.com/openstreetmap/iD/issues/1869
35131         }
35132
35133         function mouseover(d, i) {
35134             var rect = context.surfaceRect(),
35135                 angle = a0 + i * a,
35136                 top = rect.top + (r + 25) * Math.cos(angle) + center[1] + 'px',
35137                 left = rect.left + (r + 25) * Math.sin(angle) + center[0] + 'px',
35138                 bottom = rect.height - (r + 25) * Math.cos(angle) - center[1] + 'px',
35139                 right = rect.width - (r + 25) * Math.sin(angle) - center[0] + 'px';
35140
35141             tooltip
35142                 .style('top', null)
35143                 .style('left', null)
35144                 .style('bottom', null)
35145                 .style('right', null)
35146                 .style('display', 'block')
35147                 .html(iD.ui.tooltipHtml(d.tooltip(), d.keys[0]));
35148
35149             if (i === 0) {
35150                 tooltip
35151                     .style('right', right)
35152                     .style('top', top);
35153             } else if (i >= 4) {
35154                 tooltip
35155                     .style('left', left)
35156                     .style('bottom', bottom);
35157             } else {
35158                 tooltip
35159                     .style('left', left)
35160                     .style('top', top);
35161             }
35162         }
35163
35164         function mouseout() {
35165             tooltip.style('display', 'none');
35166         }
35167     };
35168
35169     radialMenu.close = function() {
35170         if (menu) {
35171             menu
35172                 .style('pointer-events', 'none')
35173                 .transition()
35174                 .attr('opacity', 0)
35175                 .remove();
35176         }
35177
35178         if (tooltip) {
35179             tooltip.remove();
35180         }
35181     };
35182
35183     radialMenu.center = function(_) {
35184         if (!arguments.length) return center;
35185         center = _;
35186         return radialMenu;
35187     };
35188
35189     return radialMenu;
35190 };
35191 iD.ui.RawMemberEditor = function(context) {
35192     var id;
35193
35194     function selectMember(d) {
35195         d3.event.preventDefault();
35196         context.enter(iD.modes.Select(context, [d.id]));
35197     }
35198
35199     function changeRole(d) {
35200         var role = d3.select(this).property('value');
35201         context.perform(
35202             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.id, {role: role}), d.index),
35203             t('operations.change_role.annotation'));
35204     }
35205
35206     function deleteMember(d) {
35207         context.perform(
35208             iD.actions.DeleteMember(d.relation.id, d.index),
35209             t('operations.delete_member.annotation'));
35210
35211         if (!context.hasEntity(d.relation.id)) {
35212             context.enter(iD.modes.Browse(context));
35213         }
35214     }
35215
35216     function rawMemberEditor(selection) {
35217         var entity = context.entity(id),
35218             memberships = [];
35219
35220         entity.members.forEach(function(member, index) {
35221             memberships.push({
35222                 index: index,
35223                 id: member.id,
35224                 role: member.role,
35225                 relation: entity,
35226                 member: context.hasEntity(member.id)
35227             });
35228         });
35229
35230         selection.call(iD.ui.Disclosure()
35231             .title(t('inspector.all_members') + ' (' + memberships.length + ')')
35232             .expanded(true)
35233             .on('toggled', toggled)
35234             .content(content));
35235
35236         function toggled(expanded) {
35237             if (expanded) {
35238                 selection.node().parentNode.scrollTop += 200;
35239             }
35240         }
35241
35242         function content($wrap) {
35243             var $list = $wrap.selectAll('.member-list')
35244                 .data([0]);
35245
35246             $list.enter().append('ul')
35247                 .attr('class', 'member-list');
35248
35249             var $items = $list.selectAll('li')
35250                 .data(memberships, function(d) {
35251                     return iD.Entity.key(d.relation) + ',' + d.index + ',' +
35252                         (d.member ? iD.Entity.key(d.member) : 'incomplete');
35253                 });
35254
35255             var $enter = $items.enter().append('li')
35256                 .attr('class', 'member-row form-field')
35257                 .classed('member-incomplete', function(d) { return !d.member; });
35258
35259             $enter.each(function(d) {
35260                 if (d.member) {
35261                     var $label = d3.select(this).append('label')
35262                         .attr('class', 'form-label')
35263                         .append('a')
35264                         .attr('href', '#')
35265                         .on('click', selectMember);
35266
35267                     $label.append('span')
35268                         .attr('class', 'member-entity-type')
35269                         .text(function(d) { return context.presets().match(d.member, context.graph()).name(); });
35270
35271                     $label.append('span')
35272                         .attr('class', 'member-entity-name')
35273                         .text(function(d) { return iD.util.displayName(d.member); });
35274
35275                 } else {
35276                     d3.select(this).append('label')
35277                         .attr('class', 'form-label')
35278                         .text(t('inspector.incomplete'));
35279                 }
35280             });
35281
35282             $enter.append('input')
35283                 .attr('class', 'member-role')
35284                 .property('type', 'text')
35285                 .attr('maxlength', 255)
35286                 .attr('placeholder', t('inspector.role'))
35287                 .property('value', function(d) { return d.role; })
35288                 .on('change', changeRole);
35289
35290             $enter.append('button')
35291                 .attr('tabindex', -1)
35292                 .attr('class', 'remove button-input-action member-delete minor')
35293                 .on('click', deleteMember)
35294                 .append('span')
35295                 .attr('class', 'icon delete');
35296
35297             $items.exit()
35298                 .remove();
35299         }
35300     }
35301
35302     rawMemberEditor.entityID = function(_) {
35303         if (!arguments.length) return id;
35304         id = _;
35305         return rawMemberEditor;
35306     };
35307
35308     return rawMemberEditor;
35309 };
35310 iD.ui.RawMembershipEditor = function(context) {
35311     var id, showBlank;
35312
35313     function selectRelation(d) {
35314         d3.event.preventDefault();
35315         context.enter(iD.modes.Select(context, [d.relation.id]));
35316     }
35317
35318     function changeRole(d) {
35319         var role = d3.select(this).property('value');
35320         context.perform(
35321             iD.actions.ChangeMember(d.relation.id, _.extend({}, d.member, {role: role}), d.index),
35322             t('operations.change_role.annotation'));
35323     }
35324
35325     function addMembership(d, role) {
35326         showBlank = false;
35327
35328         if (d.relation) {
35329             context.perform(
35330                 iD.actions.AddMember(d.relation.id, {id: id, type: context.entity(id).type, role: role}),
35331                 t('operations.add_member.annotation'));
35332
35333         } else {
35334             var relation = iD.Relation();
35335
35336             context.perform(
35337                 iD.actions.AddEntity(relation),
35338                 iD.actions.AddMember(relation.id, {id: id, type: context.entity(id).type, role: role}),
35339                 t('operations.add.annotation.relation'));
35340
35341             context.enter(iD.modes.Select(context, [relation.id]));
35342         }
35343     }
35344
35345     function deleteMembership(d) {
35346         context.perform(
35347             iD.actions.DeleteMember(d.relation.id, d.index),
35348             t('operations.delete_member.annotation'));
35349     }
35350
35351     function relations(q) {
35352         var newRelation = {
35353                 relation: null,
35354                 value: t('inspector.new_relation')
35355             },
35356             result = [],
35357             graph = context.graph();
35358
35359         context.intersects(context.extent()).forEach(function(entity) {
35360             if (entity.type !== 'relation' || entity.id === id)
35361                 return;
35362
35363             var presetName = context.presets().match(entity, graph).name(),
35364                 entityName = iD.util.displayName(entity) || '';
35365
35366             var value = presetName + ' ' + entityName;
35367             if (q && value.toLowerCase().indexOf(q.toLowerCase()) === -1)
35368                 return;
35369
35370             result.push({
35371                 relation: entity,
35372                 value: value
35373             });
35374         });
35375
35376         result.sort(function(a, b) {
35377             return iD.Relation.creationOrder(a.relation, b.relation);
35378         });
35379         result.unshift(newRelation);
35380
35381         return result;
35382     }
35383
35384     function rawMembershipEditor(selection) {
35385         var entity = context.entity(id),
35386             memberships = [];
35387
35388         context.graph().parentRelations(entity).forEach(function(relation) {
35389             relation.members.forEach(function(member, index) {
35390                 if (member.id === entity.id) {
35391                     memberships.push({relation: relation, member: member, index: index});
35392                 }
35393             });
35394         });
35395
35396         selection.call(iD.ui.Disclosure()
35397             .title(t('inspector.all_relations') + ' (' + memberships.length + ')')
35398             .expanded(true)
35399             .on('toggled', toggled)
35400             .content(content));
35401
35402         function toggled(expanded) {
35403             if (expanded) {
35404                 selection.node().parentNode.scrollTop += 200;
35405             }
35406         }
35407
35408         function content($wrap) {
35409             var $list = $wrap.selectAll('.member-list')
35410                 .data([0]);
35411
35412             $list.enter().append('ul')
35413                 .attr('class', 'member-list');
35414
35415             var $items = $list.selectAll('li.member-row-normal')
35416                 .data(memberships, function(d) { return iD.Entity.key(d.relation) + ',' + d.index; });
35417
35418             var $enter = $items.enter().append('li')
35419                 .attr('class', 'member-row member-row-normal form-field');
35420
35421             var $label = $enter.append('label')
35422                 .attr('class', 'form-label')
35423                 .append('a')
35424                 .attr('href', '#')
35425                 .on('click', selectRelation);
35426
35427             $label.append('span')
35428                 .attr('class', 'member-entity-type')
35429                 .text(function(d) { return context.presets().match(d.relation, context.graph()).name(); });
35430
35431             $label.append('span')
35432                 .attr('class', 'member-entity-name')
35433                 .text(function(d) { return iD.util.displayName(d.relation); });
35434
35435             $enter.append('input')
35436                 .attr('class', 'member-role')
35437                 .property('type', 'text')
35438                 .attr('maxlength', 255)
35439                 .attr('placeholder', t('inspector.role'))
35440                 .property('value', function(d) { return d.member.role; })
35441                 .on('change', changeRole);
35442
35443             $enter.append('button')
35444                 .attr('tabindex', -1)
35445                 .attr('class', 'remove button-input-action member-delete minor')
35446                 .on('click', deleteMembership)
35447                 .append('span')
35448                 .attr('class', 'icon delete');
35449
35450             $items.exit()
35451                 .remove();
35452
35453             if (showBlank) {
35454                 var $new = $list.selectAll('.member-row-new')
35455                     .data([0]);
35456
35457                 $enter = $new.enter().append('li')
35458                     .attr('class', 'member-row member-row-new form-field');
35459
35460                 $enter.append('input')
35461                     .attr('type', 'text')
35462                     .attr('class', 'member-entity-input')
35463                     .call(d3.combobox()
35464                         .minItems(1)
35465                         .fetcher(function(value, callback) {
35466                             callback(relations(value));
35467                         })
35468                         .on('accept', function(d) {
35469                             addMembership(d, $new.select('.member-role').property('value'));
35470                         }));
35471
35472                 $enter.append('input')
35473                     .attr('class', 'member-role')
35474                     .property('type', 'text')
35475                     .attr('maxlength', 255)
35476                     .attr('placeholder', t('inspector.role'))
35477                     .on('change', changeRole);
35478
35479                 $enter.append('button')
35480                     .attr('tabindex', -1)
35481                     .attr('class', 'remove button-input-action member-delete minor')
35482                     .on('click', deleteMembership)
35483                     .append('span')
35484                     .attr('class', 'icon delete');
35485
35486             } else {
35487                 $list.selectAll('.member-row-new')
35488                     .remove();
35489             }
35490
35491             var $add = $wrap.selectAll('.add-relation')
35492                 .data([0]);
35493
35494             $add.enter().append('button')
35495                 .attr('class', 'add-relation')
35496                 .append('span')
35497                 .attr('class', 'icon plus light');
35498
35499             $wrap.selectAll('.add-relation')
35500                 .on('click', function() {
35501                     showBlank = true;
35502                     content($wrap);
35503                     $list.selectAll('.member-entity-input').node().focus();
35504                 });
35505         }
35506     }
35507
35508     rawMembershipEditor.entityID = function(_) {
35509         if (!arguments.length) return id;
35510         id = _;
35511         return rawMembershipEditor;
35512     };
35513
35514     return rawMembershipEditor;
35515 };
35516 iD.ui.RawTagEditor = function(context) {
35517     var event = d3.dispatch('change'),
35518         showBlank = false,
35519         state,
35520         preset,
35521         tags,
35522         id;
35523
35524     function rawTagEditor(selection) {
35525         var count = Object.keys(tags).filter(function(d) { return d; }).length;
35526
35527         selection.call(iD.ui.Disclosure()
35528             .title(t('inspector.all_tags') + ' (' + count + ')')
35529             .expanded(context.storage('raw_tag_editor.expanded') === 'true' || preset.isFallback())
35530             .on('toggled', toggled)
35531             .content(content));
35532
35533         function toggled(expanded) {
35534             context.storage('raw_tag_editor.expanded', expanded);
35535             if (expanded) {
35536                 selection.node().parentNode.scrollTop += 200;
35537             }
35538         }
35539     }
35540
35541     function content($wrap) {
35542         var entries = d3.entries(tags);
35543
35544         if (!entries.length || showBlank) {
35545             showBlank = false;
35546             entries.push({key: '', value: ''});
35547         }
35548
35549         var $list = $wrap.selectAll('.tag-list')
35550             .data([0]);
35551
35552         $list.enter().append('ul')
35553             .attr('class', 'tag-list');
35554
35555         var $newTag = $wrap.selectAll('.add-tag')
35556             .data([0]);
35557
35558         var $enter = $newTag.enter().append('button')
35559             .attr('class', 'add-tag');
35560
35561         $enter.append('span')
35562             .attr('class', 'icon plus light');
35563
35564         $newTag.on('click', addTag);
35565
35566         var $items = $list.selectAll('li')
35567             .data(entries, function(d) { return d.key; });
35568
35569         // Enter
35570
35571         $enter = $items.enter().append('li')
35572             .attr('class', 'tag-row cf');
35573
35574         $enter.append('div')
35575             .attr('class', 'key-wrap')
35576             .append('input')
35577             .property('type', 'text')
35578             .attr('class', 'key')
35579             .attr('maxlength', 255);
35580
35581         $enter.append('div')
35582             .attr('class', 'input-wrap-position')
35583             .append('input')
35584             .property('type', 'text')
35585             .attr('class', 'value')
35586             .attr('maxlength', 255);
35587
35588         $enter.append('button')
35589             .attr('tabindex', -1)
35590             .attr('class', 'remove minor')
35591             .append('span')
35592             .attr('class', 'icon delete');
35593
35594         if (context.taginfo()) {
35595             $enter.each(bindTypeahead);
35596         }
35597
35598         // Update
35599
35600         $items.order();
35601
35602         $items.each(function(tag) {
35603             var reference = iD.ui.TagReference({key: tag.key, value: tag.value}, context);
35604
35605             if (state === 'hover') {
35606                 reference.showing(false);
35607             }
35608
35609             d3.select(this)
35610                 .call(reference.button)
35611                 .call(reference.body);
35612         });
35613
35614         $items.select('input.key')
35615             .value(function(d) { return d.key; })
35616             .on('blur', keyChange)
35617             .on('change', keyChange);
35618
35619         $items.select('input.value')
35620             .value(function(d) { return d.value; })
35621             .on('blur', valueChange)
35622             .on('change', valueChange)
35623             .on('keydown.push-more', pushMore);
35624
35625         $items.select('button.remove')
35626             .on('click', removeTag);
35627
35628         $items.exit()
35629             .remove();
35630
35631         function pushMore() {
35632             if (d3.event.keyCode === 9 && !d3.event.shiftKey &&
35633                 $list.selectAll('li:last-child input.value').node() === this) {
35634                 addTag();
35635             }
35636         }
35637
35638         function bindTypeahead() {
35639             var row = d3.select(this),
35640                 key = row.selectAll('input.key'),
35641                 value = row.selectAll('input.value');
35642
35643             function sort(value, data) {
35644                 var sameletter = [],
35645                     other = [];
35646                 for (var i = 0; i < data.length; i++) {
35647                     if (data[i].value.substring(0, value.length) === value) {
35648                         sameletter.push(data[i]);
35649                     } else {
35650                         other.push(data[i]);
35651                     }
35652                 }
35653                 return sameletter.concat(other);
35654             }
35655
35656             key.call(d3.combobox()
35657                 .fetcher(function(value, callback) {
35658                     context.taginfo().keys({
35659                         debounce: true,
35660                         geometry: context.geometry(id),
35661                         query: value
35662                     }, function(err, data) {
35663                         if (!err) callback(sort(value, data));
35664                     });
35665                 }));
35666
35667             value.call(d3.combobox()
35668                 .fetcher(function(value, callback) {
35669                     context.taginfo().values({
35670                         debounce: true,
35671                         key: key.value(),
35672                         geometry: context.geometry(id),
35673                         query: value
35674                     }, function(err, data) {
35675                         if (!err) callback(sort(value, data));
35676                     });
35677                 }));
35678         }
35679
35680         function keyChange(d) {
35681             var kOld = d.key,
35682                 kNew = this.value.trim(),
35683                 tag = {};
35684
35685             if (kNew && kNew !== kOld) {
35686                 var match = kNew.match(/^(.*?)(?:_(\d+))?$/),
35687                     base = match[1],
35688                     suffix = +(match[2] || 1);
35689                 while (tags[kNew]) {  // rename key if already in use
35690                     kNew = base + '_' + suffix++;
35691                 }
35692             }
35693             tag[kOld] = undefined;
35694             tag[kNew] = d.value;
35695             d.key = kNew; // Maintain DOM identity through the subsequent update.
35696             this.value = kNew;
35697             event.change(tag);
35698         }
35699
35700         function valueChange(d) {
35701             var tag = {};
35702             tag[d.key] = this.value;
35703             event.change(tag);
35704         }
35705
35706         function removeTag(d) {
35707             var tag = {};
35708             tag[d.key] = undefined;
35709             event.change(tag);
35710             d3.select(this.parentNode).remove();
35711         }
35712
35713         function addTag() {
35714             // Wrapped in a setTimeout in case it's being called from a blur
35715             // handler. Without the setTimeout, the call to `content` would
35716             // wipe out the pending value change.
35717             setTimeout(function() {
35718                 showBlank = true;
35719                 content($wrap);
35720                 $list.selectAll('li:last-child input.key').node().focus();
35721             }, 0);
35722         }
35723     }
35724
35725     rawTagEditor.state = function(_) {
35726         if (!arguments.length) return state;
35727         state = _;
35728         return rawTagEditor;
35729     };
35730
35731     rawTagEditor.preset = function(_) {
35732         if (!arguments.length) return preset;
35733         preset = _;
35734         return rawTagEditor;
35735     };
35736
35737     rawTagEditor.tags = function(_) {
35738         if (!arguments.length) return tags;
35739         tags = _;
35740         return rawTagEditor;
35741     };
35742
35743     rawTagEditor.entityID = function(_) {
35744         if (!arguments.length) return id;
35745         id = _;
35746         return rawTagEditor;
35747     };
35748
35749     return d3.rebind(rawTagEditor, event, 'on');
35750 };
35751 iD.ui.Restore = function(context) {
35752     return function(selection) {
35753         if (!context.history().lock() || !context.history().restorableChanges())
35754             return;
35755
35756         var modal = iD.ui.modal(selection);
35757
35758         modal.select('.modal')
35759             .attr('class', 'modal fillL col6');
35760
35761         var introModal = modal.select('.content');
35762
35763         introModal.attr('class','cf');
35764
35765         introModal.append('div')
35766             .attr('class', 'modal-section')
35767             .append('h3')
35768             .text(t('restore.heading'));
35769
35770         introModal.append('div')
35771             .attr('class','modal-section')
35772             .append('p')
35773             .text(t('restore.description'));
35774
35775         var buttonWrap = introModal.append('div')
35776             .attr('class', 'modal-actions cf');
35777
35778         var restore = buttonWrap.append('button')
35779             .attr('class', 'restore col6')
35780             .text(t('restore.restore'))
35781             .on('click', function() {
35782                 context.history().restore();
35783                 modal.remove();
35784             });
35785
35786         buttonWrap.append('button')
35787             .attr('class', 'reset col6')
35788             .text(t('restore.reset'))
35789             .on('click', function() {
35790                 context.history().clearSaved();
35791                 modal.remove();
35792             });
35793
35794         restore.node().focus();
35795     };
35796 };
35797 iD.ui.Save = function(context) {
35798     var history = context.history(),
35799         key = iD.ui.cmd('⌘S');
35800
35801     function saving() {
35802         return context.mode().id === 'save';
35803     }
35804
35805     function save() {
35806         d3.event.preventDefault();
35807         if (!saving() && history.hasChanges()) {
35808             context.enter(iD.modes.Save(context));
35809         }
35810     }
35811
35812     return function(selection) {
35813         var tooltip = bootstrap.tooltip()
35814             .placement('bottom')
35815             .html(true)
35816             .title(iD.ui.tooltipHtml(t('save.no_changes'), key));
35817
35818         var button = selection.append('button')
35819             .attr('class', 'save col12 disabled')
35820             .attr('tabindex', -1)
35821             .on('click', save)
35822             .call(tooltip);
35823
35824         button.append('span')
35825             .attr('class', 'label')
35826             .text(t('save.title'));
35827
35828         button.append('span')
35829             .attr('class', 'count')
35830             .text('0');
35831
35832         var keybinding = d3.keybinding('undo-redo')
35833             .on(key, save, true);
35834
35835         d3.select(document)
35836             .call(keybinding);
35837
35838         var numChanges = 0;
35839
35840         context.history().on('change.save', function() {
35841             var _ = history.difference().summary().length;
35842             if (_ === numChanges)
35843                 return;
35844             numChanges = _;
35845
35846             tooltip.title(iD.ui.tooltipHtml(t(numChanges > 0 ?
35847                     'save.help' : 'save.no_changes'), key));
35848
35849             button
35850                 .classed('disabled', numChanges === 0)
35851                 .classed('has-count', numChanges > 0);
35852
35853             button.select('span.count')
35854                 .text(numChanges);
35855         });
35856
35857         context.on('enter.save', function() {
35858             button.property('disabled', saving());
35859             if (saving()) button.call(tooltip.hide);
35860         });
35861     };
35862 };
35863 iD.ui.Scale = function(context) {
35864     var projection = context.projection,
35865         maxLength = 180,
35866         tickHeight = 8;
35867
35868     function scaleDefs(loc1, loc2) {
35869         var lat = (loc2[1] + loc1[1]) / 2,
35870             imperial = (iD.detect().locale.toLowerCase() === 'en-us'),
35871             conversion = (imperial ? 3.28084 : 1),
35872             dist = iD.geo.lonToMeters(loc2[0] - loc1[0], lat) * conversion,
35873             scale = { dist: 0, px: 0, text: '' },
35874             buckets, i, val, dLon;
35875
35876         if (imperial) {
35877             buckets = [5280000, 528000, 52800, 5280, 500, 50, 5, 1];
35878         } else {
35879             buckets = [5000000, 500000, 50000, 5000, 500, 50, 5, 1];
35880         }
35881
35882         // determine a user-friendly endpoint for the scale
35883         for (i = 0; i < buckets.length; i++) {
35884             val = buckets[i];
35885             if (dist >= val) {
35886                 scale.dist = Math.floor(dist / val) * val;
35887                 break;
35888             }
35889         }
35890
35891         dLon = iD.geo.metersToLon(scale.dist / conversion, lat);
35892         scale.px = Math.round(projection([loc1[0] + dLon, loc1[1]])[0]);
35893
35894         if (imperial) {
35895             if (scale.dist >= 5280) {
35896                 scale.dist /= 5280;
35897                 scale.text = String(scale.dist) + ' mi';
35898             } else {
35899                 scale.text = String(scale.dist) + ' ft';
35900             }
35901         } else {
35902             if (scale.dist >= 1000) {
35903                 scale.dist /= 1000;
35904                 scale.text = String(scale.dist) + ' km';
35905             } else {
35906                 scale.text = String(scale.dist) + ' m';
35907             }
35908         }
35909
35910         return scale;
35911     }
35912
35913     function update(selection) {
35914         // choose loc1, loc2 along bottom of viewport (near where the scale will be drawn)
35915         var dims = context.map().dimensions(),
35916             loc1 = projection.invert([0, dims[1]]),
35917             loc2 = projection.invert([maxLength, dims[1]]),
35918             scale = scaleDefs(loc1, loc2);
35919
35920         selection.select('#scalepath')
35921             .attr('d', 'M0.5,0.5v' + tickHeight + 'h' + scale.px + 'v-' + tickHeight);
35922
35923         selection.select('#scaletext')
35924             .attr('x', scale.px + 8)
35925             .attr('y', tickHeight)
35926             .text(scale.text);
35927     }
35928
35929     return function(selection) {
35930         var g = selection.append('svg')
35931             .attr('id', 'scale')
35932             .append('g')
35933             .attr('transform', 'translate(10,11)');
35934
35935         g.append('path').attr('id', 'scalepath');
35936         g.append('text').attr('id', 'scaletext');
35937
35938         update(selection);
35939
35940         context.map().on('move.scale', function() {
35941             update(selection);
35942         });
35943     };
35944 };
35945 iD.ui.SelectionList = function(context, selectedIDs) {
35946
35947     function selectEntity(entity) {
35948         context.enter(iD.modes.Select(context, [entity.id]).suppressMenu(true));
35949     }
35950
35951
35952     function selectionList(selection) {
35953         selection.classed('selection-list-pane', true);
35954
35955         var header = selection.append('div')
35956             .attr('class', 'header fillL cf');
35957
35958         header.append('h3')
35959             .text(t('inspector.multiselect'));
35960
35961         var listWrap = selection.append('div')
35962             .attr('class', 'inspector-body');
35963
35964         var list = listWrap.append('div')
35965             .attr('class', 'feature-list cf');
35966
35967         context.history().on('change.selection-list', drawList);
35968         drawList();
35969
35970         function drawList() {
35971             var entities = selectedIDs
35972                 .map(function(id) { return context.hasEntity(id); })
35973                 .filter(function(entity) { return entity; });
35974
35975             var items = list.selectAll('.feature-list-item')
35976                 .data(entities, iD.Entity.key);
35977
35978             var enter = items.enter().append('button')
35979                 .attr('class', 'feature-list-item')
35980                 .on('click', selectEntity);
35981
35982             // Enter
35983
35984             var label = enter.append('div')
35985                 .attr('class', 'label');
35986
35987             label.append('span')
35988                 .attr('class', 'icon icon-pre-text');
35989
35990             label.append('span')
35991                 .attr('class', 'entity-type');
35992
35993             label.append('span')
35994                 .attr('class', 'entity-name');
35995
35996             // Update
35997
35998             items.selectAll('.icon')
35999                 .attr('class', function(entity) { return context.geometry(entity.id) + ' icon icon-pre-text'; });
36000
36001             items.selectAll('.entity-type')
36002                 .text(function(entity) { return context.presets().match(entity, context.graph()).name(); });
36003
36004             items.selectAll('.entity-name')
36005                 .text(function(entity) { return iD.util.displayName(entity); });
36006
36007             // Exit
36008
36009             items.exit()
36010                 .remove();
36011         }
36012     }
36013
36014     return selectionList;
36015
36016 };
36017 iD.ui.Sidebar = function(context) {
36018     var inspector = iD.ui.Inspector(context),
36019         current;
36020
36021     function sidebar(selection) {
36022         var featureListWrap = selection.append('div')
36023             .attr('class', 'feature-list-pane')
36024             .call(iD.ui.FeatureList(context));
36025
36026         selection.call(iD.ui.Notice(context));
36027
36028         var inspectorWrap = selection.append('div')
36029             .attr('class', 'inspector-hidden inspector-wrap fr');
36030
36031         sidebar.hover = function(id) {
36032             if (!current && id) {
36033                 featureListWrap.classed('inspector-hidden', true);
36034                 inspectorWrap.classed('inspector-hidden', false)
36035                     .classed('inspector-hover', true);
36036
36037                 if (inspector.entityID() !== id || inspector.state() !== 'hover') {
36038                     inspector
36039                         .state('hover')
36040                         .entityID(id);
36041
36042                     inspectorWrap.call(inspector);
36043                 }
36044             } else if (!current) {
36045                 featureListWrap.classed('inspector-hidden', false);
36046                 inspectorWrap.classed('inspector-hidden', true);
36047                 inspector.state('hide');
36048             }
36049         };
36050
36051         sidebar.hover = _.throttle(sidebar.hover, 200);
36052
36053         sidebar.select = function(id, newFeature) {
36054             if (!current && id) {
36055                 featureListWrap.classed('inspector-hidden', true);
36056                 inspectorWrap.classed('inspector-hidden', false)
36057                     .classed('inspector-hover', false);
36058
36059                 if (inspector.entityID() !== id || inspector.state() !== 'select') {
36060                     inspector
36061                         .state('select')
36062                         .entityID(id)
36063                         .newFeature(newFeature);
36064
36065                     inspectorWrap.call(inspector);
36066                 }
36067             } else if (!current) {
36068                 featureListWrap.classed('inspector-hidden', false);
36069                 inspectorWrap.classed('inspector-hidden', true);
36070                 inspector.state('hide');
36071             }
36072         };
36073
36074         sidebar.show = function(component) {
36075             featureListWrap.classed('inspector-hidden', true);
36076             inspectorWrap.classed('inspector-hidden', true);
36077             if (current) current.remove();
36078             current = selection.append('div')
36079                 .attr('class', 'sidebar-component')
36080                 .call(component);
36081         };
36082
36083         sidebar.hide = function() {
36084             featureListWrap.classed('inspector-hidden', false);
36085             inspectorWrap.classed('inspector-hidden', true);
36086             if (current) current.remove();
36087             current = null;
36088         };
36089     }
36090
36091     sidebar.hover = function() {};
36092     sidebar.select = function() {};
36093     sidebar.show = function() {};
36094     sidebar.hide = function() {};
36095
36096     return sidebar;
36097 };
36098 iD.ui.SourceSwitch = function(context) {
36099     var keys;
36100
36101     function click() {
36102         d3.event.preventDefault();
36103
36104         if (context.history().hasChanges() &&
36105             !window.confirm(t('source_switch.lose_changes'))) return;
36106
36107         var live = d3.select(this)
36108             .classed('live');
36109
36110         context.connection()
36111             .switch(live ? keys[1] : keys[0]);
36112
36113         context.enter(iD.modes.Browse(context));
36114         context.flush();
36115
36116         d3.select(this)
36117             .text(live ? t('source_switch.dev') : t('source_switch.live'))
36118             .classed('live', !live);
36119     }
36120
36121     var sourceSwitch = function(selection) {
36122         selection.append('a')
36123             .attr('href', '#')
36124             .text(t('source_switch.live'))
36125             .classed('live', true)
36126             .attr('tabindex', -1)
36127             .on('click', click);
36128     };
36129
36130     sourceSwitch.keys = function(_) {
36131         if (!arguments.length) return keys;
36132         keys = _;
36133         return sourceSwitch;
36134     };
36135
36136     return sourceSwitch;
36137 };
36138 iD.ui.Spinner = function(context) {
36139     var connection = context.connection();
36140
36141     return function(selection) {
36142         var img = selection.append('img')
36143             .attr('src', context.imagePath('loader-black.gif'))
36144             .style('opacity', 0);
36145
36146         connection.on('loading.spinner', function() {
36147             img.transition()
36148                 .style('opacity', 1);
36149         });
36150
36151         connection.on('loaded.spinner', function() {
36152             img.transition()
36153                 .style('opacity', 0);
36154         });
36155     };
36156 };
36157 iD.ui.Splash = function(context) {
36158     return function(selection) {
36159         if (context.storage('sawSplash'))
36160              return;
36161
36162         context.storage('sawSplash', true);
36163
36164         var modal = iD.ui.modal(selection);
36165
36166         modal.select('.modal')
36167             .attr('class', 'modal-splash modal col6');
36168
36169         var introModal = modal.select('.content')
36170             .append('div')
36171             .attr('class', 'fillL');
36172
36173         introModal.append('div')
36174             .attr('class','modal-section cf')
36175             .append('h3').text(t('splash.welcome'));
36176
36177         introModal.append('div')
36178             .attr('class','modal-section')
36179             .append('p')
36180             .html(t('splash.text', {
36181                 version: iD.version,
36182                 website: '<a href="http://ideditor.com/">ideditor.com</a>',
36183                 github: '<a href="https://github.com/openstreetmap/iD">github.com</a>'
36184             }));
36185
36186         var buttons = introModal.append('div').attr('class', 'modal-actions cf');
36187
36188         buttons.append('button')
36189             .attr('class', 'col6 walkthrough')
36190             .text(t('splash.walkthrough'))
36191             .on('click', function() {
36192                 d3.select(document.body).call(iD.ui.intro(context));
36193                 modal.close();
36194             });
36195
36196         buttons.append('button')
36197             .attr('class', 'col6 start')
36198             .text(t('splash.start'))
36199             .on('click', modal.close);
36200
36201         modal.select('button.close').attr('class','hide');
36202
36203     };
36204 };
36205 iD.ui.Status = function(context) {
36206     var connection = context.connection(),
36207         errCount = 0;
36208
36209     return function(selection) {
36210
36211         function update() {
36212
36213             connection.status(function(err, apiStatus) {
36214
36215                 selection.html('');
36216
36217                 if (err && errCount++ < 2) return;
36218
36219                 if (err) {
36220                     selection.text(t('status.error'));
36221
36222                 } else if (apiStatus === 'readonly') {
36223                     selection.text(t('status.readonly'));
36224
36225                 } else if (apiStatus === 'offline') {
36226                     selection.text(t('status.offline'));
36227                 }
36228
36229                 selection.attr('class', 'api-status ' + (err ? 'error' : apiStatus));
36230                 if (!err) errCount = 0;
36231
36232             });
36233         }
36234
36235         connection.on('auth', function() { update(selection); });
36236         window.setInterval(update, 90000);
36237         update(selection);
36238     };
36239 };
36240 iD.ui.Success = function(context) {
36241     var dispatch = d3.dispatch('cancel'),
36242         changeset;
36243
36244     function success(selection) {
36245         var message = (changeset.comment || t('success.edited_osm')).substring(0, 130) +
36246             ' ' + context.connection().changesetURL(changeset.id);
36247
36248         var header = selection.append('div')
36249             .attr('class', 'header fillL');
36250
36251         header.append('button')
36252             .attr('class', 'fr')
36253             .on('click', function() { dispatch.cancel(); })
36254             .append('span')
36255             .attr('class', 'icon close');
36256
36257         header.append('h3')
36258             .text(t('success.just_edited'));
36259
36260         var body = selection.append('div')
36261             .attr('class', 'body save-success fillL');
36262
36263         body.append('p')
36264             .html(t('success.help_html'));
36265
36266         var changesetURL = context.connection().changesetURL(changeset.id);
36267
36268         body.append('a')
36269             .attr('class', 'button col12 osm')
36270             .attr('target', '_blank')
36271             .attr('href', changesetURL)
36272             .text(t('success.view_on_osm'));
36273
36274         var sharing = {
36275             facebook: 'https://facebook.com/sharer/sharer.php?u=' + encodeURIComponent(changesetURL),
36276             twitter: 'https://twitter.com/intent/tweet?source=webclient&text=' + encodeURIComponent(message),
36277             google: 'https://plus.google.com/share?url=' + encodeURIComponent(changesetURL)
36278         };
36279
36280         body.selectAll('.button.social')
36281             .data(d3.entries(sharing))
36282             .enter().append('a')
36283             .attr('class', function(d) { return 'button social col4 ' + d.key; })
36284             .attr('target', '_blank')
36285             .attr('href', function(d) { return d.value; })
36286             .call(bootstrap.tooltip()
36287                 .title(function(d) { return t('success.' + d.key); })
36288                 .placement('bottom'));
36289     }
36290
36291     success.changeset = function(_) {
36292         if (!arguments.length) return changeset;
36293         changeset = _;
36294         return success;
36295     };
36296
36297     return d3.rebind(success, dispatch, 'on');
36298 };
36299 iD.ui.TagReference = function(tag, context) {
36300     var tagReference = {},
36301         button,
36302         body,
36303         loaded,
36304         showing;
36305
36306     function findLocal(docs) {
36307         var locale = iD.detect().locale.toLowerCase(),
36308             localized;
36309
36310         localized = _.find(docs, function(d) {
36311             return d.lang.toLowerCase() === locale;
36312         });
36313         if (localized) return localized;
36314
36315         // try the non-regional version of a language, like
36316         // 'en' if the language is 'en-US'
36317         if (locale.indexOf('-') !== -1) {
36318             var first = locale.split('-')[0];
36319             localized = _.find(docs, function(d) {
36320                 return d.lang.toLowerCase() === first;
36321             });
36322             if (localized) return localized;
36323         }
36324
36325         // finally fall back to english
36326         return _.find(docs, function(d) {
36327             return d.lang.toLowerCase() === 'en';
36328         });
36329     }
36330
36331     function load() {
36332         button.classed('tag-reference-loading', true);
36333
36334         context.taginfo().docs(tag, function(err, docs, softfail) {
36335             if (!err && docs) {
36336                 docs = findLocal(docs);
36337             }
36338
36339             body.html('');
36340
36341             if (!docs || !docs.description) {
36342                 if (!softfail) {
36343                     body.append('p').text(t('inspector.no_documentation_key'));
36344                     show();
36345                 }
36346                 return false;
36347             }
36348
36349             if (docs.image && docs.image.thumb_url_prefix) {
36350                 body
36351                     .append('img')
36352                     .attr('class', 'wiki-image')
36353                     .attr('src', docs.image.thumb_url_prefix + '100' + docs.image.thumb_url_suffix)
36354                     .on('load', function() { show(); })
36355                     .on('error', function() { d3.select(this).remove(); show(); });
36356             } else {
36357                 show();
36358             }
36359
36360             body
36361                 .append('p')
36362                 .text(docs.description);
36363
36364             var wikiLink = body
36365                 .append('a')
36366                 .attr('target', '_blank')
36367                 .attr('href', 'http://wiki.openstreetmap.org/wiki/' + docs.title);
36368
36369             wikiLink.append('span')
36370                 .attr('class','icon icon-pre-text out-link');
36371
36372             wikiLink.append('span')
36373                 .text(t('inspector.reference'));
36374
36375             return true;
36376         });
36377     }
36378
36379     function show() {
36380         loaded = true;
36381
36382         button.classed('tag-reference-loading', false);
36383
36384         body.transition()
36385             .duration(200)
36386             .style('max-height', '200px')
36387             .style('opacity', '1');
36388
36389         showing = true;
36390     }
36391
36392     function hide(selection) {
36393         selection = selection || body.transition().duration(200);
36394
36395         selection
36396             .style('max-height', '0px')
36397             .style('opacity', '0');
36398
36399         showing = false;
36400     }
36401
36402     tagReference.button = function(selection) {
36403         button = selection.selectAll('.tag-reference-button')
36404             .data([0]);
36405
36406         var enter = button.enter().append('button')
36407             .attr('tabindex', -1)
36408             .attr('class', 'tag-reference-button');
36409
36410         enter.append('span')
36411             .attr('class', 'icon inspect');
36412
36413         button.on('click', function () {
36414             d3.event.stopPropagation();
36415             d3.event.preventDefault();
36416             if (showing) {
36417                 hide();
36418             } else if (loaded) {
36419                 show();
36420             } else {
36421                 if (context.taginfo()) {
36422                     load();
36423                 }
36424             }
36425         });
36426     };
36427
36428     tagReference.body = function(selection) {
36429         body = selection.selectAll('.tag-reference-body')
36430             .data([0]);
36431
36432         body.enter().append('div')
36433             .attr('class', 'tag-reference-body cf')
36434             .style('max-height', '0')
36435             .style('opacity', '0');
36436
36437         if (showing === false) {
36438             hide(body);
36439         }
36440     };
36441
36442     tagReference.showing = function(_) {
36443         if (!arguments.length) return showing;
36444         showing = _;
36445         return tagReference;
36446     };
36447
36448     return tagReference;
36449 };// toggles the visibility of ui elements, using a combination of the
36450 // hide class, which sets display=none, and a d3 transition for opacity.
36451 // this will cause blinking when called repeatedly, so check that the
36452 // value actually changes between calls.
36453 iD.ui.Toggle = function(show, callback) {
36454     return function(selection) {
36455         selection
36456             .style('opacity', show ? 0 : 1)
36457             .classed('hide', false)
36458             .transition()
36459             .style('opacity', show ? 1 : 0)
36460             .each('end', function() {
36461                 d3.select(this).classed('hide', !show);
36462                 if (callback) callback.apply(this);
36463             });
36464     };
36465 };
36466 iD.ui.UndoRedo = function(context) {
36467     var commands = [{
36468         id: 'undo',
36469         cmd: iD.ui.cmd('⌘Z'),
36470         action: function() { if (!saving()) context.undo(); },
36471         annotation: function() { return context.history().undoAnnotation(); }
36472     }, {
36473         id: 'redo',
36474         cmd: iD.ui.cmd('⌘⇧Z'),
36475         action: function() { if (!saving()) context.redo(); },
36476         annotation: function() { return context.history().redoAnnotation(); }
36477     }];
36478
36479     function saving() {
36480         return context.mode().id === 'save';
36481     }
36482
36483     return function(selection) {
36484         var tooltip = bootstrap.tooltip()
36485             .placement('bottom')
36486             .html(true)
36487             .title(function (d) {
36488                 return iD.ui.tooltipHtml(d.annotation() ?
36489                     t(d.id + '.tooltip', {action: d.annotation()}) :
36490                     t(d.id + '.nothing'), d.cmd);
36491             });
36492
36493         var buttons = selection.selectAll('button')
36494             .data(commands)
36495             .enter().append('button')
36496             .attr('class', 'col6 disabled')
36497             .on('click', function(d) { return d.action(); })
36498             .call(tooltip);
36499
36500         buttons.append('span')
36501             .attr('class', function(d) { return 'icon ' + d.id; });
36502
36503         var keybinding = d3.keybinding('undo')
36504             .on(commands[0].cmd, function() { d3.event.preventDefault(); commands[0].action(); })
36505             .on(commands[1].cmd, function() { d3.event.preventDefault(); commands[1].action(); });
36506
36507         d3.select(document)
36508             .call(keybinding);
36509
36510         context.history()
36511             .on('change.undo_redo', update);
36512
36513         context
36514             .on('enter.undo_redo', update);
36515
36516         function update() {
36517             buttons
36518                 .property('disabled', saving())
36519                 .classed('disabled', function(d) { return !d.annotation(); })
36520                 .each(function() {
36521                     var selection = d3.select(this);
36522                     if (selection.property('tooltipVisible')) {
36523                         selection.call(tooltip.show);
36524                     }
36525                 });
36526         }
36527     };
36528 };
36529 iD.ui.ViewOnOSM = function(context) {
36530     var id;
36531
36532     function viewOnOSM(selection) {
36533         var entity = context.entity(id);
36534
36535         selection.style('display', entity.isNew() ? 'none' : null);
36536
36537         var $link = selection.selectAll('.view-on-osm')
36538             .data([0]);
36539
36540         var $enter = $link.enter().append('a')
36541             .attr('class', 'view-on-osm')
36542             .attr('target', '_blank');
36543
36544         $enter.append('span')
36545             .attr('class', 'icon icon-pre-text out-link');
36546
36547         $enter.append('span')
36548             .text(t('inspector.view_on_osm'));
36549
36550         $link.attr('href', context.connection().entityURL(entity));
36551     }
36552
36553     viewOnOSM.entityID = function(_) {
36554         if (!arguments.length) return id;
36555         id = _;
36556         return viewOnOSM;
36557     };
36558
36559     return viewOnOSM;
36560 };
36561 iD.ui.Zoom = function(context) {
36562     var zooms = [{
36563         id: 'zoom-in',
36564         title: t('zoom.in'),
36565         action: context.zoomIn,
36566         key: '+'
36567     }, {
36568         id: 'zoom-out',
36569         title: t('zoom.out'),
36570         action: context.zoomOut,
36571         key: '-'
36572     }];
36573
36574     function zoomIn() {
36575         d3.event.preventDefault();
36576         context.zoomIn();
36577     }
36578
36579     function zoomOut() {
36580         d3.event.preventDefault();
36581         context.zoomOut();
36582     }
36583
36584     function zoomInFurther() {
36585         d3.event.preventDefault();
36586         context.zoomInFurther();
36587     }
36588
36589     function zoomOutFurther() {
36590         d3.event.preventDefault();
36591         context.zoomOutFurther();
36592     }
36593
36594
36595     return function(selection) {
36596         var button = selection.selectAll('button')
36597             .data(zooms)
36598             .enter().append('button')
36599             .attr('tabindex', -1)
36600             .attr('class', function(d) { return d.id; })
36601             .on('click.editor', function(d) { d.action(); })
36602             .call(bootstrap.tooltip()
36603                 .placement('left')
36604                 .html(true)
36605                 .title(function(d) {
36606                     return iD.ui.tooltipHtml(d.title, d.key);
36607                 }));
36608
36609         button.append('span')
36610             .attr('class', function(d) { return d.id + ' icon'; });
36611
36612         var keybinding = d3.keybinding('zoom');
36613
36614         _.each(['=','ffequals','plus','ffplus'], function(key) {
36615             keybinding.on(key, zoomIn);
36616             keybinding.on('⇧' + key, zoomIn);
36617             keybinding.on(iD.ui.cmd('⌘' + key), zoomInFurther);
36618             keybinding.on(iD.ui.cmd('⌘⇧' + key), zoomInFurther);
36619         });
36620         _.each(['-','ffminus','_','dash'], function(key) {
36621             keybinding.on(key, zoomOut);
36622             keybinding.on('⇧' + key, zoomOut);
36623             keybinding.on(iD.ui.cmd('⌘' + key), zoomOutFurther);
36624             keybinding.on(iD.ui.cmd('⌘⇧' + key), zoomOutFurther);
36625         });
36626
36627         d3.select(document)
36628             .call(keybinding);
36629     };
36630 };
36631 iD.ui.preset.access = function(field) {
36632     var event = d3.dispatch('change'),
36633         items;
36634
36635     function access(selection) {
36636         var wrap = selection.selectAll('.preset-input-wrap')
36637             .data([0]);
36638
36639         wrap.enter().append('div')
36640             .attr('class', 'cf preset-input-wrap')
36641             .append('ul');
36642
36643         items = wrap.select('ul').selectAll('li')
36644             .data(field.keys);
36645
36646         // Enter
36647
36648         var enter = items.enter().append('li')
36649             .attr('class', function(d) { return 'cf preset-access-' + d; });
36650
36651         enter.append('span')
36652             .attr('class', 'col6 label preset-label-access')
36653             .attr('for', function(d) { return 'preset-input-access-' + d; })
36654             .text(function(d) { return field.t('types.' + d); });
36655
36656         enter.append('div')
36657             .attr('class', 'col6 preset-input-access-wrap')
36658             .append('input')
36659             .attr('type', 'text')
36660             .attr('class', 'preset-input-access')
36661             .attr('id', function(d) { return 'preset-input-access-' + d; })
36662             .each(function(d) {
36663                 d3.select(this)
36664                     .call(d3.combobox()
36665                         .data(access.options(d)));
36666             });
36667
36668         // Update
36669
36670         wrap.selectAll('.preset-input-access')
36671             .on('change', change)
36672             .on('blur', change);
36673     }
36674
36675     function change(d) {
36676         var tag = {};
36677         tag[d] = d3.select(this).value() || undefined;
36678         event.change(tag);
36679     }
36680
36681     access.options = function(type) {
36682         var options = ['no', 'permissive', 'private', 'destination'];
36683
36684         if (type !== 'access') {
36685             options.unshift('yes');
36686             options.push('designated');
36687
36688             if (type === 'bicycle') {
36689                 options.push('dismount');
36690             }
36691         }
36692
36693         return options.map(function(option) {
36694             return {
36695                 title: field.t('options.' + option + '.description'),
36696                 value: option
36697             };
36698         });
36699     };
36700
36701     var placeholders = {
36702         footway: {
36703             foot: 'designated',
36704             motor_vehicle: 'no'
36705         },
36706         steps: {
36707             foot: 'yes',
36708             motor_vehicle: 'no',
36709             bicycle: 'no',
36710             horse: 'no'
36711         },
36712         pedestrian: {
36713             foot: 'yes',
36714             motor_vehicle: 'no'
36715         },
36716         cycleway: {
36717             motor_vehicle: 'no',
36718             bicycle: 'designated'
36719         },
36720         bridleway: {
36721             motor_vehicle: 'no',
36722             horse: 'designated'
36723         },
36724         path: {
36725             foot: 'yes',
36726             motor_vehicle: 'no',
36727             bicycle: 'yes',
36728             horse: 'yes'
36729         },
36730         motorway: {
36731             foot: 'no',
36732             motor_vehicle: 'yes',
36733             bicycle: 'no',
36734             horse: 'no'
36735         },
36736         trunk: {
36737             motor_vehicle: 'yes'
36738         },
36739         primary: {
36740             foot: 'yes',
36741             motor_vehicle: 'yes',
36742             bicycle: 'yes',
36743             horse: 'yes'
36744         },
36745         secondary: {
36746             foot: 'yes',
36747             motor_vehicle: 'yes',
36748             bicycle: 'yes',
36749             horse: 'yes'
36750         },
36751         tertiary: {
36752             foot: 'yes',
36753             motor_vehicle: 'yes',
36754             bicycle: 'yes',
36755             horse: 'yes'
36756         },
36757         residential: {
36758             foot: 'yes',
36759             motor_vehicle: 'yes',
36760             bicycle: 'yes',
36761             horse: 'yes'
36762         },
36763         unclassified: {
36764             foot: 'yes',
36765             motor_vehicle: 'yes',
36766             bicycle: 'yes',
36767             horse: 'yes'
36768         },
36769         service: {
36770             foot: 'yes',
36771             motor_vehicle: 'yes',
36772             bicycle: 'yes',
36773             horse: 'yes'
36774         },
36775         motorway_link: {
36776             foot: 'no',
36777             motor_vehicle: 'yes',
36778             bicycle: 'no',
36779             horse: 'no'
36780         },
36781         trunk_link: {
36782             motor_vehicle: 'yes'
36783         },
36784         primary_link: {
36785             foot: 'yes',
36786             motor_vehicle: 'yes',
36787             bicycle: 'yes',
36788             horse: 'yes'
36789         },
36790         secondary_link: {
36791             foot: 'yes',
36792             motor_vehicle: 'yes',
36793             bicycle: 'yes',
36794             horse: 'yes'
36795         },
36796         tertiary_link: {
36797             foot: 'yes',
36798             motor_vehicle: 'yes',
36799             bicycle: 'yes',
36800             horse: 'yes'
36801         }
36802     };
36803
36804     access.tags = function(tags) {
36805         items.selectAll('.preset-input-access')
36806             .value(function(d) { return tags[d] || ''; })
36807             .attr('placeholder', function() {
36808                 return tags.access ? tags.access : field.placeholder();
36809             });
36810
36811         // items.selectAll('#preset-input-access-access')
36812         //     .attr('placeholder', 'yes');
36813
36814         _.forEach(placeholders[tags.highway], function(v, k) {
36815             items.selectAll('#preset-input-access-' + k)
36816                 .attr('placeholder', function() { return (tags.access || v); });
36817         });
36818     };
36819
36820     access.focus = function() {
36821         items.selectAll('.preset-input-access')
36822             .node().focus();
36823     };
36824
36825     return d3.rebind(access, event, 'on');
36826 };
36827 iD.ui.preset.address = function(field, context) {
36828     var event = d3.dispatch('init', 'change'),
36829         wrap,
36830         entity,
36831         isInitialized;
36832
36833     var widths = {
36834         housenumber: 1/3,
36835         street: 2/3,
36836         city: 2/3,
36837         state: 1/4,
36838         postcode: 1/3
36839     };
36840
36841     function getStreets() {
36842         var extent = entity.extent(context.graph()),
36843             l = extent.center(),
36844             box = iD.geo.Extent(l).padByMeters(200);
36845
36846         return context.intersects(box)
36847             .filter(isAddressable)
36848             .map(function(d) {
36849                 var loc = context.projection([
36850                     (extent[0][0] + extent[1][0]) / 2,
36851                     (extent[0][1] + extent[1][1]) / 2]),
36852                     choice = iD.geo.chooseEdge(context.childNodes(d), loc, context.projection);
36853                 return {
36854                     title: d.tags.name,
36855                     value: d.tags.name,
36856                     dist: choice.distance
36857                 };
36858             }).sort(function(a, b) {
36859                 return a.dist - b.dist;
36860             });
36861
36862         function isAddressable(d) {
36863             return d.tags.highway && d.tags.name && d.type === 'way';
36864         }
36865     }
36866
36867     function getCities() {
36868         var extent = entity.extent(context.graph()),
36869             l = extent.center(),
36870             box = iD.geo.Extent(l).padByMeters(200);
36871
36872         return context.intersects(box)
36873             .filter(isAddressable)
36874             .map(function(d) {
36875                 return {
36876                     title: d.tags['addr:city'] || d.tags.name,
36877                     value: d.tags['addr:city'] || d.tags.name,
36878                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
36879                 };
36880             }).sort(function(a, b) {
36881                 return a.dist - b.dist;
36882             });
36883
36884         function isAddressable(d) {
36885             if (d.tags.name &&
36886                 (d.tags.admin_level === '8' || d.tags.border_type === 'city'))
36887                 return true;
36888
36889             if (d.tags.place && d.tags.name && (
36890                     d.tags.place === 'city' ||
36891                     d.tags.place === 'town' ||
36892                     d.tags.place === 'village'))
36893                 return true;
36894
36895             if (d.tags['addr:city']) return true;
36896
36897             return false;
36898         }
36899     }
36900
36901     function getPostCodes() {
36902         var extent = entity.extent(context.graph()),
36903             l = extent.center(),
36904             box = iD.geo.Extent(l).padByMeters(200);
36905
36906         return context.intersects(box)
36907             .filter(isAddressable)
36908             .map(function(d) {
36909                 return {
36910                     title: d.tags['addr:postcode'],
36911                     value: d.tags['addr:postcode'],
36912                     dist: iD.geo.sphericalDistance(d.extent(context.graph()).center(), l)
36913                 };
36914             }).sort(function(a, b) {
36915                 return a.dist - b.dist;
36916             });
36917
36918         function isAddressable(d) {
36919             return d.tags['addr:postcode'];
36920         }
36921     }
36922
36923     function address(selection) {
36924         isInitialized = false;
36925         
36926         selection.selectAll('.preset-input-wrap')
36927             .remove();
36928
36929         var center = entity.extent(context.graph()).center(),
36930             addressFormat;
36931
36932         // Enter
36933
36934         wrap = selection.append('div')
36935             .attr('class', 'preset-input-wrap');
36936
36937         iD.countryCode().search(center, function (err, countryCode) {
36938             addressFormat = _.find(iD.data.addressFormats, function (a) {
36939                 return a && a.countryCodes && _.contains(a.countryCodes, countryCode);
36940             }) || _.first(iD.data.addressFormats);
36941
36942             function row(r) {
36943                 // Normalize widths.
36944                 var total = _.reduce(r, function(sum, field) {
36945                     return sum + (widths[field] || 0.5);
36946                 }, 0);
36947
36948                 return r.map(function (field) {
36949                     return {
36950                         id: field,
36951                         width: (widths[field] || 0.5) / total
36952                     };
36953                 });
36954             }
36955
36956             wrap.selectAll('div')
36957                 .data(addressFormat.format)
36958                 .enter()
36959                 .append('div')
36960                 .attr('class', 'addr-row')
36961                 .selectAll('input')
36962                 .data(row)
36963                 .enter()
36964                 .append('input')
36965                 .property('type', 'text')
36966                 .attr('placeholder', function (d) { return field.t('placeholders.' + d.id); })
36967                 .attr('class', function (d) { return 'addr-' + d.id; })
36968                 .style('width', function (d) { return d.width * 100 + '%'; });
36969
36970             // Update
36971
36972             wrap.selectAll('.addr-street')
36973                 .call(d3.combobox()
36974                     .fetcher(function(value, callback) {
36975                         callback(getStreets());
36976                     }));
36977
36978             wrap.selectAll('.addr-city')
36979                 .call(d3.combobox()
36980                     .fetcher(function(value, callback) {
36981                         callback(getCities());
36982                     }));
36983
36984             wrap.selectAll('.addr-postcode')
36985                 .call(d3.combobox()
36986                     .fetcher(function(value, callback) {
36987                         callback(getPostCodes());
36988                     }));
36989
36990             wrap.selectAll('input')
36991                 .on('blur', change)
36992                 .on('change', change);
36993
36994             event.init();
36995             isInitialized = true;
36996         });
36997     }
36998
36999     function change() {
37000         var tags = {};
37001
37002         wrap.selectAll('input')
37003             .each(function (field) {
37004                 tags['addr:' + field.id] = this.value || undefined;
37005             });
37006
37007         event.change(tags);
37008     }
37009
37010     function updateTags(tags) {
37011         wrap.selectAll('input')
37012             .value(function (field) {
37013                 return tags['addr:' + field.id] || '';
37014             });
37015     }
37016
37017     address.entity = function(_) {
37018         if (!arguments.length) return entity;
37019         entity = _;
37020         return address;
37021     };
37022
37023     address.tags = function(tags) {
37024         if (isInitialized) {
37025             updateTags(tags);
37026         } else {
37027             event.on('init', function () {
37028                 updateTags(tags);
37029             });
37030         }
37031     };
37032
37033     address.focus = function() {
37034         var node = wrap.selectAll('input').node();
37035         if (node) node.focus();
37036     };
37037
37038     return d3.rebind(address, event, 'on');
37039 };
37040 iD.ui.preset.check =
37041 iD.ui.preset.defaultcheck = function(field) {
37042     var event = d3.dispatch('change'),
37043         options = field.strings && field.strings.options,
37044         values = [],
37045         texts = [],
37046         entity, value, box, text, label;
37047
37048     if (options) {
37049         for (var k in options) {
37050             values.push(k === 'undefined' ? undefined : k);
37051             texts.push(field.t('options.' + k, { 'default': options[k] }));
37052         }
37053     } else {
37054         values = [undefined, 'yes'];
37055         texts = [t('inspector.unknown'), t('inspector.check.yes')];
37056         if (field.type === 'check') {
37057             values.push('no');
37058             texts.push(t('inspector.check.no'));
37059         }
37060     }
37061
37062     var check = function(selection) {
37063         // hack: pretend oneway field is a oneway_yes field
37064         // where implied oneway tag exists (e.g. `junction=roundabout`) #2220, #1841
37065         if (field.id === 'oneway') {
37066             for (var key in entity.tags) {
37067                 if (key in iD.oneWayTags && (entity.tags[key] in iD.oneWayTags[key])) {
37068                     texts[0] = t('presets.fields.oneway_yes.options.undefined');
37069                     break;
37070                 }
37071             }
37072         }
37073
37074         selection.classed('checkselect', 'true');
37075
37076         label = selection.selectAll('.preset-input-wrap')
37077             .data([0]);
37078
37079         var enter = label.enter().append('label')
37080             .attr('class', 'preset-input-wrap');
37081
37082         enter.append('input')
37083             .property('indeterminate', field.type === 'check')
37084             .attr('type', 'checkbox')
37085             .attr('id', 'preset-input-' + field.id);
37086
37087         enter.append('span')
37088             .text(texts[0])
37089             .attr('class', 'value');
37090
37091         box = label.select('input')
37092             .on('click', function() {
37093                 var t = {};
37094                 t[field.key] = values[(values.indexOf(value) + 1) % values.length];
37095                 event.change(t);
37096                 d3.event.stopPropagation();
37097             });
37098
37099         text = label.select('span.value');
37100     };
37101
37102     check.entity = function(_) {
37103         if (!arguments.length) return entity;
37104         entity = _;
37105         return check;
37106     };
37107
37108     check.tags = function(tags) {
37109         value = tags[field.key];
37110         box.property('indeterminate', field.type === 'check' && !value);
37111         box.property('checked', value === 'yes');
37112         text.text(texts[values.indexOf(value)]);
37113         label.classed('set', !!value);
37114     };
37115
37116     check.focus = function() {
37117         box.node().focus();
37118     };
37119
37120     return d3.rebind(check, event, 'on');
37121 };
37122 iD.ui.preset.combo =
37123 iD.ui.preset.typeCombo = function(field, context) {
37124     var event = d3.dispatch('change'),
37125         optstrings = field.strings && field.strings.options,
37126         optarray = field.options,
37127         strings = {},
37128         input;
37129
37130     function combo(selection) {
37131         var combobox = d3.combobox();
37132
37133         input = selection.selectAll('input')
37134             .data([0]);
37135
37136         var enter = input.enter()
37137             .append('input')
37138             .attr('type', 'text')
37139             .attr('id', 'preset-input-' + field.id);
37140
37141         if (optstrings) { enter.attr('readonly', 'readonly'); }
37142
37143         input
37144             .call(combobox)
37145             .on('change', change)
37146             .on('blur', change)
37147             .each(function() {
37148                 if (optstrings) {
37149                     _.each(optstrings, function(v, k) {
37150                         strings[k] = field.t('options.' + k, { 'default': v });
37151                     });
37152                     stringsLoaded();
37153                 } else if (optarray) {
37154                     _.each(optarray, function(k) {
37155                         strings[k] = k.replace(/_+/g, ' ');
37156                     });
37157                     stringsLoaded();
37158                 } else if (context.taginfo()) {
37159                     context.taginfo().values({key: field.key}, function(err, data) {
37160                         if (!err) {
37161                             _.each(_.pluck(data, 'value'), function(k) {
37162                                 strings[k] = k.replace(/_+/g, ' ');
37163                             });
37164                             stringsLoaded();
37165                         }
37166                     });
37167                 }
37168             });
37169
37170         function stringsLoaded() {
37171             var keys = _.keys(strings),
37172                 strs = [],
37173                 placeholders;
37174
37175             combobox.data(keys.map(function(k) {
37176                 var s = strings[k],
37177                     o = {};
37178                 o.title = o.value = s;
37179                 if (s.length < 20) { strs.push(s); }
37180                 return o;
37181             }));
37182
37183             placeholders = strs.length > 1 ? strs : keys;
37184             input.attr('placeholder', field.placeholder() ||
37185                 (placeholders.slice(0, 3).join(', ') + '...'));
37186         }
37187     }
37188
37189     function change() {
37190         var optstring = _.find(_.keys(strings), function(k) { return strings[k] === input.value(); }),
37191             value = optstring || (input.value()
37192                 .split(';')
37193                 .map(function(s) { return s.trim(); })
37194                 .join(';')
37195                 .replace(/\s+/g, '_'));
37196
37197         if (field.type === 'typeCombo' && !value) value = 'yes';
37198
37199         var t = {};
37200         t[field.key] = value || undefined;
37201         event.change(t);
37202     }
37203
37204     combo.tags = function(tags) {
37205         var key = tags[field.key],
37206             value = strings[key] || key || '';
37207         if (field.type === 'typeCombo' && value.toLowerCase() === 'yes') value = '';
37208         input.value(value);
37209     };
37210
37211     combo.focus = function() {
37212         input.node().focus();
37213     };
37214
37215     return d3.rebind(combo, event, 'on');
37216 };
37217 iD.ui.preset.cycleway = function(field) {
37218     var event = d3.dispatch('change'),
37219         items;
37220
37221     function cycleway(selection) {
37222         var wrap = selection.selectAll('.preset-input-wrap')
37223             .data([0]);
37224
37225         wrap.enter().append('div')
37226             .attr('class', 'cf preset-input-wrap')
37227             .append('ul');
37228
37229         items = wrap.select('ul').selectAll('li')
37230             .data(field.keys);
37231
37232         // Enter
37233
37234         var enter = items.enter().append('li')
37235             .attr('class', function(d) { return 'cf preset-cycleway-' + d; });
37236
37237         enter.append('span')
37238             .attr('class', 'col6 label preset-label-cycleway')
37239             .attr('for', function(d) { return 'preset-input-cycleway-' + d; })
37240             .text(function(d) { return field.t('types.' + d); });
37241
37242         enter.append('div')
37243             .attr('class', 'col6 preset-input-cycleway-wrap')
37244             .append('input')
37245             .attr('type', 'text')
37246             .attr('class', 'preset-input-cycleway')
37247             .attr('id', function(d) { return 'preset-input-cycleway-' + d; })
37248             .each(function(d) {
37249                 d3.select(this)
37250                     .call(d3.combobox()
37251                         .data(cycleway.options(d)));
37252             });
37253
37254         // Update
37255
37256         wrap.selectAll('.preset-input-cycleway')
37257             .on('change', change)
37258             .on('blur', change);
37259     }
37260
37261     function change() {
37262         var inputs = d3.selectAll('.preset-input-cycleway')[0],
37263             left = d3.select(inputs[0]).value(),
37264             right = d3.select(inputs[1]).value(),
37265             tag = {};
37266         if (left === 'none' || left === '') { left = undefined; }
37267         if (right === 'none' || right === '') { right = undefined; }
37268
37269         // Always set both left and right as changing one can affect the other
37270         tag = {
37271             cycleway: undefined,
37272             'cycleway:left': left,
37273             'cycleway:right': right
37274         };
37275
37276         // If the left and right tags match, use the cycleway tag to tag both
37277         // sides the same way
37278         if (left === right) {
37279             tag = {
37280                 cycleway: left,
37281                 'cycleway:left': undefined,
37282                 'cycleway:right': undefined
37283             };
37284         }
37285
37286         event.change(tag);
37287     }
37288
37289     cycleway.options = function() {
37290         return d3.keys(field.strings.options).map(function(option) {
37291             return {
37292                 title: field.t('options.' + option + '.description'),
37293                 value: option
37294             };
37295         });
37296     };
37297
37298     cycleway.tags = function(tags) {
37299         items.selectAll('.preset-input-cycleway')
37300             .value(function(d) {
37301                 // If cycleway is set, always return that
37302                 if (tags.cycleway) {
37303                     return tags.cycleway;
37304                 }
37305                 return tags[d] || '';
37306             })
37307             .attr('placeholder', field.placeholder());
37308     };
37309
37310     cycleway.focus = function() {
37311         items.selectAll('.preset-input-cycleway')
37312             .node().focus();
37313     };
37314
37315     return d3.rebind(cycleway, event, 'on');
37316 };
37317 iD.ui.preset.text =
37318 iD.ui.preset.number =
37319 iD.ui.preset.tel =
37320 iD.ui.preset.email =
37321 iD.ui.preset.url = function(field) {
37322
37323     var event = d3.dispatch('change'),
37324         input;
37325
37326     function i(selection) {
37327         input = selection.selectAll('input')
37328             .data([0]);
37329
37330         input.enter().append('input')
37331             .attr('type', field.type)
37332             .attr('id', 'preset-input-' + field.id)
37333             .attr('placeholder', field.placeholder() || t('inspector.unknown'));
37334
37335         input
37336             .on('blur', change)
37337             .on('change', change);
37338
37339         if (field.type === 'number') {
37340             input.attr('type', 'text');
37341
37342             var spinControl = selection.selectAll('.spin-control')
37343                 .data([0]);
37344
37345             var enter = spinControl.enter().append('div')
37346                 .attr('class', 'spin-control');
37347
37348             enter.append('button')
37349                 .datum(1)
37350                 .attr('class', 'increment');
37351
37352             enter.append('button')
37353                 .datum(-1)
37354                 .attr('class', 'decrement');
37355
37356             spinControl.selectAll('button')
37357                 .on('click', function(d) {
37358                     d3.event.preventDefault();
37359                     var num = parseInt(input.node().value || 0, 10);
37360                     if (!isNaN(num)) input.node().value = num + d;
37361                     change();
37362                 });
37363         }
37364     }
37365
37366     function change() {
37367         var t = {};
37368         t[field.key] = input.value() || undefined;
37369         event.change(t);
37370     }
37371
37372     i.tags = function(tags) {
37373         input.value(tags[field.key] || '');
37374     };
37375
37376     i.focus = function() {
37377         input.node().focus();
37378     };
37379
37380     return d3.rebind(i, event, 'on');
37381 };
37382 iD.ui.preset.localized = function(field, context) {
37383
37384     var event = d3.dispatch('change'),
37385         wikipedia = iD.wikipedia(),
37386         input, localizedInputs, wikiTitles,
37387         entity;
37388
37389     function i(selection) {
37390         input = selection.selectAll('.localized-main')
37391             .data([0]);
37392
37393         input.enter().append('input')
37394             .attr('type', 'text')
37395             .attr('id', 'preset-input-' + field.id)
37396             .attr('class', 'localized-main')
37397             .attr('placeholder', field.placeholder());
37398
37399         if (field.id === 'name') {
37400             var preset = context.presets().match(entity, context.graph());
37401             input.call(d3.combobox().fetcher(
37402                 iD.util.SuggestNames(preset, iD.data.suggestions)
37403             ));
37404         }
37405
37406         input
37407             .on('blur', change)
37408             .on('change', change);
37409
37410         var translateButton = selection.selectAll('.localized-add')
37411             .data([0]);
37412
37413         translateButton.enter().append('button')
37414             .attr('class', 'button-input-action localized-add minor')
37415             .call(bootstrap.tooltip()
37416                 .title(t('translate.translate'))
37417                 .placement('left'))
37418             .append('span')
37419             .attr('class', 'icon plus');
37420
37421         translateButton
37422             .on('click', addBlank);
37423
37424         localizedInputs = selection.selectAll('.localized-wrap')
37425             .data([0]);
37426
37427         localizedInputs.enter().append('div')
37428             .attr('class', 'localized-wrap');
37429     }
37430
37431     function addBlank() {
37432         d3.event.preventDefault();
37433         var data = localizedInputs.selectAll('div.entry').data();
37434         data.push({ lang: '', value: '' });
37435         localizedInputs.call(render, data);
37436     }
37437
37438     function change() {
37439         var t = {};
37440         t[field.key] = d3.select(this).value() || undefined;
37441         event.change(t);
37442     }
37443
37444     function key(lang) { return field.key + ':' + lang; }
37445
37446     function changeLang(d) {
37447         var lang = d3.select(this).value(),
37448             t = {},
37449             language = _.find(iD.data.wikipedia, function(d) {
37450                 return d[0].toLowerCase() === lang.toLowerCase() ||
37451                     d[1].toLowerCase() === lang.toLowerCase();
37452             });
37453
37454         if (language) lang = language[2];
37455
37456         if (d.lang && d.lang !== lang) {
37457             t[key(d.lang)] = undefined;
37458         }
37459
37460         var value = d3.select(this.parentNode)
37461             .selectAll('.localized-value')
37462             .value();
37463
37464         if (lang && value) {
37465             t[key(lang)] = value;
37466         } else if (lang && wikiTitles && wikiTitles[d.lang]) {
37467             t[key(lang)] = wikiTitles[d.lang];
37468         }
37469
37470         d.lang = lang;
37471         event.change(t);
37472     }
37473
37474     function changeValue(d) {
37475         if (!d.lang) return;
37476         var t = {};
37477         t[key(d.lang)] = d3.select(this).value() || undefined;
37478         event.change(t);
37479     }
37480
37481     function fetcher(value, cb) {
37482         var v = value.toLowerCase();
37483
37484         cb(iD.data.wikipedia.filter(function(d) {
37485             return d[0].toLowerCase().indexOf(v) >= 0 ||
37486             d[1].toLowerCase().indexOf(v) >= 0 ||
37487             d[2].toLowerCase().indexOf(v) >= 0;
37488         }).map(function(d) {
37489             return { value: d[1] };
37490         }));
37491     }
37492
37493     function render(selection, data) {
37494         var wraps = selection.selectAll('div.entry').
37495             data(data, function(d) { return d.lang; });
37496
37497         var innerWrap = wraps.enter()
37498             .insert('div', ':first-child');
37499
37500         innerWrap.attr('class', 'entry')
37501             .each(function() {
37502                 var wrap = d3.select(this);
37503                 var langcombo = d3.combobox().fetcher(fetcher);
37504
37505                 var label = wrap.append('label')
37506                     .attr('class','form-label')
37507                     .text(t('translate.localized_translation_label'))
37508                     .attr('for','localized-lang');
37509
37510                 label.append('button')
37511                     .attr('class', 'minor remove')
37512                     .on('click', function(d){
37513                         d3.event.preventDefault();
37514                         var t = {};
37515                         t[key(d.lang)] = undefined;
37516                         event.change(t);
37517                         d3.select(this.parentNode.parentNode)
37518                             .style('top','0')
37519                             .style('max-height','240px')
37520                             .transition()
37521                             .style('opacity', '0')
37522                             .style('max-height','0px')
37523                             .remove();
37524                     })
37525                     .append('span').attr('class', 'icon delete');
37526
37527                 wrap.append('input')
37528                     .attr('class', 'localized-lang')
37529                     .attr('type', 'text')
37530                     .attr('placeholder',t('translate.localized_translation_language'))
37531                     .on('blur', changeLang)
37532                     .on('change', changeLang)
37533                     .call(langcombo);
37534
37535                 wrap.append('input')
37536                     .on('blur', changeValue)
37537                     .on('change', changeValue)
37538                     .attr('type', 'text')
37539                     .attr('placeholder', t('translate.localized_translation_name'))
37540                     .attr('class', 'localized-value');
37541             });
37542
37543         innerWrap
37544             .style('margin-top', '0px')
37545             .style('max-height', '0px')
37546             .style('opacity', '0')
37547             .transition()
37548             .duration(200)
37549             .style('margin-top', '10px')
37550             .style('max-height', '240px')
37551             .style('opacity', '1')
37552             .each('end', function() {
37553                 d3.select(this)
37554                     .style('max-height', '')
37555                     .style('overflow', 'visible');
37556             });
37557
37558         wraps.exit()
37559             .transition()
37560             .duration(200)
37561             .style('max-height','0px')
37562             .style('opacity', '0')
37563             .style('top','-10px')
37564             .remove();
37565
37566         var entry = selection.selectAll('.entry');
37567
37568         entry.select('.localized-lang')
37569             .value(function(d) {
37570                 var lang = _.find(iD.data.wikipedia, function(lang) { return lang[2] === d.lang; });
37571                 return lang ? lang[1] : d.lang;
37572             });
37573
37574         entry.select('.localized-value')
37575             .value(function(d) { return d.value; });
37576     }
37577
37578     i.tags = function(tags) {
37579
37580         // Fetch translations from wikipedia
37581         if (tags.wikipedia && !wikiTitles) {
37582             wikiTitles = {};
37583             var wm = tags.wikipedia.match(/([^:]+):(.+)/);
37584             if (wm && wm[0] && wm[1]) {
37585                 wikipedia.translations(wm[1], wm[2], function(d) {
37586                     wikiTitles = d;
37587                 });
37588             }
37589         }
37590
37591         input.value(tags[field.key] || '');
37592
37593         var postfixed = [];
37594         for (var i in tags) {
37595             var m = i.match(new RegExp(field.key + ':([a-zA-Z_-]+)$'));
37596             if (m && m[1]) {
37597                 postfixed.push({ lang: m[1], value: tags[i]});
37598             }
37599         }
37600
37601         localizedInputs.call(render, postfixed.reverse());
37602     };
37603
37604     i.focus = function() {
37605         input.node().focus();
37606     };
37607
37608     i.entity = function(_) {
37609         entity = _;
37610     };
37611
37612     return d3.rebind(i, event, 'on');
37613 };
37614 iD.ui.preset.maxspeed = function(field, context) {
37615
37616     var event = d3.dispatch('change'),
37617         entity,
37618         imperial,
37619         unitInput,
37620         combobox,
37621         input;
37622
37623     var metricValues = [20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120],
37624         imperialValues = [20, 25, 30, 35, 40, 45, 50, 55, 65, 70];
37625
37626     function maxspeed(selection) {
37627         combobox = d3.combobox();
37628         var unitCombobox = d3.combobox().data(['km/h', 'mph'].map(comboValues));
37629
37630         input = selection.selectAll('#preset-input-' + field.id)
37631             .data([0]);
37632
37633         input.enter().append('input')
37634             .attr('type', 'text')
37635             .attr('id', 'preset-input-' + field.id)
37636             .attr('placeholder', field.placeholder());
37637
37638         input
37639             .call(combobox)
37640             .on('change', change)
37641             .on('blur', change);
37642
37643         var childNodes = context.graph().childNodes(context.entity(entity.id)),
37644             loc = childNodes[~~(childNodes.length/2)].loc;
37645
37646         imperial = _.any(iD.data.imperial.features, function(f) {
37647             return _.any(f.geometry.coordinates, function(d) {
37648                 return iD.geo.pointInPolygon(loc, d[0]);
37649             });
37650         });
37651
37652         unitInput = selection.selectAll('input.maxspeed-unit')
37653             .data([0]);
37654
37655         unitInput.enter().append('input')
37656             .attr('type', 'text')
37657             .attr('class', 'maxspeed-unit');
37658
37659         unitInput
37660             .on('blur', changeUnits)
37661             .on('change', changeUnits)
37662             .call(unitCombobox);
37663
37664         function changeUnits() {
37665             imperial = unitInput.value() === 'mph';
37666             unitInput.value(imperial ? 'mph' : 'km/h');
37667             setSuggestions();
37668             change();
37669         }
37670
37671     }
37672
37673     function setSuggestions() {
37674         combobox.data((imperial ? imperialValues : metricValues).map(comboValues));
37675         unitInput.value(imperial ? 'mph' : 'km/h');
37676     }
37677
37678     function comboValues(d) {
37679         return {
37680             value: d.toString(),
37681             title: d.toString()
37682         };
37683     }
37684
37685     function change() {
37686         var tag = {},
37687             value = input.value();
37688
37689         if (!value) {
37690             tag[field.key] = undefined;
37691         } else if (isNaN(value) || !imperial) {
37692             tag[field.key] = value;
37693         } else {
37694             tag[field.key] = value + ' mph';
37695         }
37696
37697         event.change(tag);
37698     }
37699
37700     maxspeed.tags = function(tags) {
37701         var value = tags[field.key];
37702
37703         if (value && value.indexOf('mph') >= 0) {
37704             value = parseInt(value, 10);
37705             imperial = true;
37706         } else if (value) {
37707             imperial = false;
37708         }
37709
37710         setSuggestions();
37711
37712         input.value(value || '');
37713     };
37714
37715     maxspeed.focus = function() {
37716         input.node().focus();
37717     };
37718
37719     maxspeed.entity = function(_) {
37720         entity = _;
37721     };
37722
37723     return d3.rebind(maxspeed, event, 'on');
37724 };
37725 iD.ui.preset.radio = function(field) {
37726
37727     var event = d3.dispatch('change'),
37728         labels, radios, placeholder;
37729
37730     function radio(selection) {
37731         selection.classed('preset-radio', true);
37732
37733         var wrap = selection.selectAll('.preset-input-wrap')
37734             .data([0]);
37735
37736         var buttonWrap = wrap.enter().append('div')
37737             .attr('class', 'preset-input-wrap toggle-list');
37738
37739         buttonWrap.append('span')
37740             .attr('class', 'placeholder');
37741
37742         placeholder = selection.selectAll('.placeholder');
37743
37744         labels = wrap.selectAll('label')
37745             .data(field.options || field.keys);
37746
37747         var enter = labels.enter().append('label');
37748
37749         enter.append('input')
37750             .attr('type', 'radio')
37751             .attr('name', field.id)
37752             .attr('value', function(d) { return field.t('options.' + d, { 'default': d }); })
37753             .attr('checked', false);
37754
37755         enter.append('span')
37756             .text(function(d) { return field.t('options.' + d, { 'default': d }); });
37757
37758         radios = labels.selectAll('input')
37759             .on('change', change);
37760     }
37761
37762     function change() {
37763         var t = {};
37764         if (field.key) t[field.key] = undefined;
37765         radios.each(function(d) {
37766             var active = d3.select(this).property('checked');
37767             if (field.key) {
37768                 if (active) t[field.key] = d;
37769             } else {
37770                 t[d] = active ? 'yes' : undefined;
37771             }
37772         });
37773         event.change(t);
37774     }
37775
37776     radio.tags = function(tags) {
37777         function checked(d) {
37778             if (field.key) {
37779                 return tags[field.key] === d;
37780             } else {
37781                 return !!(tags[d] && tags[d] !== 'no');
37782             }
37783         }
37784
37785         labels.classed('active', checked);
37786         radios.property('checked', checked);
37787         var selection = radios.filter(function() { return this.checked; });
37788         if (selection.empty()) {
37789             placeholder.text(t('inspector.none'));
37790         } else {
37791             placeholder.text(selection.attr('value'));
37792         }
37793     };
37794
37795     radio.focus = function() {
37796         radios.node().focus();
37797     };
37798
37799     return d3.rebind(radio, event, 'on');
37800 };
37801 iD.ui.preset.restrictions = function(field, context) {
37802     var event = d3.dispatch('change'),
37803         vertexID,
37804         fromNodeID;
37805
37806     function restrictions(selection) {
37807         var wrap = selection.selectAll('.preset-input-wrap')
37808             .data([0]);
37809
37810         var enter = wrap.enter().append('div')
37811             .attr('class', 'preset-input-wrap');
37812
37813         enter.append('div')
37814             .attr('class', 'restriction-help');
37815
37816         enter.append('svg')
37817             .call(iD.svg.Surface(context))
37818             .call(iD.behavior.Hover(context));
37819
37820         var intersection = iD.geo.Intersection(context.graph(), vertexID),
37821             graph = intersection.graph,
37822             vertex = graph.entity(vertexID),
37823             surface = wrap.selectAll('svg'),
37824             filter = function () { return true; },
37825             extent = iD.geo.Extent(),
37826             projection = iD.geo.RawMercator(),
37827             lines = iD.svg.Lines(projection, context),
37828             vertices = iD.svg.Vertices(projection, context),
37829             turns = iD.svg.Turns(projection, context);
37830
37831         var d = wrap.dimensions(),
37832             c = [d[0] / 2, d[1] / 2],
37833             z = 21;
37834
37835         projection
37836             .scale(256 * Math.pow(2, z) / (2 * Math.PI));
37837
37838         var s = projection(vertex.loc);
37839
37840         projection
37841             .translate([c[0] - s[0], c[1] - s[1]])
37842             .clipExtent([[0, 0], d]);
37843
37844         surface
37845             .call(vertices, graph, [vertex], filter, extent, z)
37846             .call(lines, graph, intersection.highways, filter)
37847             .call(turns, graph, intersection.turns(fromNodeID));
37848
37849         surface
37850             .on('click.restrictions', click)
37851             .on('mouseover.restrictions', mouseover)
37852             .on('mouseout.restrictions', mouseout);
37853
37854         surface
37855             .selectAll('.selected')
37856             .classed('selected', false);
37857
37858         if (fromNodeID) {
37859             surface
37860                 .selectAll('.' + _.find(intersection.highways, function(way) { return way.contains(fromNodeID); }).id)
37861                 .classed('selected', true);
37862         }
37863
37864         mouseout();
37865
37866         context.history()
37867             .on('change.restrictions', render);
37868
37869         d3.select(window)
37870             .on('resize.restrictions', render);
37871
37872         function click() {
37873             var datum = d3.event.target.__data__;
37874             if (datum instanceof iD.Entity) {
37875                 fromNodeID = datum.nodes[(datum.first() === vertexID) ? 1 : datum.nodes.length - 2];
37876                 render();
37877             } else if (datum instanceof iD.geo.Turn) {
37878                 if (datum.restriction) {
37879                     context.perform(
37880                         iD.actions.UnrestrictTurn(datum, projection),
37881                         t('operations.restriction.annotation.delete'));
37882                 } else {
37883                     context.perform(
37884                         iD.actions.RestrictTurn(datum, projection),
37885                         t('operations.restriction.annotation.create'));
37886                 }
37887             }
37888         }
37889
37890         function mouseover() {
37891             var datum = d3.event.target.__data__;
37892             if (datum instanceof iD.geo.Turn) {
37893                 var graph = context.graph(),
37894                     presets = context.presets(),
37895                     preset;
37896
37897                 if (datum.restriction) {
37898                     preset = presets.match(graph.entity(datum.restriction), graph);
37899                 } else {
37900                     preset = presets.item('type/restriction/' +
37901                         iD.geo.inferRestriction(
37902                             graph,
37903                             datum.from,
37904                             datum.via,
37905                             datum.to,
37906                             projection));
37907                 }
37908
37909                 wrap.selectAll('.restriction-help')
37910                     .text(t('operations.restriction.help.' +
37911                         (datum.restriction ? 'toggle_off' : 'toggle_on'),
37912                         {restriction: preset.name()}));
37913             }
37914         }
37915
37916         function mouseout() {
37917             wrap.selectAll('.restriction-help')
37918                 .text(t('operations.restriction.help.' +
37919                     (fromNodeID ? 'toggle' : 'select')));
37920         }
37921
37922         function render() {
37923             if (context.hasEntity(vertexID)) {
37924                 restrictions(selection);
37925             }
37926         }
37927     }
37928
37929     restrictions.entity = function(_) {
37930         if (!vertexID || vertexID !== _.id) {
37931             fromNodeID = null;
37932             vertexID = _.id;
37933         }
37934     };
37935
37936     restrictions.tags = function() {};
37937     restrictions.focus = function() {};
37938
37939     return d3.rebind(restrictions, event, 'on');
37940 };
37941 iD.ui.preset.textarea = function(field) {
37942
37943     var event = d3.dispatch('change'),
37944         input;
37945
37946     function i(selection) {
37947         input = selection.selectAll('textarea')
37948             .data([0]);
37949
37950         input.enter().append('textarea')
37951             .attr('id', 'preset-input-' + field.id)
37952             .attr('placeholder', field.placeholder() || t('inspector.unknown'))
37953             .attr('maxlength', 255);
37954
37955         input
37956             .on('blur', change)
37957             .on('change', change);
37958     }
37959
37960     function change() {
37961         var t = {};
37962         t[field.key] = input.value() || undefined;
37963         event.change(t);
37964     }
37965
37966     i.tags = function(tags) {
37967         input.value(tags[field.key] || '');
37968     };
37969
37970     i.focus = function() {
37971         input.node().focus();
37972     };
37973
37974     return d3.rebind(i, event, 'on');
37975 };
37976 iD.ui.preset.wikipedia = function(field, context) {
37977
37978     var event = d3.dispatch('change'),
37979         wikipedia = iD.wikipedia(),
37980         link, entity, lang, title;
37981
37982     function i(selection) {
37983
37984         var langcombo = d3.combobox()
37985             .fetcher(function(value, cb) {
37986                 var v = value.toLowerCase();
37987
37988                 cb(iD.data.wikipedia.filter(function(d) {
37989                     return d[0].toLowerCase().indexOf(v) >= 0 ||
37990                         d[1].toLowerCase().indexOf(v) >= 0 ||
37991                         d[2].toLowerCase().indexOf(v) >= 0;
37992                 }).map(function(d) {
37993                     return { value: d[1] };
37994                 }));
37995             });
37996
37997         var titlecombo = d3.combobox()
37998             .fetcher(function(value, cb) {
37999
38000                 if (!value) value = context.entity(entity.id).tags.name || '';
38001                 var searchfn = value.length > 7 ? wikipedia.search : wikipedia.suggestions;
38002
38003                 searchfn(language()[2], value, function(query, data) {
38004                     cb(data.map(function(d) {
38005                         return { value: d };
38006                     }));
38007                 });
38008             });
38009
38010         lang = selection.selectAll('input.wiki-lang')
38011             .data([0]);
38012
38013         lang.enter().append('input')
38014             .attr('type', 'text')
38015             .attr('class', 'wiki-lang')
38016             .value('English');
38017
38018         lang
38019             .call(langcombo)
38020             .on('blur', changeLang)
38021             .on('change', changeLang);
38022
38023         title = selection.selectAll('input.wiki-title')
38024             .data([0]);
38025
38026         title.enter().append('input')
38027             .attr('type', 'text')
38028             .attr('class', 'wiki-title')
38029             .attr('id', 'preset-input-' + field.id);
38030
38031         title
38032             .call(titlecombo)
38033             .on('blur', change)
38034             .on('change', change);
38035
38036         link = selection.selectAll('a.wiki-link')
38037             .data([0]);
38038
38039         link.enter().append('a')
38040             .attr('class', 'wiki-link button-input-action minor')
38041             .attr('target', '_blank')
38042             .append('span')
38043             .attr('class', 'icon out-link');
38044     }
38045
38046     function language() {
38047         var value = lang.value().toLowerCase();
38048         return _.find(iD.data.wikipedia, function(d) {
38049             return d[0].toLowerCase() === value ||
38050                 d[1].toLowerCase() === value ||
38051                 d[2].toLowerCase() === value;
38052         }) || iD.data.wikipedia[0];
38053     }
38054
38055     function changeLang() {
38056         lang.value(language()[1]);
38057         change();
38058     }
38059
38060     function change() {
38061         var value = title.value(),
38062             m = value.match(/https?:\/\/([-a-z]+)\.wikipedia\.org\/(?:wiki|\1-[-a-z]+)\/([^#]+)(?:#(.+))?/),
38063             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }),
38064             anchor;
38065
38066         if (l) {
38067             // Normalize title http://www.mediawiki.org/wiki/API:Query#Title_normalization
38068             value = decodeURIComponent(m[2]).replace(/_/g, ' ');
38069             if (m[3]) {
38070                 try {
38071                     // Best-effort `anchordecode:` implementation
38072                     anchor = decodeURIComponent(m[3].replace(/\.([0-9A-F]{2})/g, '%$1'));
38073                 } catch (e) {
38074                     anchor = decodeURIComponent(m[3]);
38075                 }
38076                 value += '#' + anchor.replace(/_/g, ' ');
38077             }
38078             value = value.slice(0, 1).toUpperCase() + value.slice(1);
38079             lang.value(l[1]);
38080             title.value(value);
38081         }
38082
38083         var t = {};
38084         t[field.key] = value ? language()[2] + ':' + value : undefined;
38085         event.change(t);
38086     }
38087
38088     i.tags = function(tags) {
38089         var value = tags[field.key] || '',
38090             m = value.match(/([^:]+):([^#]+)(?:#(.+))?/),
38091             l = m && _.find(iD.data.wikipedia, function(d) { return m[1] === d[2]; }),
38092             anchor = m && m[3];
38093
38094         // value in correct format
38095         if (l) {
38096             lang.value(l[1]);
38097             title.value(m[2] + (anchor ? ('#' + anchor) : ''));
38098             if (anchor) {
38099                 try {
38100                     // Best-effort `anchorencode:` implementation
38101                     anchor = encodeURIComponent(anchor.replace(/ /g, '_')).replace(/%/g, '.');
38102                 } catch (e) {
38103                     anchor = anchor.replace(/ /g, '_');
38104                 }
38105             }
38106             link.attr('href', 'http://' + m[1] + '.wikipedia.org/wiki/' +
38107                       m[2].replace(/ /g, '_') + (anchor ? ('#' + anchor) : ''));
38108
38109         // unrecognized value format
38110         } else {
38111             title.value(value);
38112             link.attr('href', 'http://en.wikipedia.org/wiki/Special:Search?search=' + value);
38113         }
38114     };
38115
38116     i.entity = function(_) {
38117         entity = _;
38118     };
38119
38120     i.focus = function() {
38121         title.node().focus();
38122     };
38123
38124     return d3.rebind(i, event, 'on');
38125 };
38126 iD.ui.intro.area = function(context, reveal) {
38127
38128     var event = d3.dispatch('done'),
38129         timeout;
38130
38131     var step = {
38132         title: 'intro.areas.title'
38133     };
38134
38135     step.enter = function() {
38136
38137         var playground = [-85.63552, 41.94159],
38138             corner = [-85.63565411045074, 41.9417715536927];
38139         context.map().centerZoom(playground, 19);
38140         reveal('button.add-area', t('intro.areas.add'), {tooltipClass: 'intro-areas-add'});
38141
38142         context.on('enter.intro', addArea);
38143
38144         function addArea(mode) {
38145             if (mode.id !== 'add-area') return;
38146             context.on('enter.intro', drawArea);
38147
38148             var padding = 120 * Math.pow(2, context.map().zoom() - 19);
38149             var pointBox = iD.ui.intro.pad(corner, padding, context);
38150             reveal(pointBox, t('intro.areas.corner'));
38151
38152             context.map().on('move.intro', function() {
38153                 padding = 120 * Math.pow(2, context.map().zoom() - 19);
38154                 pointBox = iD.ui.intro.pad(corner, padding, context);
38155                 reveal(pointBox, t('intro.areas.corner'), {duration: 0});
38156             });
38157         }
38158
38159         function drawArea(mode) {
38160             if (mode.id !== 'draw-area') return;
38161             context.on('enter.intro', enterSelect);
38162
38163             var padding = 150 * Math.pow(2, context.map().zoom() - 19);
38164             var pointBox = iD.ui.intro.pad(playground, padding, context);
38165             reveal(pointBox, t('intro.areas.place'));
38166
38167             context.map().on('move.intro', function() {
38168                 padding = 150 * Math.pow(2, context.map().zoom() - 19);
38169                 pointBox = iD.ui.intro.pad(playground, padding, context);
38170                 reveal(pointBox, t('intro.areas.place'), {duration: 0});
38171             });
38172         }
38173
38174         function enterSelect(mode) {
38175             if (mode.id !== 'select') return;
38176             context.map().on('move.intro', null);
38177             context.on('enter.intro', null);
38178
38179             timeout = setTimeout(function() {
38180                 reveal('.preset-search-input', t('intro.areas.search', {name: context.presets().item('leisure/playground').name()}));
38181                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38182             }, 500);
38183         }
38184
38185         function keySearch() {
38186             var first = d3.select('.preset-list-item:first-child');
38187             if (first.classed('preset-leisure-playground')) {
38188                 reveal(first.select('.preset-list-button').node(), t('intro.areas.choose'));
38189                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38190                 d3.select('.preset-search-input').on('keyup.intro', null);
38191             }
38192         }
38193
38194         function selectedPreset() {
38195             reveal('.pane', t('intro.areas.describe'));
38196             context.on('exit.intro', event.done);
38197         }
38198     };
38199
38200     step.exit = function() {
38201         window.clearTimeout(timeout);
38202         context.on('enter.intro', null);
38203         context.on('exit.intro', null);
38204         context.history().on('change.intro', null);
38205         context.map().on('move.intro', null);
38206         d3.select('.preset-search-input').on('keyup.intro', null);
38207     };
38208
38209     return d3.rebind(step, event, 'on');
38210 };
38211 iD.ui.intro.line = function(context, reveal) {
38212
38213     var event = d3.dispatch('done'),
38214         timeouts = [];
38215
38216     var step = {
38217         title: 'intro.lines.title'
38218     };
38219
38220     function timeout(f, t) {
38221         timeouts.push(window.setTimeout(f, t));
38222     }
38223
38224     step.enter = function() {
38225
38226         var centroid = [-85.62830, 41.95699];
38227         var midpoint = [-85.62975395449628, 41.95787501510204];
38228         var start = [-85.6297754121684, 41.95805253325314];
38229         var intersection = [-85.62974496187628, 41.95742515554585];
38230
38231         context.map().centerZoom(start, 18);
38232         reveal('button.add-line', t('intro.lines.add'), {tooltipClass: 'intro-lines-add'});
38233
38234         context.on('enter.intro', addLine);
38235
38236         function addLine(mode) {
38237             if (mode.id !== 'add-line') return;
38238             context.on('enter.intro', drawLine);
38239
38240             var padding = 150 * Math.pow(2, context.map().zoom() - 18);
38241             var pointBox = iD.ui.intro.pad(start, padding, context);
38242             reveal(pointBox, t('intro.lines.start'));
38243
38244             context.map().on('move.intro', function() {
38245                 padding = 150 * Math.pow(2, context.map().zoom() - 18);
38246                 pointBox = iD.ui.intro.pad(start, padding, context);
38247                 reveal(pointBox, t('intro.lines.start'), {duration: 0});
38248             });
38249         }
38250
38251         function drawLine(mode) {
38252             if (mode.id !== 'draw-line') return;
38253             context.history().on('change.intro', addIntersection);
38254             context.on('enter.intro', retry);
38255
38256             var padding = 300 * Math.pow(2, context.map().zoom() - 19);
38257             var pointBox = iD.ui.intro.pad(midpoint, padding, context);
38258             reveal(pointBox, t('intro.lines.intersect'));
38259
38260             context.map().on('move.intro', function() {
38261                 padding = 300 * Math.pow(2, context.map().zoom() - 19);
38262                 pointBox = iD.ui.intro.pad(midpoint, padding, context);
38263                 reveal(pointBox, t('intro.lines.intersect'), {duration: 0});
38264             });
38265         }
38266
38267         // ended line before creating intersection
38268         function retry(mode) {
38269             if (mode.id !== 'select') return;
38270             var pointBox = iD.ui.intro.pad(intersection, 30, context);
38271             reveal(pointBox, t('intro.lines.restart'));
38272             timeout(function() {
38273                 context.replace(iD.actions.DeleteMultiple(mode.selectedIDs()));
38274                 step.exit();
38275                 step.enter();
38276             }, 3000);
38277         }
38278
38279         function addIntersection(changes) {
38280             if ( _.any(changes.created(), function(d) {
38281                 return d.type === 'node' && context.graph().parentWays(d).length > 1;
38282             })) {
38283                 context.history().on('change.intro', null);
38284                 context.on('enter.intro', enterSelect);
38285
38286                 var padding = 900 * Math.pow(2, context.map().zoom() - 19);
38287                 var pointBox = iD.ui.intro.pad(centroid, padding, context);
38288                 reveal(pointBox, t('intro.lines.finish'));
38289
38290                 context.map().on('move.intro', function() {
38291                     padding = 900 * Math.pow(2, context.map().zoom() - 19);
38292                     pointBox = iD.ui.intro.pad(centroid, padding, context);
38293                     reveal(pointBox, t('intro.lines.finish'), {duration: 0});
38294                 });
38295             }
38296         }
38297
38298         function enterSelect(mode) {
38299             if (mode.id !== 'select') return;
38300             context.map().on('move.intro', null);
38301             context.on('enter.intro', null);
38302             d3.select('#curtain').style('pointer-events', 'all');
38303
38304             presetCategory();
38305         }
38306
38307         function presetCategory() {
38308             timeout(function() {
38309                 d3.select('#curtain').style('pointer-events', 'none');
38310                 var road = d3.select('.preset-category-road .preset-list-button');
38311                 reveal(road.node(), t('intro.lines.road'));
38312                 road.one('click.intro', roadCategory);
38313             }, 500);
38314         }
38315
38316         function roadCategory() {
38317             timeout(function() {
38318                 var grid = d3.select('.subgrid');
38319                 reveal(grid.node(), t('intro.lines.residential'));
38320                 grid.selectAll(':not(.preset-highway-residential) .preset-list-button')
38321                     .one('click.intro', retryPreset);
38322                 grid.selectAll('.preset-highway-residential .preset-list-button')
38323                     .one('click.intro', roadDetails);
38324             }, 500);
38325         }
38326
38327         // selected wrong road type
38328         function retryPreset() {
38329             timeout(function() {
38330                 var preset = d3.select('.entity-editor-pane .preset-list-button');
38331                 reveal(preset.node(), t('intro.lines.wrong_preset'));
38332                 preset.one('click.intro', presetCategory);
38333             }, 500);
38334         }
38335
38336         function roadDetails() {
38337             reveal('.pane', t('intro.lines.describe'));
38338             context.on('exit.intro', event.done);
38339         }
38340
38341     };
38342
38343     step.exit = function() {
38344         d3.select('#curtain').style('pointer-events', 'none');
38345         timeouts.forEach(window.clearTimeout);
38346         context.on('enter.intro', null);
38347         context.on('exit.intro', null);
38348         context.map().on('move.intro', null);
38349         context.history().on('change.intro', null);
38350     };
38351
38352     return d3.rebind(step, event, 'on');
38353 };
38354 iD.ui.intro.navigation = function(context, reveal) {
38355
38356     var event = d3.dispatch('done'),
38357         timeouts = [];
38358
38359     var step = {
38360         title: 'intro.navigation.title'
38361     };
38362
38363     function set(f, t) {
38364         timeouts.push(window.setTimeout(f, t));
38365     }
38366
38367     /*
38368      * Steps:
38369      * Drag map
38370      * Select poi
38371      * Show editor header
38372      * Show editor pane
38373      * Select road
38374      * Show header
38375      */
38376
38377     step.enter = function() {
38378
38379         var rect = context.surfaceRect(),
38380             map = {
38381                 left: rect.left + 10,
38382                 top: rect.top + 70,
38383                 width: rect.width - 70,
38384                 height: rect.height - 170
38385             };
38386
38387         context.map().centerZoom([-85.63591, 41.94285], 19);
38388
38389         reveal(map, t('intro.navigation.drag'));
38390
38391         context.map().on('move.intro', _.debounce(function() {
38392             context.map().on('move.intro', null);
38393             townhall();
38394             context.on('enter.intro', inspectTownHall);
38395         }, 400));
38396
38397         function townhall() {
38398             var hall = [-85.63645945147184, 41.942986488012565];
38399
38400             var point = context.projection(hall);
38401             if (point[0] < 0 || point[0] > rect.width ||
38402                 point[1] < 0 || point[1] > rect.height) {
38403                 context.map().center(hall);
38404             }
38405
38406             var box = iD.ui.intro.pointBox(hall, context);
38407             reveal(box, t('intro.navigation.select'));
38408
38409             context.map().on('move.intro', function() {
38410                 var box = iD.ui.intro.pointBox(hall, context);
38411                 reveal(box, t('intro.navigation.select'), {duration: 0});
38412             });
38413         }
38414
38415         function inspectTownHall(mode) {
38416             if (mode.id !== 'select') return;
38417             context.on('enter.intro', null);
38418             context.map().on('move.intro', null);
38419             set(function() {
38420                 reveal('.entity-editor-pane', t('intro.navigation.pane'));
38421                 context.on('exit.intro', event.done);
38422             }, 700);
38423         }
38424
38425     };
38426
38427     step.exit = function() {
38428         context.map().on('move.intro', null);
38429         context.on('enter.intro', null);
38430         context.on('exit.intro', null);
38431         timeouts.forEach(window.clearTimeout);
38432     };
38433
38434     return d3.rebind(step, event, 'on');
38435 };
38436 iD.ui.intro.point = function(context, reveal) {
38437
38438     var event = d3.dispatch('done'),
38439         timeouts = [];
38440
38441     var step = {
38442         title: 'intro.points.title'
38443     };
38444
38445     function setTimeout(f, t) {
38446         timeouts.push(window.setTimeout(f, t));
38447     }
38448
38449     step.enter = function() {
38450
38451         context.map().centerZoom([-85.63279, 41.94394], 19);
38452         reveal('button.add-point', t('intro.points.add'), {tooltipClass: 'intro-points-add'});
38453
38454         var corner = [-85.632481,41.944094];
38455
38456         context.on('enter.intro', addPoint);
38457
38458         function addPoint(mode) {
38459             if (mode.id !== 'add-point') return;
38460             context.on('enter.intro', enterSelect);
38461
38462             var pointBox = iD.ui.intro.pad(corner, 150, context);
38463             reveal(pointBox, t('intro.points.place'));
38464
38465             context.map().on('move.intro', function() {
38466                 pointBox = iD.ui.intro.pad(corner, 150, context);
38467                 reveal(pointBox, t('intro.points.place'), {duration: 0});
38468             });
38469
38470         }
38471
38472         function enterSelect(mode) {
38473             if (mode.id !== 'select') return;
38474             context.map().on('move.intro', null);
38475             context.on('enter.intro', null);
38476
38477             setTimeout(function() {
38478                 reveal('.preset-search-input', t('intro.points.search', {name: context.presets().item('amenity/cafe').name()}));
38479                 d3.select('.preset-search-input').on('keyup.intro', keySearch);
38480             }, 500);
38481         }
38482
38483         function keySearch() {
38484             var first = d3.select('.preset-list-item:first-child');
38485             if (first.classed('preset-amenity-cafe')) {
38486                 reveal(first.select('.preset-list-button').node(), t('intro.points.choose'));
38487                 d3.selection.prototype.one.call(context.history(), 'change.intro', selectedPreset);
38488
38489                 d3.select('.preset-search-input').on('keydown.intro', function() {
38490                     // Prevent search from updating and changing the grid
38491                     d3.event.stopPropagation();
38492                     d3.event.preventDefault();
38493                 }, true).on('keyup.intro', null);
38494             }
38495         }
38496
38497         function selectedPreset() {
38498             setTimeout(function() {
38499                 reveal('.entity-editor-pane', t('intro.points.describe'), {tooltipClass: 'intro-points-describe'});
38500                 context.history().on('change.intro', closeEditor);
38501                 context.on('exit.intro', selectPoint);
38502             }, 400);
38503         }
38504
38505         function closeEditor() {
38506             d3.select('.preset-search-input').on('keydown.intro', null);
38507             context.history().on('change.intro', null);
38508             reveal('.entity-editor-pane', t('intro.points.close'));
38509         }
38510
38511         function selectPoint() {
38512             context.on('exit.intro', null);
38513             context.history().on('change.intro', null);
38514             context.on('enter.intro', enterReselect);
38515
38516             var pointBox = iD.ui.intro.pad(corner, 150, context);
38517             reveal(pointBox, t('intro.points.reselect'));
38518
38519             context.map().on('move.intro', function() {
38520                 pointBox = iD.ui.intro.pad(corner, 150, context);
38521                 reveal(pointBox, t('intro.points.reselect'), {duration: 0});
38522             });
38523         }
38524
38525         function enterReselect(mode) {
38526             if (mode.id !== 'select') return;
38527             context.map().on('move.intro', null);
38528             context.on('enter.intro', null);
38529
38530             setTimeout(function() {
38531                 reveal('.entity-editor-pane', t('intro.points.fixname'));
38532                 context.on('exit.intro', deletePoint);
38533             }, 500);
38534         }
38535
38536         function deletePoint() {
38537             context.on('exit.intro', null);
38538             context.on('enter.intro', enterDelete);
38539
38540             var pointBox = iD.ui.intro.pad(corner, 150, context);
38541             reveal(pointBox, t('intro.points.reselect_delete'));
38542
38543             context.map().on('move.intro', function() {
38544                 pointBox = iD.ui.intro.pad(corner, 150, context);
38545                 reveal(pointBox, t('intro.points.reselect_delete'), {duration: 0});
38546             });
38547         }
38548
38549         function enterDelete(mode) {
38550             if (mode.id !== 'select') return;
38551             context.map().on('move.intro', null);
38552             context.on('enter.intro', null);
38553             context.on('exit.intro', deletePoint);
38554             context.map().on('move.intro', deletePoint);
38555             context.history().on('change.intro', deleted);
38556
38557             setTimeout(function() {
38558                 var node = d3.select('.radial-menu-item-delete').node();
38559                 var pointBox = iD.ui.intro.pad(node.getBoundingClientRect(), 50, context);
38560                 reveal(pointBox, t('intro.points.delete'));
38561             }, 300);
38562         }
38563
38564         function deleted(changed) {
38565             if (changed.deleted().length) event.done();
38566         }
38567
38568     };
38569
38570     step.exit = function() {
38571         timeouts.forEach(window.clearTimeout);
38572         context.on('exit.intro', null);
38573         context.on('enter.intro', null);
38574         context.map().on('move.intro', null);
38575         context.history().on('change.intro', null);
38576         d3.select('.preset-search-input').on('keyup.intro', null).on('keydown.intro', null);
38577     };
38578
38579     return d3.rebind(step, event, 'on');
38580 };
38581 iD.ui.intro.startEditing = function(context, reveal) {
38582
38583     var event = d3.dispatch('done', 'startEditing'),
38584         modal,
38585         timeouts = [];
38586
38587     var step = {
38588         title: 'intro.startediting.title'
38589     };
38590
38591     function timeout(f, t) {
38592         timeouts.push(window.setTimeout(f, t));
38593     }
38594
38595     step.enter = function() {
38596
38597         reveal('.map-control.help-control', t('intro.startediting.help'));
38598
38599         timeout(function() {
38600             reveal('#bar button.save', t('intro.startediting.save'));
38601         }, 3500);
38602
38603         timeout(function() {
38604             reveal('#surface');
38605         }, 7000);
38606
38607         timeout(function() {
38608             modal = iD.ui.modal(context.container());
38609
38610             modal.select('.modal')
38611                 .attr('class', 'modal-splash modal col6');
38612
38613             modal.selectAll('.close').remove();
38614
38615             var startbutton = modal.select('.content')
38616                 .attr('class', 'fillL')
38617                     .append('button')
38618                         .attr('class', 'modal-section huge-modal-button')
38619                         .on('click', function() {
38620                                 modal.remove();
38621                         });
38622
38623                 startbutton.append('div')
38624                     .attr('class','illustration');
38625                 startbutton.append('h2')
38626                     .text(t('intro.startediting.start'));
38627
38628             event.startEditing();
38629
38630         }, 7500);
38631     };
38632
38633     step.exit = function() {
38634         if (modal) modal.remove();
38635         timeouts.forEach(window.clearTimeout);
38636     };
38637
38638     return d3.rebind(step, event, 'on');
38639 };
38640 iD.presets = function() {
38641
38642     // an iD.presets.Collection with methods for
38643     // loading new data and returning defaults
38644
38645     var all = iD.presets.Collection([]),
38646         defaults = { area: all, line: all, point: all, vertex: all, relation: all },
38647         fields = {},
38648         universal = [],
38649         recent = iD.presets.Collection([]);
38650
38651     // Index of presets by (geometry, tag key).
38652     var index = {
38653         point: {},
38654         vertex: {},
38655         line: {},
38656         area: {},
38657         relation: {}
38658     };
38659
38660     all.match = function(entity, resolver) {
38661         var geometry = entity.geometry(resolver),
38662             geometryMatches = index[geometry],
38663             best = -1,
38664             match;
38665
38666         for (var k in entity.tags) {
38667             var keyMatches = geometryMatches[k];
38668             if (!keyMatches) continue;
38669
38670             for (var i = 0; i < keyMatches.length; i++) {
38671                 var score = keyMatches[i].matchScore(entity);
38672                 if (score > best) {
38673                     best = score;
38674                     match = keyMatches[i];
38675                 }
38676             }
38677         }
38678
38679         return match || all.item(geometry);
38680     };
38681
38682     // Because of the open nature of tagging, iD will never have a complete
38683     // list of tags used in OSM, so we want it to have logic like "assume
38684     // that a closed way with an amenity tag is an area, unless the amenity
38685     // is one of these specific types". This function computes a structure
38686     // that allows testing of such conditions, based on the presets designated
38687     // as as supporting (or not supporting) the area geometry.
38688     //
38689     // The returned object L is a whitelist/blacklist of tags. A closed way
38690     // with a tag (k, v) is considered to be an area if `k in L && !(v in L[k])`
38691     // (see `iD.Way#isArea()`). In other words, the keys of L form the whitelist,
38692     // and the subkeys form the blacklist.
38693     all.areaKeys = function() {
38694         var areaKeys = {},
38695             ignore = ['barrier', 'highway', 'footway', 'railway', 'type'],
38696             presets = _.reject(all.collection, 'suggestion');
38697
38698         // whitelist
38699         presets.forEach(function(d) {
38700             for (var key in d.tags) break;
38701             if (!key) return;
38702             if (ignore.indexOf(key) !== -1) return;
38703
38704             if (d.geometry.indexOf('area') !== -1) {
38705                 areaKeys[key] = areaKeys[key] || {};
38706             }
38707         });
38708
38709         // blacklist
38710         presets.forEach(function(d) {
38711             for (var key in d.tags) break;
38712             if (!key) return;
38713             if (ignore.indexOf(key) !== -1) return;
38714
38715             var value = d.tags[key];
38716             if (d.geometry.indexOf('area') === -1 && key in areaKeys && value !== '*') {
38717                 areaKeys[key][value] = true;
38718             }
38719         });
38720
38721         return areaKeys;
38722     };
38723
38724     all.load = function(d) {
38725
38726         if (d.fields) {
38727             _.forEach(d.fields, function(d, id) {
38728                 fields[id] = iD.presets.Field(id, d);
38729                 if (d.universal) universal.push(fields[id]);
38730             });
38731         }
38732
38733         if (d.presets) {
38734             _.forEach(d.presets, function(d, id) {
38735                 all.collection.push(iD.presets.Preset(id, d, fields));
38736             });
38737         }
38738
38739         if (d.categories) {
38740             _.forEach(d.categories, function(d, id) {
38741                 all.collection.push(iD.presets.Category(id, d, all));
38742             });
38743         }
38744
38745         if (d.defaults) {
38746             var getItem = _.bind(all.item, all);
38747             defaults = {
38748                 area: iD.presets.Collection(d.defaults.area.map(getItem)),
38749                 line: iD.presets.Collection(d.defaults.line.map(getItem)),
38750                 point: iD.presets.Collection(d.defaults.point.map(getItem)),
38751                 vertex: iD.presets.Collection(d.defaults.vertex.map(getItem)),
38752                 relation: iD.presets.Collection(d.defaults.relation.map(getItem))
38753             };
38754         }
38755
38756         for (var i = 0; i < all.collection.length; i++) {
38757             var preset = all.collection[i],
38758                 geometry = preset.geometry;
38759
38760             for (var j = 0; j < geometry.length; j++) {
38761                 var g = index[geometry[j]];
38762                 for (var k in preset.tags) {
38763                     (g[k] = g[k] || []).push(preset);
38764                 }
38765             }
38766         }
38767
38768         return all;
38769     };
38770
38771     all.field = function(id) {
38772         return fields[id];
38773     };
38774
38775     all.universal = function() {
38776         return universal;
38777     };
38778
38779     all.defaults = function(geometry, n) {
38780         var rec = recent.matchGeometry(geometry).collection.slice(0, 4),
38781             def = _.uniq(rec.concat(defaults[geometry].collection)).slice(0, n - 1);
38782         return iD.presets.Collection(_.unique(rec.concat(def).concat(all.item(geometry))));
38783     };
38784
38785     all.choose = function(preset) {
38786         if (!preset.isFallback()) {
38787             recent = iD.presets.Collection(_.unique([preset].concat(recent.collection)));
38788         }
38789         return all;
38790     };
38791
38792     return all;
38793 };
38794 iD.presets.Category = function(id, category, all) {
38795     category = _.clone(category);
38796
38797     category.id = id;
38798
38799     category.members = iD.presets.Collection(category.members.map(function(id) {
38800         return all.item(id);
38801     }));
38802
38803     category.matchGeometry = function(geometry) {
38804         return category.geometry.indexOf(geometry) >= 0;
38805     };
38806
38807     category.matchScore = function() { return -1; };
38808
38809     category.name = function() {
38810         return t('presets.categories.' + id + '.name', {'default': id});
38811     };
38812
38813     category.terms = function() {
38814         return [];
38815     };
38816
38817     return category;
38818 };
38819 iD.presets.Collection = function(collection) {
38820
38821     var maxSearchResults = 50,
38822         maxSuggestionResults = 10;
38823
38824     var presets = {
38825
38826         collection: collection,
38827
38828         item: function(id) {
38829             return _.find(collection, function(d) {
38830                 return d.id === id;
38831             });
38832         },
38833
38834         matchGeometry: function(geometry) {
38835             return iD.presets.Collection(collection.filter(function(d) {
38836                 return d.matchGeometry(geometry);
38837             }));
38838         },
38839
38840         search: function(value, geometry) {
38841             if (!value) return this;
38842
38843             value = value.toLowerCase();
38844
38845             var searchable = _.filter(collection, function(a) {
38846                     return a.searchable !== false && a.suggestion !== true;
38847                 }),
38848                 suggestions = _.filter(collection, function(a) {
38849                     return a.suggestion === true;
38850                 });
38851
38852             // matches value to preset.name
38853             var leading_name = _.filter(searchable, function(a) {
38854                     return leading(a.name().toLowerCase());
38855                 }).sort(function(a, b) {
38856                     var i = a.name().toLowerCase().indexOf(value) - b.name().toLowerCase().indexOf(value);
38857                     if (i === 0) return a.name().length - b.name().length;
38858                     else return i;
38859                 });
38860
38861             // matches value to preset.terms values
38862             var leading_terms = _.filter(searchable, function(a) {
38863                     return _.any(a.terms() || [], leading);
38864                 });
38865
38866             // matches value to preset.tags values
38867             var leading_tag_values = _.filter(searchable, function(a) {
38868                     return _.any(_.without(_.values(a.tags || {}), '*'), leading);
38869                 });
38870
38871             function leading(a) {
38872                 var index = a.indexOf(value);
38873                 return index === 0 || a[index - 1] === ' ';
38874             }
38875
38876             // finds close matches to value in preset.name
38877             var levenstein_name = searchable.map(function(a) {
38878                     return {
38879                         preset: a,
38880                         dist: iD.util.editDistance(value, a.name().toLowerCase())
38881                     };
38882                 }).filter(function(a) {
38883                     return a.dist + Math.min(value.length - a.preset.name().length, 0) < 3;
38884                 }).sort(function(a, b) {
38885                     return a.dist - b.dist;
38886                 }).map(function(a) {
38887                     return a.preset;
38888                 });
38889
38890             // finds close matches to value in preset.terms
38891             var leventstein_terms = _.filter(searchable, function(a) {
38892                     return _.any(a.terms() || [], function(b) {
38893                         return iD.util.editDistance(value, b) + Math.min(value.length - b.length, 0) < 3;
38894                     });
38895                 });
38896
38897             function suggestionName(name) {
38898                 var nameArray = name.split(' - ');
38899                 if (nameArray.length > 1) {
38900                     name = nameArray.slice(0, nameArray.length-1).join(' - ');
38901                 }
38902                 return name.toLowerCase();
38903             }
38904
38905             var leading_suggestions = _.filter(suggestions, function(a) {
38906                     return leading(suggestionName(a.name()));
38907                 }).sort(function(a, b) {
38908                     a = suggestionName(a.name());
38909                     b = suggestionName(b.name());
38910                     var i = a.indexOf(value) - b.indexOf(value);
38911                     if (i === 0) return a.length - b.length;
38912                     else return i;
38913                 });
38914
38915             var leven_suggestions = suggestions.map(function(a) {
38916                     return {
38917                         preset: a,
38918                         dist: iD.util.editDistance(value, suggestionName(a.name()))
38919                     };
38920                 }).filter(function(a) {
38921                     return a.dist + Math.min(value.length - suggestionName(a.preset.name()).length, 0) < 1;
38922                 }).sort(function(a, b) {
38923                     return a.dist - b.dist;
38924                 }).map(function(a) {
38925                     return a.preset;
38926                 });
38927
38928             var other = presets.item(geometry);
38929
38930             var results = leading_name.concat(
38931                             leading_terms,
38932                             leading_tag_values,
38933                             leading_suggestions.slice(0, maxSuggestionResults+5),
38934                             levenstein_name,
38935                             leventstein_terms,
38936                             leven_suggestions.slice(0, maxSuggestionResults)
38937                         ).slice(0, maxSearchResults-1);
38938
38939             return iD.presets.Collection(_.unique(
38940                     results.concat(other)
38941                 ));
38942         }
38943     };
38944
38945     return presets;
38946 };
38947 iD.presets.Field = function(id, field) {
38948     field = _.clone(field);
38949
38950     field.id = id;
38951
38952     field.matchGeometry = function(geometry) {
38953         return !field.geometry || field.geometry === geometry;
38954     };
38955
38956     field.t = function(scope, options) {
38957         return t('presets.fields.' + id + '.' + scope, options);
38958     };
38959
38960     field.label = function() {
38961         return field.t('label', {'default': id});
38962     };
38963
38964     var placeholder = field.placeholder;
38965     field.placeholder = function() {
38966         return field.t('placeholder', {'default': placeholder});
38967     };
38968
38969     return field;
38970 };
38971 iD.presets.Preset = function(id, preset, fields) {
38972     preset = _.clone(preset);
38973
38974     preset.id = id;
38975     preset.fields = (preset.fields || []).map(getFields);
38976     preset.geometry = (preset.geometry || []);
38977
38978     function getFields(f) {
38979         return fields[f];
38980     }
38981
38982     preset.matchGeometry = function(geometry) {
38983         return preset.geometry.indexOf(geometry) >= 0;
38984     };
38985
38986     var matchScore = preset.matchScore || 1;
38987     preset.matchScore = function(entity) {
38988         var tags = preset.tags,
38989             score = 0;
38990
38991         for (var t in tags) {
38992             if (entity.tags[t] === tags[t]) {
38993                 score += matchScore;
38994             } else if (tags[t] === '*' && t in entity.tags) {
38995                 score += matchScore / 2;
38996             } else {
38997                 return -1;
38998             }
38999         }
39000
39001         return score;
39002     };
39003
39004     preset.t = function(scope, options) {
39005         return t('presets.presets.' + id + '.' + scope, options);
39006     };
39007
39008     var name = preset.name;
39009     preset.name = function() {
39010         if (preset.suggestion) {
39011             id = id.split('/');
39012             id = id[0] + '/' + id[1];
39013             return name + ' - ' + t('presets.presets.' + id + '.name');
39014         }
39015         return preset.t('name', {'default': name});
39016     };
39017
39018     preset.terms = function() {
39019         return preset.t('terms', {'default': ''}).toLowerCase().split(/\s*,+\s*/);
39020     };
39021
39022     preset.isFallback = function() {
39023         return Object.keys(preset.tags).length === 0;
39024     };
39025
39026     preset.reference = function(geometry) {
39027         var key = Object.keys(preset.tags)[0],
39028             value = preset.tags[key];
39029
39030         if (geometry === 'relation' && key === 'type') {
39031             return { rtype: value };
39032         } else if (value === '*') {
39033             return { key: key };
39034         } else {
39035             return { key: key, value: value };
39036         }
39037     };
39038
39039     var removeTags = preset.removeTags || preset.tags;
39040     preset.removeTags = function(tags, geometry) {
39041         tags = _.omit(tags, _.keys(removeTags));
39042
39043         for (var f in preset.fields) {
39044             var field = preset.fields[f];
39045             if (field.matchGeometry(geometry) && field.default === tags[field.key]) {
39046                 delete tags[field.key];
39047             }
39048         }
39049
39050         delete tags.area;
39051         return tags;
39052     };
39053
39054     var applyTags = preset.addTags || preset.tags;
39055     preset.applyTags = function(tags, geometry) {
39056         var k;
39057
39058         tags = _.clone(tags);
39059
39060         for (k in applyTags) {
39061             if (applyTags[k] === '*') {
39062                 tags[k] = 'yes';
39063             } else {
39064                 tags[k] = applyTags[k];
39065             }
39066         }
39067
39068         // Add area=yes if necessary.
39069         // This is necessary if the geometry is already an area (e.g. user drew an area) AND any of:
39070         // 1. chosen preset could be either an area or a line (`barrier=city_wall`)
39071         // 2. chosen preset doesn't have a key in areaKeys (`railway=station`)
39072         if (geometry === 'area') {
39073             var needsAreaTag = true;
39074             if (preset.geometry.indexOf('line') === -1) {
39075                 for (k in applyTags) {
39076                     if (k in iD.areaKeys) {
39077                         needsAreaTag = false;
39078                         break;
39079                     }
39080                 }
39081             }
39082             if (needsAreaTag) {
39083                 tags.area = 'yes';
39084             }
39085         }
39086
39087         for (var f in preset.fields) {
39088             var field = preset.fields[f];
39089             if (field.matchGeometry(geometry) && field.key && !tags[field.key] && field.default) {
39090                 tags[field.key] = field.default;
39091             }
39092         }
39093
39094         return tags;
39095     };
39096
39097     return preset;
39098 };
39099 iD.validations = {};
39100 iD.validations.DeprecatedTag = function() {
39101
39102     var validation = function(changes) {
39103         var warnings = [];
39104         for (var i = 0; i < changes.created.length; i++) {
39105             var change = changes.created[i],
39106                 deprecatedTags = change.deprecatedTags();
39107
39108             if (!_.isEmpty(deprecatedTags)) {
39109                 var tags = iD.util.tagText({ tags: deprecatedTags });
39110                 warnings.push({
39111                     id: 'deprecated_tags',
39112                     message: t('validations.deprecated_tags', { tags: tags }),
39113                     entity: change
39114                 });
39115             }
39116         }
39117         return warnings;
39118     };
39119
39120     return validation;
39121 };
39122 iD.validations.ManyDeletions = function() {
39123     var threshold = 100;
39124
39125     var validation = function(changes) {
39126         var warnings = [];
39127         if (changes.deleted.length > threshold) {
39128             warnings.push({
39129                 id: 'many_deletions',
39130                 message: t('validations.many_deletions', { n: changes.deleted.length })
39131             });
39132         }
39133         return warnings;
39134     };
39135
39136     return validation;
39137 };
39138 iD.validations.MissingTag = function() {
39139
39140     var validation = function(changes, graph) {
39141         var warnings = [];
39142         for (var i = 0; i < changes.created.length; i++) {
39143             var change = changes.created[i],
39144                 geometry = change.geometry(graph);
39145
39146             if ((geometry === 'point' || geometry === 'line' || geometry === 'area') && !change.isUsed(graph)) {
39147                 warnings.push({
39148                     id: 'missing_tag',
39149                     message: t('validations.untagged_' + geometry),
39150                     tooltip: t('validations.untagged_' + geometry + '_tooltip'),
39151                     entity: change
39152                 });
39153             }
39154         }
39155         return warnings;
39156     };
39157
39158     return validation;
39159 };
39160 iD.validations.TagSuggestsArea = function() {
39161
39162     // https://github.com/openstreetmap/josm/blob/mirror/src/org/
39163     // openstreetmap/josm/data/validation/tests/UnclosedWays.java#L80
39164     function tagSuggestsArea(tags) {
39165         if (_.isEmpty(tags)) return false;
39166
39167         var presence = ['landuse', 'amenities', 'tourism', 'shop'];
39168         for (var i = 0; i < presence.length; i++) {
39169             if (tags[presence[i]] !== undefined) {
39170                 return presence[i] + '=' + tags[presence[i]];
39171             }
39172         }
39173
39174         if (tags.building && tags.building === 'yes') return 'building=yes';
39175     }
39176
39177     var validation = function(changes, graph) {
39178         var warnings = [];
39179         for (var i = 0; i < changes.created.length; i++) {
39180             var change = changes.created[i],
39181                 geometry = change.geometry(graph),
39182                 suggestion = (geometry === 'line' ? tagSuggestsArea(change.tags) : undefined);
39183
39184             if (suggestion) {
39185                 warnings.push({
39186                     id: 'tag_suggests_area',
39187                     message: t('validations.tag_suggests_area', { tag: suggestion }),
39188                     entity: change
39189                 });
39190             }
39191         }
39192         return warnings;
39193     };
39194
39195     return validation;
39196 };
39197 })();
39198 window.locale = { _current: 'en' };
39199
39200 locale.current = function(_) {
39201     if (!arguments.length) return locale._current;
39202     if (locale[_] !== undefined) locale._current = _;
39203     else if (locale[_.split('-')[0]]) locale._current = _.split('-')[0];
39204     return locale;
39205 };
39206
39207 function t(s, o, loc) {
39208     loc = loc || locale._current;
39209
39210     var path = s.split(".").reverse(),
39211         rep = locale[loc];
39212
39213     while (rep !== undefined && path.length) rep = rep[path.pop()];
39214
39215     if (rep !== undefined) {
39216         if (o) for (var k in o) rep = rep.replace('{' + k + '}', o[k]);
39217         return rep;
39218     }
39219
39220     if (loc !== 'en') {
39221         return t(s, o, 'en');
39222     }
39223
39224     if (o && 'default' in o) {
39225         return o['default'];
39226     }
39227
39228     var missing = 'Missing ' + loc + ' translation: ' + s;
39229     if (typeof console !== "undefined") console.error(missing);
39230
39231     return missing;
39232 }
39233 iD.introGraph = '{"n185954700":{"id":"n185954700","loc":[-85.642244,41.939081],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185964961":{"id":"n185964961","loc":[-85.6406588,41.942601],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964962":{"id":"n185964962","loc":[-85.6394548,41.94261],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185970607":{"id":"n185970607","loc":[-85.641094,41.94006],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970614":{"id":"n185970614","loc":[-85.641825,41.941316],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970616":{"id":"n185970616","loc":[-85.641838,41.941556],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185973650":{"id":"n185973650","loc":[-85.639918,41.940064],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973660":{"id":"n185973660","loc":[-85.640645,41.941339],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973659":{"id":"n185973659","loc":[-85.6406115,41.9400658],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185974479":{"id":"n185974479","loc":[-85.639402,41.941344],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185974481":{"id":"n185974481","loc":[-85.643071,41.941288],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185976259":{"id":"n185976259","loc":[-85.642213,41.940043],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976261":{"id":"n185976261","loc":[-85.643056,41.94001],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185964959":{"id":"n185964959","loc":[-85.6431031,41.9425754],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185964960":{"id":"n185964960","loc":[-85.6418749,41.9425864],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185981481":{"id":"n185981481","loc":[-85.6386827,41.9400828],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981482":{"id":"n185981482","loc":[-85.6393664,41.9400854],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n2138493844":{"id":"n2138493844","loc":[-85.6427969,41.940522],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493845":{"id":"n2138493845","loc":[-85.6425891,41.9405228],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493846":{"id":"n2138493846","loc":[-85.6425868,41.9402875],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493847":{"id":"n2138493847","loc":[-85.6427969,41.9402858],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493848":{"id":"n2138493848","loc":[-85.6425708,41.9405234],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493849":{"id":"n2138493849","loc":[-85.642568,41.9402855],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493850":{"id":"n2138493850","loc":[-85.6423157,41.9402886],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493851":{"id":"n2138493851","loc":[-85.6423212,41.9404362],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493852":{"id":"n2138493852","loc":[-85.6422923,41.9404578],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493853":{"id":"n2138493853","loc":[-85.6422868,41.9404834],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493854":{"id":"n2138493854","loc":[-85.6423226,41.9405091],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493855":{"id":"n2138493855","loc":[-85.6423847,41.9405111],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2138493856":{"id":"n2138493856","loc":[-85.6424081,41.9405265],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{}},"n2140155811":{"id":"n2140155811","loc":[-85.6419547,41.9410956],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155814":{"id":"n2140155814","loc":[-85.6427577,41.9410884],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155816":{"id":"n2140155816","loc":[-85.6427545,41.9410052],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155818":{"id":"n2140155818","loc":[-85.6428057,41.9410028],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155821":{"id":"n2140155821","loc":[-85.6427993,41.9407339],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155823":{"id":"n2140155823","loc":[-85.6427385,41.9407339],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155825":{"id":"n2140155825","loc":[-85.6427417,41.9406435],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155827":{"id":"n2140155827","loc":[-85.6419515,41.9406482],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155828":{"id":"n2140155828","loc":[-85.6429368,41.9412407],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155829":{"id":"n2140155829","loc":[-85.6417756,41.9412526],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155830":{"id":"n2140155830","loc":[-85.641766,41.9405983],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155831":{"id":"n2140155831","loc":[-85.6419803,41.9405983],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155832":{"id":"n2140155832","loc":[-85.6419611,41.9401366],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155833":{"id":"n2140155833","loc":[-85.6429336,41.94012],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155834":{"id":"n2140155834","loc":[-85.6430697,41.9411732],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155835":{"id":"n2140155835","loc":[-85.6428411,41.9409974],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155837":{"id":"n2140155837","loc":[-85.6428388,41.9407211],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155839":{"id":"n2140155839","loc":[-85.6430624,41.9405521],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155840":{"id":"n2140155840","loc":[-85.6427323,41.9412396],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155842":{"id":"n2140155842","loc":[-85.6418147,41.9412457],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155844":{"id":"n2140155844","loc":[-85.641813,41.9411319],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155845":{"id":"n2140155845","loc":[-85.6418394,41.9411111],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155847":{"id":"n2140155847","loc":[-85.6418838,41.9410977],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155849":{"id":"n2140155849","loc":[-85.6427324,41.9410921],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155851":{"id":"n2140155851","loc":[-85.6427798,41.9412945],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155852":{"id":"n2140155852","loc":[-85.6427701,41.9411777],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155854":{"id":"n2140155854","loc":[-85.6427323,41.9411572],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2140155856":{"id":"n2140155856","loc":[-85.6418478,41.9411666],"version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{}},"n2165942818":{"id":"n2165942818","loc":[-85.6437533,41.9415029],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2165942819":{"id":"n2165942819","loc":[-85.6437623,41.9421195],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2168510551":{"id":"n2168510551","loc":[-85.6423795,41.9422615],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510552":{"id":"n2168510552","loc":[-85.6423744,41.9419439],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510553":{"id":"n2168510553","loc":[-85.642518,41.9419427],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510554":{"id":"n2168510554","loc":[-85.6425186,41.9419801],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510555":{"id":"n2168510555","loc":[-85.6428314,41.9419773],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510556":{"id":"n2168510556","loc":[-85.6428368,41.9423116],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510557":{"id":"n2168510557","loc":[-85.6424947,41.9423146],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2168510558":{"id":"n2168510558","loc":[-85.6424938,41.9422605],"version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:23Z","tags":{}},"n2189046007":{"id":"n2189046007","loc":[-85.6410866,41.9424327],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046009":{"id":"n2189046009","loc":[-85.6410805,41.9420061],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046011":{"id":"n2189046011","loc":[-85.6412443,41.9420048],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046012":{"id":"n2189046012","loc":[-85.6412505,41.9424314],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046014":{"id":"n2189046014","loc":[-85.6413311,41.942968],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046016":{"id":"n2189046016","loc":[-85.6413281,41.942713],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046018":{"id":"n2189046018","loc":[-85.641521,41.9427117],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046021":{"id":"n2189046021","loc":[-85.6415234,41.9429236],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046022":{"id":"n2189046022","loc":[-85.6415045,41.9429238],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046025":{"id":"n2189046025","loc":[-85.641505,41.9429668],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046053":{"id":"n2189046053","loc":[-85.6385988,41.942412],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046054":{"id":"n2189046054","loc":[-85.6385985,41.9423311],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046055":{"id":"n2189046055","loc":[-85.6387617,41.9423308],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046056":{"id":"n2189046056","loc":[-85.6387616,41.9423026],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046058":{"id":"n2189046058","loc":[-85.6388215,41.9423025],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046059":{"id":"n2189046059","loc":[-85.6388219,41.9424115],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046060":{"id":"n2189046060","loc":[-85.6391096,41.9424486],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046061":{"id":"n2189046061","loc":[-85.6391105,41.9423673],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046063":{"id":"n2189046063","loc":[-85.6392911,41.9423684],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046065":{"id":"n2189046065","loc":[-85.6392903,41.9424497],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046067":{"id":"n2189046067","loc":[-85.6397927,41.9423876],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046069":{"id":"n2189046069","loc":[-85.6397897,41.9422981],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046070":{"id":"n2189046070","loc":[-85.6399702,41.9422947],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046072":{"id":"n2189046072","loc":[-85.6399732,41.9423843],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046074":{"id":"n2189046074","loc":[-85.6396331,41.9430227],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046075":{"id":"n2189046075","loc":[-85.6398673,41.9430189],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046077":{"id":"n2189046077","loc":[-85.6398656,41.9429637],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046079":{"id":"n2189046079","loc":[-85.6398885,41.9429633],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046082":{"id":"n2189046082","loc":[-85.6398832,41.942779],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046083":{"id":"n2189046083","loc":[-85.6398513,41.9427796],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046085":{"id":"n2189046085","loc":[-85.6398502,41.9427401],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046087":{"id":"n2189046087","loc":[-85.6397889,41.9427411],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046089":{"id":"n2189046089","loc":[-85.6397892,41.942753],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046090":{"id":"n2189046090","loc":[-85.6396983,41.9427544],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046092":{"id":"n2189046092","loc":[-85.6396993,41.9427882],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046094":{"id":"n2189046094","loc":[-85.6396746,41.9427886],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046096":{"id":"n2189046096","loc":[-85.6396758,41.9428296],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046097":{"id":"n2189046097","loc":[-85.6397007,41.9428292],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046099":{"id":"n2189046099","loc":[-85.6397018,41.9428686],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:43Z","tags":{}},"n2189046103":{"id":"n2189046103","loc":[-85.6396289,41.9428697],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046112":{"id":"n2189046112","loc":[-85.6435683,41.9429457],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046113":{"id":"n2189046113","loc":[-85.643568,41.9427766],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046115":{"id":"n2189046115","loc":[-85.6434011,41.9427767],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046116":{"id":"n2189046116","loc":[-85.6434012,41.9428631],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046117":{"id":"n2189046117","loc":[-85.643448,41.9428631],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046118":{"id":"n2189046118","loc":[-85.6434481,41.9429457],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046119":{"id":"n2189046119","loc":[-85.6428363,41.9429809],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046120":{"id":"n2189046120","loc":[-85.6429171,41.9429791],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046121":{"id":"n2189046121","loc":[-85.642914,41.9429041],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046122":{"id":"n2189046122","loc":[-85.6429385,41.9429035],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046123":{"id":"n2189046123","loc":[-85.6429348,41.9428126],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046124":{"id":"n2189046124","loc":[-85.6427746,41.9428163],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046125":{"id":"n2189046125","loc":[-85.6427783,41.942906],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046126":{"id":"n2189046126","loc":[-85.6428332,41.9429047],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046127":{"id":"n2189046127","loc":[-85.6423018,41.9428859],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046128":{"id":"n2189046128","loc":[-85.6422987,41.9427208],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046130":{"id":"n2189046130","loc":[-85.6424218,41.9427195],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046131":{"id":"n2189046131","loc":[-85.6424246,41.9428684],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046132":{"id":"n2189046132","loc":[-85.6423845,41.9428689],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046133":{"id":"n2189046133","loc":[-85.6423848,41.942885],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046134":{"id":"n2189046134","loc":[-85.641533,41.9429392],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046135":{"id":"n2189046135","loc":[-85.6416096,41.9428768],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046137":{"id":"n2189046137","loc":[-85.6416763,41.9429221],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046138":{"id":"n2189046138","loc":[-85.6415997,41.9429845],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046139":{"id":"n2189046139","loc":[-85.6420598,41.9428016],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046140":{"id":"n2189046140","loc":[-85.6420593,41.9427415],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046141":{"id":"n2189046141","loc":[-85.6421957,41.9427409],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046142":{"id":"n2189046142","loc":[-85.6421963,41.9428182],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046143":{"id":"n2189046143","loc":[-85.6421281,41.9428185],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046144":{"id":"n2189046144","loc":[-85.6421279,41.9428013],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046145":{"id":"n2189046145","loc":[-85.6409429,41.9429345],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046146":{"id":"n2189046146","loc":[-85.6410354,41.9429334],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046147":{"id":"n2189046147","loc":[-85.6410325,41.9427972],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046148":{"id":"n2189046148","loc":[-85.640997,41.9427976],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046149":{"id":"n2189046149","loc":[-85.6409963,41.9427643],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046150":{"id":"n2189046150","loc":[-85.6408605,41.9427659],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046152":{"id":"n2189046152","loc":[-85.6408623,41.9428482],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189046153":{"id":"n2189046153","loc":[-85.640941,41.9428473],"version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:44Z","tags":{}},"n2189152992":{"id":"n2189152992","loc":[-85.6437661,41.9422257],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152993":{"id":"n2189152993","loc":[-85.643768,41.9424067],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152994":{"id":"n2189152994","loc":[-85.6432176,41.9417705],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152995":{"id":"n2189152995","loc":[-85.6432097,41.941327],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152996":{"id":"n2189152996","loc":[-85.6436493,41.9413226],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152997":{"id":"n2189152997","loc":[-85.6436563,41.9417164],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152998":{"id":"n2189152998","loc":[-85.6435796,41.9417171],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189152999":{"id":"n2189152999","loc":[-85.6435805,41.9417669],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153000":{"id":"n2189153000","loc":[-85.6438202,41.9414953],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153001":{"id":"n2189153001","loc":[-85.6438173,41.9413175],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153004":{"id":"n2189153004","loc":[-85.6432535,41.9418466],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153005":{"id":"n2189153005","loc":[-85.6433935,41.9418599],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153006":{"id":"n2189153006","loc":[-85.6434831,41.9418986],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153007":{"id":"n2189153007","loc":[-85.6435678,41.9419774],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153008":{"id":"n2189153008","loc":[-85.6435987,41.9420282],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153009":{"id":"n2189153009","loc":[-85.643438,41.9419573],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153010":{"id":"n2189153010","loc":[-85.6435284,41.9424676],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153011":{"id":"n2189153011","loc":[-85.6436207,41.9423631],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153012":{"id":"n2189153012","loc":[-85.6434957,41.9422973],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153013":{"id":"n2189153013","loc":[-85.6434457,41.9422458],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153014":{"id":"n2189153014","loc":[-85.6433976,41.9421772],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153015":{"id":"n2189153015","loc":[-85.6433861,41.9420785],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153016":{"id":"n2189153016","loc":[-85.6433765,41.9420313],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153017":{"id":"n2189153017","loc":[-85.6432207,41.9420284],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153018":{"id":"n2189153018","loc":[-85.6432245,41.9422759],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153019":{"id":"n2189153019","loc":[-85.6432649,41.9423474],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153020":{"id":"n2189153020","loc":[-85.6433226,41.9424132],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153021":{"id":"n2189153021","loc":[-85.6434111,41.9424704],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153022":{"id":"n2189153022","loc":[-85.6434591,41.9424347],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153025":{"id":"n2189153025","loc":[-85.6437669,41.9423073],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153026":{"id":"n2189153026","loc":[-85.6436611,41.942293],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153027":{"id":"n2189153027","loc":[-85.6435784,41.9422473],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153028":{"id":"n2189153028","loc":[-85.6435245,41.9421443],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153029":{"id":"n2189153029","loc":[-85.6435149,41.9420613],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153030":{"id":"n2189153030","loc":[-85.6433528,41.9419269],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153031":{"id":"n2189153031","loc":[-85.6432535,41.9419191],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153032":{"id":"n2189153032","loc":[-85.6430868,41.9419198],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153033":{"id":"n2189153033","loc":[-85.6434894,41.9420033],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153034":{"id":"n2189153034","loc":[-85.6432974,41.9419225],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153035":{"id":"n2189153035","loc":[-85.6433055,41.9421632],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153036":{"id":"n2189153036","loc":[-85.6433538,41.9422849],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153037":{"id":"n2189153037","loc":[-85.6434718,41.9423887],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153038":{"id":"n2189153038","loc":[-85.6436134,41.9422667],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153040":{"id":"n2189153040","loc":[-85.6438759,41.9414017],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153041":{"id":"n2189153041","loc":[-85.6438181,41.9413687],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153042":{"id":"n2189153042","loc":[-85.6436821,41.9413044],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153043":{"id":"n2189153043","loc":[-85.6435899,41.9412862],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153044":{"id":"n2189153044","loc":[-85.6433169,41.9417268],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153045":{"id":"n2189153045","loc":[-85.643301,41.9412859],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153046":{"id":"n2189153046","loc":[-85.6435531,41.9416981],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n2189153047":{"id":"n2189153047","loc":[-85.6435427,41.9412863],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"n185948706":{"id":"n185948706","loc":[-85.6369439,41.940122],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185949348":{"id":"n185949348","loc":[-85.640039,41.931135],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:09Z","tags":{}},"n185949870":{"id":"n185949870","loc":[-85.643195,41.949261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185954680":{"id":"n185954680","loc":[-85.6337802,41.9401143],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954784":{"id":"n185954784","loc":[-85.6487485,41.942527],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185958670":{"id":"n185958670","loc":[-85.637255,41.940104],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958672":{"id":"n185958672","loc":[-85.636996,41.941355],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:31Z","tags":{}},"n185960207":{"id":"n185960207","loc":[-85.634992,41.940118],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:09Z","tags":{}},"n185963163":{"id":"n185963163","loc":[-85.638831,41.93398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963165":{"id":"n185963165","loc":[-85.640073,41.933968],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963167":{"id":"n185963167","loc":[-85.641225,41.933972],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185963168":{"id":"n185963168","loc":[-85.642386,41.933952],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:45Z","tags":{}},"n185964695":{"id":"n185964695","loc":[-85.6443608,41.9425645],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n185964697":{"id":"n185964697","loc":[-85.644384,41.939941],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:31Z","tags":{}},"n185964963":{"id":"n185964963","loc":[-85.6382347,41.9426146],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964965":{"id":"n185964965","loc":[-85.637022,41.942622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:40Z","tags":{}},"n185964967":{"id":"n185964967","loc":[-85.6363706,41.9426606],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964968":{"id":"n185964968","loc":[-85.6357988,41.9427748],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964969":{"id":"n185964969","loc":[-85.6355409,41.9428465],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185964970":{"id":"n185964970","loc":[-85.6348729,41.9430443],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185966958":{"id":"n185966958","loc":[-85.641946,41.946413],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185966960":{"id":"n185966960","loc":[-85.643148,41.946389],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185967774":{"id":"n185967774","loc":[-85.641889,41.943852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967775":{"id":"n185967775","loc":[-85.641922,41.945121],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967776":{"id":"n185967776","loc":[-85.641927,41.947544],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185967777":{"id":"n185967777","loc":[-85.641982,41.947622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:12Z","tags":{}},"n185969289":{"id":"n185969289","loc":[-85.63928,41.929221],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:52Z","tags":{}},"n185969704":{"id":"n185969704","loc":[-85.6388186,41.9350099],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969706":{"id":"n185969706","loc":[-85.6400709,41.9349957],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969708":{"id":"n185969708","loc":[-85.6412214,41.9349827],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185969710":{"id":"n185969710","loc":[-85.6423509,41.934974],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185970602":{"id":"n185970602","loc":[-85.641293,41.931817],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970604":{"id":"n185970604","loc":[-85.641258,41.932705],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970605":{"id":"n185970605","loc":[-85.641148,41.936984],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970606":{"id":"n185970606","loc":[-85.641112,41.938169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:43Z","tags":{}},"n185970906":{"id":"n185970906","loc":[-85.639454,41.943871],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:50Z","tags":{}},"n185970908":{"id":"n185970908","loc":[-85.6394635,41.9450504],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185970909":{"id":"n185970909","loc":[-85.6394914,41.9451911],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185971368":{"id":"n185971368","loc":[-85.635769,41.940122],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971978":{"id":"n185971978","loc":[-85.640003,41.936988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:14Z","tags":{}},"n185971980":{"id":"n185971980","loc":[-85.642299,41.936988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:14Z","tags":{}},"n185973633":{"id":"n185973633","loc":[-85.639023,41.92861],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973635":{"id":"n185973635","loc":[-85.639153,41.928969],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973637":{"id":"n185973637","loc":[-85.639213,41.929088],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973639":{"id":"n185973639","loc":[-85.63935,41.929396],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973641":{"id":"n185973641","loc":[-85.640143,41.931462],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973644":{"id":"n185973644","loc":[-85.64019,41.931788],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185973646":{"id":"n185973646","loc":[-85.6401365,41.9327199],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185973648":{"id":"n185973648","loc":[-85.639983,41.938174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:59Z","tags":{}},"n185974477":{"id":"n185974477","loc":[-85.638206,41.941331],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:18Z","tags":{}},"n185975928":{"id":"n185975928","loc":[-85.640683,41.94513],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185975930":{"id":"n185975930","loc":[-85.643102,41.945103],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185976255":{"id":"n185976255","loc":[-85.642424,41.931817],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976257":{"id":"n185976257","loc":[-85.64242,41.932699],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:24Z","tags":{}},"n185976258":{"id":"n185976258","loc":[-85.6422621,41.9381489],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n185977452":{"id":"n185977452","loc":[-85.6457497,41.9398834],"version":"3","changeset":"5841745","user":"themps","uid":"196173","visible":"true","timestamp":"2010-09-22T00:20:34Z","tags":{}},"n185978772":{"id":"n185978772","loc":[-85.646656,41.939869],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185981472":{"id":"n185981472","loc":[-85.6388962,41.9321266],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981474":{"id":"n185981474","loc":[-85.6388769,41.9327334],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185981476":{"id":"n185981476","loc":[-85.638829,41.934116],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981478":{"id":"n185981478","loc":[-85.63876,41.937002],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981480":{"id":"n185981480","loc":[-85.638682,41.93819],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:11Z","tags":{}},"n185981999":{"id":"n185981999","loc":[-85.638194,41.9400866],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n185982001":{"id":"n185982001","loc":[-85.646302,41.93988],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:26Z","tags":{}},"n185982877":{"id":"n185982877","loc":[-85.640676,41.943867],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:54Z","tags":{}},"n185982879":{"id":"n185982879","loc":[-85.640734,41.945887],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:54Z","tags":{}},"n185985823":{"id":"n185985823","loc":[-85.643106,41.943841],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185985824":{"id":"n185985824","loc":[-85.643145,41.947641],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185985825":{"id":"n185985825","loc":[-85.643219,41.950829],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n1475301385":{"id":"n1475301385","loc":[-85.6360612,41.9427042],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n1475301397":{"id":"n1475301397","loc":[-85.6366651,41.9426328],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:12Z","tags":{}},"n2139795811":{"id":"n2139795811","loc":[-85.6469154,41.9425427],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795830":{"id":"n2139795830","loc":[-85.6443194,41.9399444],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139795834":{"id":"n2139795834","loc":[-85.6453506,41.9399002],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139795837":{"id":"n2139795837","loc":[-85.645806,41.9398831],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139858932":{"id":"n2139858932","loc":[-85.6351721,41.9429557],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2140019000":{"id":"n2140019000","loc":[-85.6359935,41.9427224],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2165942817":{"id":"n2165942817","loc":[-85.6442017,41.9414993],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2165942820":{"id":"n2165942820","loc":[-85.6442107,41.9421159],"version":"1","changeset":"15116533","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-21T20:33:02Z","tags":{}},"n2189152990":{"id":"n2189152990","loc":[-85.6442328,41.942404],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:05Z","tags":{}},"n2189152991":{"id":"n2189152991","loc":[-85.6442309,41.9422229],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153002":{"id":"n2189153002","loc":[-85.6441329,41.9413147],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153003":{"id":"n2189153003","loc":[-85.6441357,41.9414925],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153023":{"id":"n2189153023","loc":[-85.6443453,41.9423074],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153024":{"id":"n2189153024","loc":[-85.6442318,41.9423045],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:06Z","tags":{}},"n2189153039":{"id":"n2189153039","loc":[-85.6441343,41.9414025],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:07Z","tags":{}},"w208643102":{"id":"w208643102","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153034","n2189153035","n2189153036","n2189153037","n2189153038"]},"w17966942":{"id":"w17966942","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:04Z","tags":{"highway":"residential","name":"Millard St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Millard","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312476:15312477:15312478:15326070:15326071:15329003:15329004:15312479:15312480:15312483:15326956:15326957:15312485:15312486:15322600:15325988","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185954680","n185960207","n185971368","n185948706","n185958670","n185981999","n185981481","n185981482","n185973650","n185973659","n185970607","n185976259","n185976261","n2139795830","n185964697","n2139795834","n185977452","n2139795837","n185982001","n185978772"]},"w208643105":{"id":"w208643105","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153046","n2189153047"]},"w208631637":{"id":"w208631637","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046014","n2189046016","n2189046018","n2189046021","n2189046022","n2189046025","n2189046014"]},"w208643096":{"id":"w208643096","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes","fee":"no"},"nodes":["n2189152990","n2189153024","n2189152991","n2189152992","n2189153025","n2189152993","n2189152990"]},"w208631656":{"id":"w208631656","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046134","n2189046135","n2189046137","n2189046138","n2189046134"]},"w204003417":{"id":"w204003417","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"area":"yes","building":"school"},"nodes":["n2140155811","n2140155814","n2140155816","n2140155818","n2140155821","n2140155823","n2140155825","n2140155827","n2140155811"]},"w208631654":{"id":"w208631654","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046127","n2189046128","n2189046130","n2189046131","n2189046132","n2189046133","n2189046127"]},"w17966327":{"id":"w17966327","version":"3","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{"highway":"residential","name":"S Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185976261","n2140155839","n2140155834","n185974481","n2189153032","n185964959"]},"w41785752":{"id":"w41785752","version":"10","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no","access":"yes"},"nodes":["n185954784","n2139795811","n185964695","n185964959","n185964960","n185964961","n185964962","n185964963","n185964965","n1475301397","n185964967","n1475301385","n2140019000","n185964968","n185964969","n2139858932","n185964970"]},"w203841842":{"id":"w203841842","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"playground"},"nodes":["n2138493848","n2138493849","n2138493850","n2138493851","n2138493852","n2138493853","n2138493854","n2138493855","n2138493856","n2138493848"]},"w208643103":{"id":"w208643103","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service"},"nodes":["n2189153039","n2189153040","n2189153041","n2189153042","n2189153043","n2189153047","n2189153045","n185974481"]},"w208643098":{"id":"w208643098","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153000","n2189153041","n2189153001","n2189153002","n2189153039","n2189153003","n2189153000"]},"w208631646":{"id":"w208631646","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046067","n2189046069","n2189046070","n2189046072","n2189046067"]},"w208631653":{"id":"w208631653","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046119","n2189046120","n2189046121","n2189046122","n2189046123","n2189046124","n2189046125","n2189046126","n2189046119"]},"w17966041":{"id":"w17966041","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:50Z","tags":{"highway":"residential","name":"S Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312474:15312448","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185973659","n185973660","n185964961"]},"w208631645":{"id":"w208631645","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046060","n2189046061","n2189046063","n2189046065","n2189046060"]},"w206803397":{"id":"w206803397","version":"1","changeset":"15132039","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:10:25Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168510551","n2168510552","n2168510553","n2168510554","n2168510555","n2168510556","n2168510557","n2168510558","n2168510551"]},"w17965792":{"id":"w17965792","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:10Z","tags":{"highway":"residential","name":"N Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313197:15312414:15312395","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964962","n185970906","n185970908","n185970909"]},"w208631651":{"id":"w208631651","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046112","n2189046113","n2189046115","n2189046116","n2189046117","n2189046118","n2189046112"]},"w208631643":{"id":"w208631643","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046053","n2189046054","n2189046055","n2189046056","n2189046058","n2189046059","n2189046053"]},"w17966878":{"id":"w17966878","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:48:03Z","tags":{"highway":"residential","name":"S Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312508:15312529:15312553:15312597:15328883:15338803","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981472","n185981474","n185963163","n185981476","n185969704","n185981478","n185981480","n185981481"]},"w17966102":{"id":"w17966102","version":"2","changeset":"14896694","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:01:36Z","tags":{"highway":"residential","name":"South St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"South","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312446","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958672","n185974477","n185974479","n185973660","n185970614"]},"w208631660":{"id":"w208631660","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046145","n2189046146","n2189046147","n2189046148","n2189046149","n2189046150","n2189046152","n2189046153","n2189046145"]},"w208643101":{"id":"w208643101","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service"},"nodes":["n2189153023","n2189153024","n2189153025","n2189153026","n2189153038","n2189153027","n2189153028","n2189153029","n2189153033","n2189153009","n2189153030","n2189153034","n2189153031","n2189153032"]},"w204000205":{"id":"w204000205","version":"2","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:19Z","tags":{"highway":"residential","name":"South St","oneway":"yes","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"South","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312446","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185974481","n2140155851","n185970614"]},"w203841841":{"id":"w203841841","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"pitch","pitch":"basketball"},"nodes":["n2138493844","n2138493845","n2138493846","n2138493847","n2138493844"]},"w17965444":{"id":"w17965444","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:37:03Z","tags":{"highway":"residential","name":"N Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312348:15312365:15312422:15312392","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964960","n185967774","n185967775","n185966958","n185967776","n185967777"]},"w208631648":{"id":"w208631648","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046074","n2189046075","n2189046077","n2189046079","n2189046082","n2189046083","n2189046085","n2189046087","n2189046089","n2189046090","n2189046092","n2189046094","n2189046096","n2189046097","n2189046099","n2189046103","n2189046074"]},"w208643100":{"id":"w208643100","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153010","n2189153011","n2189153012","n2189153013","n2189153014","n2189153015","n2189153016","n2189153017","n2189153018","n2189153019","n2189153020","n2189153021","n2189153022","n2189153010"]},"w17965749":{"id":"w17965749","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:28Z","tags":{"highway":"residential","name":"S Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312445","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970614","n185970616","n185964960"]},"w206574482":{"id":"w206574482","version":"2","changeset":"15128027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-22T20:03:31Z","tags":{"addr:state":"MI","amenity":"library","area":"yes","building":"yes","ele":"249","gnis:county_name":"St. Joseph","gnis:feature_id":"2418162","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"Three Rivers Public Library","source":"USGS Geonames"},"nodes":["n2165942817","n2165942818","n2165942819","n2165942820","n2165942817"]},"w208643097":{"id":"w208643097","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189152994","n2189152995","n2189152996","n2189152997","n2189152998","n2189152999","n2189152994"]},"w17966879":{"id":"w17966879","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:48:03Z","tags":{"highway":"residential","name":"S Hooker Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hooker","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312475:15312449","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981482","n185974479","n185964962"]},"w17966325":{"id":"w17966325","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:43:58Z","tags":{"highway":"residential","name":"S Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15330300:15312522:15312547:15330299:15312603:15312571:15331740","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185976255","n185976257","n185963168","n185969710","n185971980","n185976258","n185954700","n185976259"]},"w17967390":{"id":"w17967390","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:27Z","tags":{"highway":"residential","name":"N Douglas Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Douglas","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312300","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185964959","n185985823","n185975930","n185966960","n185985824","n185949870","n185985825"]},"w208631635":{"id":"w208631635","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046007","n2189046009","n2189046011","n2189046012","n2189046007"]},"w208643099":{"id":"w208643099","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153031","n2189153004","n2189153005","n2189153006","n2189153007","n2189153008","n2189153029","n2189153033","n2189153009","n2189153030","n2189153031"]},"w208631658":{"id":"w208631658","version":"1","changeset":"15276417","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:05:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189046139","n2189046140","n2189046141","n2189046142","n2189046143","n2189046144","n2189046139"]},"w208643104":{"id":"w208643104","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153044","n2189153045"]},"w17966039":{"id":"w17966039","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:49Z","tags":{"highway":"residential","name":"S Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312526:15312511:15312550:15312601:15312998:15312626:15312574:15328327:15328328:15313210","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185973633","n185973635","n185973637","n185969289","n185973639","n185949348","n185973641","n185973644","n185973646","n185963165","n185969706","n185971978","n185973648","n185973650"]},"w204003420":{"id":"w204003420","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2140155840","n2140155842","n2140155844","n2140155845","n2140155847","n2140155849","n2140155854","n2140155840"]},"w204003419":{"id":"w204003419","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"highway":"service"},"nodes":["n2140155834","n2140155835","n2140155837","n2140155839"]},"w204003418":{"id":"w204003418","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"amenity":"school","area":"yes","name":"Andrews Elementary School"},"nodes":["n2140155828","n2140155829","n2140155830","n2140155831","n2140155832","n2140155833","n2140155828"]},"w17965747":{"id":"w17965747","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:27Z","tags":{"highway":"residential","name":"S Grant Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Grant","tiger:name_direction_prefix":"S","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312509:15312524:15312549:15312605:15329008:15312572","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970602","n185970604","n185963167","n185969708","n185970605","n185970606","n185970607"]},"w17967073":{"id":"w17967073","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:07Z","tags":{"highway":"residential","name":"N Lincoln Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lincoln","tiger:name_direction_prefix":"N","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313196:15312424:15312394","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964961","n185982877","n185975928","n185982879"]},"w204003421":{"id":"w204003421","version":"1","changeset":"14897169","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T14:35:18Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2140155851","n2140155852","n2140155854","n2140155856"]},"r1943857":{"id":"r1943857","version":"2","changeset":"13612265","user":"migurski","uid":"8287","visible":"true","timestamp":"2012-10-24T04:10:54Z","tags":{"is_in:state":"MI","modifier":"Business","name":"US 131 Business (Three Rivers, MI)","network":"US:US","ref":"131","route":"road","type":"route"},"members":[{"id":"w17966509","type":"way","role":"forward"},{"id":"w143497377","type":"way","role":""},{"id":"w134150811","type":"way","role":""},{"id":"w134150800","type":"way","role":""},{"id":"w134150789","type":"way","role":""},{"id":"w134150795","type":"way","role":""},{"id":"w41785752","type":"way","role":""},{"id":"w17965146","type":"way","role":"forward"},{"id":"w17964031","type":"way","role":"forward"}]},"r270277":{"id":"r270277","version":"21","changeset":"15347356","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T03:41:02Z","tags":{"network":"US:MI","ref":"60","route":"road","state_id":"MI","type":"route","url":"http://en.wikipedia.org/wiki/M-60_%28Michigan_highway%29"},"members":[{"id":"w17751087","type":"way","role":"east"},{"id":"w117148312","type":"way","role":"east"},{"id":"w40942155","type":"way","role":"west"},{"id":"w17751017","type":"way","role":""},{"id":"w17751083","type":"way","role":""},{"id":"w17747780","type":"way","role":""},{"id":"w41068082","type":"way","role":""},{"id":"w197025212","type":"way","role":""},{"id":"w17743874","type":"way","role":""},{"id":"w17751044","type":"way","role":""},{"id":"w17752167","type":"way","role":""},{"id":"w17751089","type":"way","role":""},{"id":"w17743879","type":"way","role":""},{"id":"w17751064","type":"way","role":""},{"id":"w197057073","type":"way","role":""},{"id":"w167699963","type":"way","role":""},{"id":"w167699972","type":"way","role":""},{"id":"w17967584","type":"way","role":""},{"id":"w167699964","type":"way","role":""},{"id":"w17967582","type":"way","role":"west"},{"id":"w41260270","type":"way","role":"west"},{"id":"w17965146","type":"way","role":"west"},{"id":"w41785752","type":"way","role":""},{"id":"w134150795","type":"way","role":""},{"id":"w134150789","type":"way","role":""},{"id":"w134150800","type":"way","role":""},{"id":"w134150811","type":"way","role":""},{"id":"w134150836","type":"way","role":""},{"id":"w134150802","type":"way","role":""},{"id":"w41074896","type":"way","role":""},{"id":"w17966773","type":"way","role":""},{"id":"w17967415","type":"way","role":""},{"id":"w41074899","type":"way","role":""},{"id":"w17967581","type":"way","role":""},{"id":"w41074902","type":"way","role":""},{"id":"w41074906","type":"way","role":""},{"id":"w209707997","type":"way","role":""},{"id":"w209707998","type":"way","role":""},{"id":"w17964798","type":"way","role":""},{"id":"w17966034","type":"way","role":""},{"id":"w17967593","type":"way","role":""},{"id":"w41074888","type":"way","role":""},{"id":"w17733772","type":"way","role":""},{"id":"w41074813","type":"way","role":""},{"id":"w17742213","type":"way","role":""},{"id":"w17746863","type":"way","role":""},{"id":"w17745772","type":"way","role":""},{"id":"w17742222","type":"way","role":""},{"id":"w17745922","type":"way","role":""},{"id":"w17742198","type":"way","role":""},{"id":"w17747675","type":"way","role":""},{"id":"w17739927","type":"way","role":""},{"id":"w17745708","type":"way","role":""},{"id":"w41006323","type":"way","role":""},{"id":"w17744233","type":"way","role":""},{"id":"w17739436","type":"way","role":""},{"id":"w17742201","type":"way","role":""},{"id":"w151418616","type":"way","role":""},{"id":"w17750062","type":"way","role":""},{"id":"w17742227","type":"way","role":"east"},{"id":"w41006348","type":"way","role":"east"},{"id":"w41260984","type":"way","role":""},{"id":"w17832427","type":"way","role":""},{"id":"w17838408","type":"way","role":""},{"id":"w17835846","type":"way","role":""},{"id":"w17832923","type":"way","role":""},{"id":"w17839388","type":"way","role":""},{"id":"w17838390","type":"way","role":""},{"id":"w17831272","type":"way","role":""},{"id":"w17828581","type":"way","role":""},{"id":"w38240686","type":"way","role":""},{"id":"w17838405","type":"way","role":"east"},{"id":"w123323711","type":"way","role":"east"},{"id":"w17830167","type":"way","role":"east"},{"id":"w99011909","type":"way","role":"east"},{"id":"w41911361","type":"way","role":"east"},{"id":"w41911355","type":"way","role":"east"},{"id":"w41911356","type":"way","role":"east"},{"id":"w117148326","type":"way","role":"west"},{"id":"w41911352","type":"way","role":"west"},{"id":"w41911353","type":"way","role":"west"},{"id":"w41911354","type":"way","role":"west"},{"id":"w41911360","type":"way","role":"west"},{"id":"w38240676","type":"way","role":"west"},{"id":"w123323710","type":"way","role":"west"},{"id":"w41260271","type":"way","role":"east"},{"id":"w41260273","type":"way","role":"east"},{"id":"w17964031","type":"way","role":"east"},{"id":"w41006344","type":"way","role":"west"},{"id":"w41006351","type":"way","role":"west"}]},"n367813436":{"id":"n367813436","loc":[-85.63605205663384,41.94305506683346],"version":"2","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"addr:state":"MI","amenity":"fire_station","ele":"245","gnis:county_name":"St. Joseph","gnis:feature_id":"2417894","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"Three Rivers Fire Department","source":"USGS Geonames"}},"n185948708":{"id":"n185948708","loc":[-85.6369828,41.9408789],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185948710":{"id":"n185948710","loc":[-85.6370184,41.9411346],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T20:04:13Z","tags":{}},"n185954691":{"id":"n185954691","loc":[-85.634476,41.941475],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:32Z","tags":{}},"n185954692":{"id":"n185954692","loc":[-85.635008,41.941846],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:32Z","tags":{}},"n185954693":{"id":"n185954693","loc":[-85.635362,41.941962],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185954695":{"id":"n185954695","loc":[-85.63578,41.941978],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:33Z","tags":{}},"n185972903":{"id":"n185972903","loc":[-85.63295,41.9430062],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185964971":{"id":"n185964971","loc":[-85.6346811,41.9431023],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n1819805854":{"id":"n1819805854","loc":[-85.6331275,41.9404837],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805918":{"id":"n1819805918","loc":[-85.6331168,41.942798],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805762":{"id":"n1819805762","loc":[-85.6333034,41.9424123],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819805907":{"id":"n1819805907","loc":[-85.6334819,41.9419121],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819805915":{"id":"n1819805915","loc":[-85.6334554,41.9413588],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n1819848888":{"id":"n1819848888","loc":[-85.6331625,41.942679],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848930":{"id":"n1819848930","loc":[-85.6338684,41.9431252],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819858505":{"id":"n1819858505","loc":[-85.6346782,41.9429092],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858507":{"id":"n1819858507","loc":[-85.6339003,41.9414534],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858508":{"id":"n1819858508","loc":[-85.6345709,41.9427742],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858509":{"id":"n1819858509","loc":[-85.63419,41.9417322],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858511":{"id":"n1819858511","loc":[-85.6340666,41.9415652],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858512":{"id":"n1819858512","loc":[-85.6343295,41.9423027],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858514":{"id":"n1819858514","loc":[-85.6343241,41.942207],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858521":{"id":"n1819858521","loc":[-85.633391,41.941231],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858528":{"id":"n1819858528","loc":[-85.6343027,41.9419716],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185954683":{"id":"n185954683","loc":[-85.6335412,41.940147],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954685":{"id":"n185954685","loc":[-85.6334296,41.9403023],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954687":{"id":"n185954687","loc":[-85.6333988,41.9404704],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954689":{"id":"n185954689","loc":[-85.6335511,41.9410225],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185954690":{"id":"n185954690","loc":[-85.6336721,41.9411669],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n1820938802":{"id":"n1820938802","loc":[-85.6330671,41.941845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1821006702":{"id":"n1821006702","loc":[-85.6344047,41.9395496],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n2130304133":{"id":"n2130304133","loc":[-85.6349025,41.9427659],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304136":{"id":"n2130304136","loc":[-85.6346027,41.9422017],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304138":{"id":"n2130304138","loc":[-85.6348577,41.9421517],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304140":{"id":"n2130304140","loc":[-85.6348419,41.9422694],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304142":{"id":"n2130304142","loc":[-85.6349071,41.9423135],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304144":{"id":"n2130304144","loc":[-85.6350495,41.9423312],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304146":{"id":"n2130304146","loc":[-85.6351009,41.9422812],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304147":{"id":"n2130304147","loc":[-85.6351227,41.9421532],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304148":{"id":"n2130304148","loc":[-85.635526,41.9421547],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304149":{"id":"n2130304149","loc":[-85.6355339,41.9425768],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304150":{"id":"n2130304150","loc":[-85.6351582,41.9426562],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304151":{"id":"n2130304151","loc":[-85.6351207,41.9427032],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2138493807":{"id":"n2138493807","loc":[-85.6350923,41.9415216],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493808":{"id":"n2138493808","loc":[-85.6353603,41.9411061],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493809":{"id":"n2138493809","loc":[-85.6354421,41.9410942],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493810":{"id":"n2138493810","loc":[-85.6355079,41.9411044],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493811":{"id":"n2138493811","loc":[-85.6355693,41.9411246],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493812":{"id":"n2138493812","loc":[-85.6355829,41.9411061],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493813":{"id":"n2138493813","loc":[-85.6355624,41.9409777],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493814":{"id":"n2138493814","loc":[-85.6355011,41.9409152],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493815":{"id":"n2138493815","loc":[-85.635383,41.9409219],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493816":{"id":"n2138493816","loc":[-85.635299,41.9409658],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493817":{"id":"n2138493817","loc":[-85.6351695,41.941204],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493818":{"id":"n2138493818","loc":[-85.6348879,41.9415166],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493819":{"id":"n2138493819","loc":[-85.634897,41.9415757],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493820":{"id":"n2138493820","loc":[-85.6349606,41.9416399],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493821":{"id":"n2138493821","loc":[-85.6350219,41.9416669],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493822":{"id":"n2138493822","loc":[-85.6351241,41.9416314],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493823":{"id":"n2138493823","loc":[-85.6350855,41.9415622],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493824":{"id":"n2138493824","loc":[-85.6350401,41.9413603],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493825":{"id":"n2138493825","loc":[-85.6352206,41.9410765],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493826":{"id":"n2138493826","loc":[-85.6343865,41.9415594],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493827":{"id":"n2138493827","loc":[-85.6343506,41.9415873],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493828":{"id":"n2138493828","loc":[-85.6344158,41.9417557],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493829":{"id":"n2138493829","loc":[-85.6344614,41.9417968],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493830":{"id":"n2138493830","loc":[-85.6345005,41.9418186],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493831":{"id":"n2138493831","loc":[-85.6345965,41.9418162],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493832":{"id":"n2138493832","loc":[-85.6347317,41.9417242],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493833":{"id":"n2138493833","loc":[-85.6346722,41.941775],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2139858909":{"id":"n2139858909","loc":[-85.633403,41.9391006],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858910":{"id":"n2139858910","loc":[-85.6332973,41.9393967],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858911":{"id":"n2139858911","loc":[-85.633205,41.9396742],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858912":{"id":"n2139858912","loc":[-85.6332203,41.9397772],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858913":{"id":"n2139858913","loc":[-85.6333453,41.939936],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858914":{"id":"n2139858914","loc":[-85.6333761,41.9400018],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858915":{"id":"n2139858915","loc":[-85.63328,41.9402249],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858916":{"id":"n2139858916","loc":[-85.6332357,41.9403523],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858917":{"id":"n2139858917","loc":[-85.6332838,41.9405831],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858918":{"id":"n2139858918","loc":[-85.6333643,41.9408744],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858919":{"id":"n2139858919","loc":[-85.6334394,41.9410519],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858920":{"id":"n2139858920","loc":[-85.6335815,41.9411717],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858921":{"id":"n2139858921","loc":[-85.6337478,41.9412734],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858922":{"id":"n2139858922","loc":[-85.6343174,41.9415268],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858923":{"id":"n2139858923","loc":[-85.6343886,41.9417397],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858924":{"id":"n2139858924","loc":[-85.6344407,41.9418015],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858925":{"id":"n2139858925","loc":[-85.6345139,41.9418366],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858926":{"id":"n2139858926","loc":[-85.6344846,41.942005],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858927":{"id":"n2139858927","loc":[-85.6345775,41.9422218],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858928":{"id":"n2139858928","loc":[-85.6348771,41.9427814],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858929":{"id":"n2139858929","loc":[-85.6349487,41.9427995],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858930":{"id":"n2139858930","loc":[-85.6350415,41.9427874],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858931":{"id":"n2139858931","loc":[-85.6351246,41.9428589],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858978":{"id":"n2139858978","loc":[-85.6349658,41.9431481],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858979":{"id":"n2139858979","loc":[-85.6350081,41.9431287],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858980":{"id":"n2139858980","loc":[-85.6349967,41.9430997],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858981":{"id":"n2139858981","loc":[-85.6352158,41.9430352],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858982":{"id":"n2139858982","loc":[-85.6348174,41.94267],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858983":{"id":"n2139858983","loc":[-85.6346142,41.9425989],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858984":{"id":"n2139858984","loc":[-85.6344938,41.9423809],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858985":{"id":"n2139858985","loc":[-85.6344856,41.9422997],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139870380":{"id":"n2139870380","loc":[-85.6346707,41.9417955],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870381":{"id":"n2139870381","loc":[-85.6345949,41.9418311],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870382":{"id":"n2139870382","loc":[-85.6343322,41.9418659],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870383":{"id":"n2139870383","loc":[-85.6342072,41.941885],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870384":{"id":"n2139870384","loc":[-85.6341325,41.9418919],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870385":{"id":"n2139870385","loc":[-85.6341314,41.9422028],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870386":{"id":"n2139870386","loc":[-85.6340472,41.9423271],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870387":{"id":"n2139870387","loc":[-85.6342185,41.9427933],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870388":{"id":"n2139870388","loc":[-85.6340605,41.9423924],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870389":{"id":"n2139870389","loc":[-85.6339889,41.9424069],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870390":{"id":"n2139870390","loc":[-85.633971,41.942356],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870391":{"id":"n2139870391","loc":[-85.63361,41.9424235],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870392":{"id":"n2139870392","loc":[-85.6337137,41.9426819],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870393":{"id":"n2139870393","loc":[-85.6336977,41.9428632],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870394":{"id":"n2139870394","loc":[-85.6338823,41.9428647],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870395":{"id":"n2139870395","loc":[-85.6339412,41.9430069],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870396":{"id":"n2139870396","loc":[-85.6338873,41.9430353],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870397":{"id":"n2139870397","loc":[-85.6337676,41.942815],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870398":{"id":"n2139870398","loc":[-85.6336822,41.9423505],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870399":{"id":"n2139870399","loc":[-85.634037,41.9422725],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870400":{"id":"n2139870400","loc":[-85.6340294,41.9422518],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870401":{"id":"n2139870401","loc":[-85.6336726,41.9423312],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870402":{"id":"n2139870402","loc":[-85.6342188,41.9425715],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870403":{"id":"n2139870403","loc":[-85.6342524,41.942565],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870404":{"id":"n2139870404","loc":[-85.6341438,41.942299],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870405":{"id":"n2139870405","loc":[-85.6341149,41.9423061],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870407":{"id":"n2139870407","loc":[-85.6340846,41.9431458],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870408":{"id":"n2139870408","loc":[-85.6339436,41.9429032],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870409":{"id":"n2139870409","loc":[-85.6343143,41.9428207],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870410":{"id":"n2139870410","loc":[-85.6343507,41.94277],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870411":{"id":"n2139870411","loc":[-85.6341527,41.942254],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870412":{"id":"n2139870412","loc":[-85.6340925,41.9422199],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870413":{"id":"n2139870413","loc":[-85.6335435,41.9423433],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870414":{"id":"n2139870414","loc":[-85.6335023,41.9423975],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870415":{"id":"n2139870415","loc":[-85.6335086,41.9424552],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870416":{"id":"n2139870416","loc":[-85.6336296,41.942665],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870417":{"id":"n2139870417","loc":[-85.6341396,41.9428596],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870418":{"id":"n2139870418","loc":[-85.6339701,41.9424487],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870419":{"id":"n2139870419","loc":[-85.6335514,41.9425294],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870420":{"id":"n2139870420","loc":[-85.6337406,41.9424929],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870421":{"id":"n2139870421","loc":[-85.6338939,41.9428687],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870422":{"id":"n2139870422","loc":[-85.6341323,41.9419538],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870423":{"id":"n2139870423","loc":[-85.6340321,41.9420376],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870424":{"id":"n2139870424","loc":[-85.6337648,41.942238],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870425":{"id":"n2139870425","loc":[-85.6337604,41.9422685],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870426":{"id":"n2139870426","loc":[-85.6337682,41.9422928],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870427":{"id":"n2139870427","loc":[-85.6338086,41.9423862],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870428":{"id":"n2139870428","loc":[-85.6349465,41.9416631],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870429":{"id":"n2139870429","loc":[-85.6351097,41.9416973],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870430":{"id":"n2139870430","loc":[-85.6353371,41.9416798],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870431":{"id":"n2139870431","loc":[-85.6349627,41.9422506],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870432":{"id":"n2139870432","loc":[-85.634979,41.9421815],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870433":{"id":"n2139870433","loc":[-85.634885,41.9421679],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870434":{"id":"n2139870434","loc":[-85.6348689,41.9422377],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870435":{"id":"n2139870435","loc":[-85.6349779,41.9419486],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870436":{"id":"n2139870436","loc":[-85.6349505,41.9418933],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870437":{"id":"n2139870437","loc":[-85.6347327,41.9419505],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870438":{"id":"n2139870438","loc":[-85.6347614,41.9420087],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870439":{"id":"n2139870439","loc":[-85.6351889,41.9416912],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870440":{"id":"n2139870440","loc":[-85.6351092,41.9418426],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870441":{"id":"n2139870441","loc":[-85.635086,41.9419659],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870442":{"id":"n2139870442","loc":[-85.6350584,41.9421466],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870443":{"id":"n2139870443","loc":[-85.6350993,41.9421606],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870444":{"id":"n2139870444","loc":[-85.6350993,41.9422132],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870445":{"id":"n2139870445","loc":[-85.6350794,41.9422855],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870446":{"id":"n2139870446","loc":[-85.6350474,41.9423159],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870447":{"id":"n2139870447","loc":[-85.6349251,41.9422998],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870448":{"id":"n2139870448","loc":[-85.634911,41.9422755],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870449":{"id":"n2139870449","loc":[-85.6349157,41.9422553],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870450":{"id":"n2139870450","loc":[-85.6347213,41.9419324],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870451":{"id":"n2139870451","loc":[-85.6349535,41.9418771],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139870452":{"id":"n2139870452","loc":[-85.6350135,41.9419421],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870453":{"id":"n2139870453","loc":[-85.6348584,41.9418997],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870454":{"id":"n2139870454","loc":[-85.6348113,41.9418101],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870455":{"id":"n2139870455","loc":[-85.6347306,41.9417449],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870456":{"id":"n2139870456","loc":[-85.6349123,41.941776],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870457":{"id":"n2139870457","loc":[-85.6349423,41.9421448],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870458":{"id":"n2139870458","loc":[-85.6349436,41.9420652],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870459":{"id":"n2139870459","loc":[-85.6349136,41.9419963],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139870460":{"id":"n2139870460","loc":[-85.6349814,41.9419789],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{}},"n2139989328":{"id":"n2139989328","loc":[-85.6334188,41.9421725],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989330":{"id":"n2139989330","loc":[-85.6335087,41.9416308],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989335":{"id":"n2139989335","loc":[-85.6336856,41.9429371],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989337":{"id":"n2139989337","loc":[-85.6333713,41.9427217],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989339":{"id":"n2139989339","loc":[-85.6332912,41.9425383],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989341":{"id":"n2139989341","loc":[-85.6339369,41.9409198],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989344":{"id":"n2139989344","loc":[-85.634097,41.9409469],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989346":{"id":"n2139989346","loc":[-85.634137,41.9412852],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989348":{"id":"n2139989348","loc":[-85.6344536,41.9414151],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989350":{"id":"n2139989350","loc":[-85.6350794,41.9412392],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989351":{"id":"n2139989351","loc":[-85.6352541,41.9409387],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989353":{"id":"n2139989353","loc":[-85.6357198,41.9408007],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989355":{"id":"n2139989355","loc":[-85.6357235,41.9427088],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989357":{"id":"n2139989357","loc":[-85.6337119,41.9421256],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989359":{"id":"n2139989359","loc":[-85.6336913,41.9420655],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989360":{"id":"n2139989360","loc":[-85.633582,41.9420867],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989362":{"id":"n2139989362","loc":[-85.6336058,41.9421491],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989364":{"id":"n2139989364","loc":[-85.6339685,41.9410995],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989366":{"id":"n2139989366","loc":[-85.6339067,41.9411383],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989368":{"id":"n2139989368","loc":[-85.6339685,41.9411972],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139989370":{"id":"n2139989370","loc":[-85.6340398,41.9411619],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2139870379":{"id":"n2139870379","loc":[-85.6348391,41.9416651],"version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2140006363":{"id":"n2140006363","loc":[-85.6353144,41.9430345],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006364":{"id":"n2140006364","loc":[-85.6349191,41.9431422],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140018997":{"id":"n2140018997","loc":[-85.63645945147184,41.942986488012565],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"amenity":"townhall","name":"Three Rivers City Hall"}},"n2140018998":{"id":"n2140018998","loc":[-85.6370319,41.9427919],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2140018999":{"id":"n2140018999","loc":[-85.6360687,41.9427808],"version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{}},"n2199856288":{"id":"n2199856288","loc":[-85.6344968,41.9407307],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856289":{"id":"n2199856289","loc":[-85.634492,41.9406036],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856290":{"id":"n2199856290","loc":[-85.634891,41.9406001],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856291":{"id":"n2199856291","loc":[-85.6348894,41.9405288],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856292":{"id":"n2199856292","loc":[-85.6349166,41.94053],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856293":{"id":"n2199856293","loc":[-85.6349166,41.9404956],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856294":{"id":"n2199856294","loc":[-85.6350219,41.9404956],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856295":{"id":"n2199856295","loc":[-85.6350251,41.94053],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856296":{"id":"n2199856296","loc":[-85.6350538,41.9405288],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856297":{"id":"n2199856297","loc":[-85.6350602,41.94079],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856298":{"id":"n2199856298","loc":[-85.6351703,41.9407912],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856299":{"id":"n2199856299","loc":[-85.6351688,41.9409171],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856300":{"id":"n2199856300","loc":[-85.6347889,41.9409135],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856301":{"id":"n2199856301","loc":[-85.6347921,41.94079],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856302":{"id":"n2199856302","loc":[-85.6348942,41.9407888],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n2199856303":{"id":"n2199856303","loc":[-85.6348926,41.9407283],"version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{}},"n185951869":{"id":"n185951869","loc":[-85.6387639,41.957288],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185958643":{"id":"n185958643","loc":[-85.636746,41.929221],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958645":{"id":"n185958645","loc":[-85.636791,41.929363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958647":{"id":"n185958647","loc":[-85.6375975,41.9314987],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185958649":{"id":"n185958649","loc":[-85.637669,41.931667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958651":{"id":"n185958651","loc":[-85.637728,41.931901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958653":{"id":"n185958653","loc":[-85.637724,41.932187],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958656":{"id":"n185958656","loc":[-85.637732,41.932761],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958658":{"id":"n185958658","loc":[-85.637688,41.93398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958660":{"id":"n185958660","loc":[-85.637685,41.934223],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958662":{"id":"n185958662","loc":[-85.6376468,41.9350232],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185958664":{"id":"n185958664","loc":[-85.637564,41.937028],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958666":{"id":"n185958666","loc":[-85.637458,41.938197],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185958668":{"id":"n185958668","loc":[-85.637424,41.938692],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:30Z","tags":{}},"n185964972":{"id":"n185964972","loc":[-85.6341901,41.9432732],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185971361":{"id":"n185971361","loc":[-85.635762,41.938208],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971364":{"id":"n185971364","loc":[-85.635732,41.9384],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185971366":{"id":"n185971366","loc":[-85.635736,41.938697],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:01Z","tags":{}},"n185972775":{"id":"n185972775","loc":[-85.635638,42.070357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972777":{"id":"n185972777","loc":[-85.635724,42.069929],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972779":{"id":"n185972779","loc":[-85.635804,42.069248],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972781":{"id":"n185972781","loc":[-85.635869,42.068361],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972783":{"id":"n185972783","loc":[-85.635883,42.067582],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972785":{"id":"n185972785","loc":[-85.635875,42.067114],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972787":{"id":"n185972787","loc":[-85.635778,42.065359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972788":{"id":"n185972788","loc":[-85.635728,42.063416],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972789":{"id":"n185972789","loc":[-85.635665,42.062491],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972790":{"id":"n185972790","loc":[-85.635617,42.061928],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972791":{"id":"n185972791","loc":[-85.635614,42.061898],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972793":{"id":"n185972793","loc":[-85.635379,42.060288],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972795":{"id":"n185972795","loc":[-85.635092,42.05799],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972797":{"id":"n185972797","loc":[-85.634843,42.055781],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972798":{"id":"n185972798","loc":[-85.634817,42.055549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:36Z","tags":{}},"n185972800":{"id":"n185972800","loc":[-85.634708,42.053942],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972802":{"id":"n185972802","loc":[-85.634447,42.051809],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972805":{"id":"n185972805","loc":[-85.634241,42.04946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972807":{"id":"n185972807","loc":[-85.633787,42.045926],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972809":{"id":"n185972809","loc":[-85.633811,42.045645],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972811":{"id":"n185972811","loc":[-85.63373,42.043626],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972813":{"id":"n185972813","loc":[-85.633698,42.042184],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972814":{"id":"n185972814","loc":[-85.63369,42.04181],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972815":{"id":"n185972815","loc":[-85.633681,42.040714],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972816":{"id":"n185972816","loc":[-85.633571,42.036322],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972817":{"id":"n185972817","loc":[-85.633537,42.034044],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972819":{"id":"n185972819","loc":[-85.633481,42.030785],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972821":{"id":"n185972821","loc":[-85.633452,42.027538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972824":{"id":"n185972824","loc":[-85.633438,42.027427],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972826":{"id":"n185972826","loc":[-85.633342,42.022656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972830":{"id":"n185972830","loc":[-85.63327,42.020724],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972832":{"id":"n185972832","loc":[-85.633198,42.019106],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972834":{"id":"n185972834","loc":[-85.633249,42.018363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972835":{"id":"n185972835","loc":[-85.633139,42.012944],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:37Z","tags":{}},"n185972836":{"id":"n185972836","loc":[-85.63309,42.008284],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:38Z","tags":{}},"n185972839":{"id":"n185972839","loc":[-85.63298,42.00005],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:38Z","tags":{}},"n185972845":{"id":"n185972845","loc":[-85.6325369,41.9764959],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972847":{"id":"n185972847","loc":[-85.6327549,41.9750005],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972849":{"id":"n185972849","loc":[-85.6329374,41.9742527],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972851":{"id":"n185972851","loc":[-85.6331387,41.9736039],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972862":{"id":"n185972862","loc":[-85.6383589,41.9585023],"version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185972868":{"id":"n185972868","loc":[-85.6393633,41.9551716],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972878":{"id":"n185972878","loc":[-85.639377,41.95335],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972882":{"id":"n185972882","loc":[-85.6389179,41.9516944],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972885":{"id":"n185972885","loc":[-85.6387444,41.9512105],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972891":{"id":"n185972891","loc":[-85.636421,41.946392],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972895":{"id":"n185972895","loc":[-85.635965,41.945809],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972897":{"id":"n185972897","loc":[-85.635683,41.945449],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:39Z","tags":{}},"n185972899":{"id":"n185972899","loc":[-85.635281,41.9450252],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185972905":{"id":"n185972905","loc":[-85.6324428,41.9425743],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185985217":{"id":"n185985217","loc":[-85.638243,41.943674],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985219":{"id":"n185985219","loc":[-85.638228,41.943747],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985221":{"id":"n185985221","loc":[-85.638163,41.943797],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985222":{"id":"n185985222","loc":[-85.638089,41.943832],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985223":{"id":"n185985223","loc":[-85.637969,41.943841],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985225":{"id":"n185985225","loc":[-85.637841,41.943833],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985227":{"id":"n185985227","loc":[-85.637601,41.943789],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985229":{"id":"n185985229","loc":[-85.637449,41.943754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985231":{"id":"n185985231","loc":[-85.637342,41.943734],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:20Z","tags":{}},"n185985233":{"id":"n185985233","loc":[-85.637218,41.943703],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985235":{"id":"n185985235","loc":[-85.637151,41.943663],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985238":{"id":"n185985238","loc":[-85.637118,41.943615],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185985240":{"id":"n185985240","loc":[-85.637073,41.943494],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:21Z","tags":{}},"n185990434":{"id":"n185990434","loc":[-85.6329028,41.9984292],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"railway":"level_crossing"}},"n1475284023":{"id":"n1475284023","loc":[-85.6336163,41.9435806],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475293222":{"id":"n1475293222","loc":[-85.6394045,41.953658],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293226":{"id":"n1475293226","loc":[-85.6364975,41.9638663],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293234":{"id":"n1475293234","loc":[-85.6390449,41.9565145],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293240":{"id":"n1475293240","loc":[-85.636943,41.9473114],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293252":{"id":"n1475293252","loc":[-85.6392115,41.9559003],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293254":{"id":"n1475293254","loc":[-85.6348931,41.9685127],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{"railway":"level_crossing"}},"n1475293260":{"id":"n1475293260","loc":[-85.6375999,41.9485401],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1475293261":{"id":"n1475293261","loc":[-85.6391256,41.9523817],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"railway":"level_crossing"}},"n1475293264":{"id":"n1475293264","loc":[-85.6394155,41.9546493],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"railway":"level_crossing"}},"n1819805614":{"id":"n1819805614","loc":[-85.6345652,41.9363097],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805618":{"id":"n1819805618","loc":[-85.6295334,41.9426862],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805622":{"id":"n1819805622","loc":[-85.6308208,41.9430773],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805626":{"id":"n1819805626","loc":[-85.6274734,41.9406592],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805629":{"id":"n1819805629","loc":[-85.6296943,41.9430533],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805632":{"id":"n1819805632","loc":[-85.6340931,41.9354477],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805636":{"id":"n1819805636","loc":[-85.6304131,41.9436598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805639":{"id":"n1819805639","loc":[-85.6304882,41.9426623],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:25Z","tags":{}},"n1819805641":{"id":"n1819805641","loc":[-85.6336103,41.9367487],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805643":{"id":"n1819805643","loc":[-85.6300376,41.9418084],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805645":{"id":"n1819805645","loc":[-85.6365286,41.9336679],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805647":{"id":"n1819805647","loc":[-85.632016,41.9429221],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805666":{"id":"n1819805666","loc":[-85.6314753,41.9442663],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805669":{"id":"n1819805669","loc":[-85.6268619,41.9402203],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805673":{"id":"n1819805673","loc":[-85.6296728,41.9412099],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805676":{"id":"n1819805676","loc":[-85.6354557,41.932766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805680":{"id":"n1819805680","loc":[-85.632752,41.9431012],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805683":{"id":"n1819805683","loc":[-85.631147,41.9432014],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805687":{"id":"n1819805687","loc":[-85.635284,41.9343942],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805690":{"id":"n1819805690","loc":[-85.6249736,41.9405794],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805694":{"id":"n1819805694","loc":[-85.6294153,41.9417925],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805698":{"id":"n1819805698","loc":[-85.6323486,41.9426986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805702":{"id":"n1819805702","loc":[-85.6340287,41.9373871],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805707":{"id":"n1819805707","loc":[-85.6353698,41.9316326],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805711":{"id":"n1819805711","loc":[-85.6284176,41.940356],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805715":{"id":"n1819805715","loc":[-85.6291471,41.9412897],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805718":{"id":"n1819805718","loc":[-85.6311105,41.943979],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805722":{"id":"n1819805722","loc":[-85.6320868,41.9400128],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805724":{"id":"n1819805724","loc":[-85.635166,41.9324627],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805727":{"id":"n1819805727","loc":[-85.6344686,41.9350567],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805728":{"id":"n1819805728","loc":[-85.6357132,41.9332369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805731":{"id":"n1819805731","loc":[-85.629984,41.9434444],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:26Z","tags":{}},"n1819805760":{"id":"n1819805760","loc":[-85.6330996,41.9378784],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805766":{"id":"n1819805766","loc":[-85.625274,41.9411141],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805770":{"id":"n1819805770","loc":[-85.6326321,41.9412173],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805774":{"id":"n1819805774","loc":[-85.6347047,41.9312096],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805777":{"id":"n1819805777","loc":[-85.6363569,41.9339552],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805780":{"id":"n1819805780","loc":[-85.6327392,41.941926],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805783":{"id":"n1819805783","loc":[-85.6357239,41.9338435],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805786":{"id":"n1819805786","loc":[-85.6356595,41.9346576],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805789":{"id":"n1819805789","loc":[-85.6316469,41.9436598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805792":{"id":"n1819805792","loc":[-85.6350587,41.9354557],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805795":{"id":"n1819805795","loc":[-85.6360028,41.9322791],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805798":{"id":"n1819805798","loc":[-85.63125,41.9443062],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805802":{"id":"n1819805802","loc":[-85.6263362,41.9408109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805805":{"id":"n1819805805","loc":[-85.6315075,41.9438753],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805808":{"id":"n1819805808","loc":[-85.6340008,41.9316051],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805810":{"id":"n1819805810","loc":[-85.6345545,41.9320557],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805812":{"id":"n1819805812","loc":[-85.6250809,41.9408587],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805814":{"id":"n1819805814","loc":[-85.6257783,41.9400926],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805834":{"id":"n1819805834","loc":[-85.6326408,41.9424363],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n1819805838":{"id":"n1819805838","loc":[-85.6365607,41.9334365],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805842":{"id":"n1819805842","loc":[-85.6288253,41.9410343],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805846":{"id":"n1819805846","loc":[-85.6279133,41.9402921],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:27Z","tags":{}},"n1819805849":{"id":"n1819805849","loc":[-85.6289433,41.9405156],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805852":{"id":"n1819805852","loc":[-85.6313787,41.9439152],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805858":{"id":"n1819805858","loc":[-85.6300805,41.9420398],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805861":{"id":"n1819805861","loc":[-85.6321941,41.9396297],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805864":{"id":"n1819805864","loc":[-85.6329129,41.9393903],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805868":{"id":"n1819805868","loc":[-85.632001,41.9434922],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805870":{"id":"n1819805870","loc":[-85.6314903,41.9431535],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805873":{"id":"n1819805873","loc":[-85.6251667,41.9401166],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805876":{"id":"n1819805876","loc":[-85.63287,41.939941],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805878":{"id":"n1819805878","loc":[-85.6307886,41.9437317],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805880":{"id":"n1819805880","loc":[-85.6321727,41.940348],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805883":{"id":"n1819805883","loc":[-85.6265872,41.940113],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805885":{"id":"n1819805885","loc":[-85.6268404,41.9406672],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805887":{"id":"n1819805887","loc":[-85.6325267,41.9389035],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805889":{"id":"n1819805889","loc":[-85.6364964,41.933189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805911":{"id":"n1819805911","loc":[-85.6248663,41.9401804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805922":{"id":"n1819805922","loc":[-85.633267,41.9387199],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819805925":{"id":"n1819805925","loc":[-85.6293402,41.9408428],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:08:28Z","tags":{}},"n1819848849":{"id":"n1819848849","loc":[-85.6464957,41.9695178],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848850":{"id":"n1819848850","loc":[-85.6497642,41.9611355],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848851":{"id":"n1819848851","loc":[-85.6480943,41.9624818],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848854":{"id":"n1819848854","loc":[-85.6500362,41.9657367],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848855":{"id":"n1819848855","loc":[-85.6493673,41.9783496],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848856":{"id":"n1819848856","loc":[-85.6457409,41.9548007],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848857":{"id":"n1819848857","loc":[-85.651313,41.9760426],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848858":{"id":"n1819848858","loc":[-85.6495819,41.9784772],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848859":{"id":"n1819848859","loc":[-85.6495105,41.9833722],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848860":{"id":"n1819848860","loc":[-85.6405053,41.9492792],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848863":{"id":"n1819848863","loc":[-85.6502293,41.9786826],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848865":{"id":"n1819848865","loc":[-85.6406877,41.9495106],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848870":{"id":"n1819848870","loc":[-85.6493136,41.9704611],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848871":{"id":"n1819848871","loc":[-85.6372249,41.9441284],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819848873":{"id":"n1819848873","loc":[-85.6512379,41.9659441],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848875":{"id":"n1819848875","loc":[-85.6508087,41.9650187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848877":{"id":"n1819848877","loc":[-85.6487166,41.9605352],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848878":{"id":"n1819848878","loc":[-85.6506478,41.9760665],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848879":{"id":"n1819848879","loc":[-85.651431,41.9758512],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848886":{"id":"n1819848886","loc":[-85.6477617,41.9563945],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848889":{"id":"n1819848889","loc":[-85.6497895,41.9832286],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848892":{"id":"n1819848892","loc":[-85.6504868,41.9791931],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848893":{"id":"n1819848893","loc":[-85.6498002,41.9615085],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848894":{"id":"n1819848894","loc":[-85.6404302,41.9502846],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848901":{"id":"n1819848901","loc":[-85.6354412,41.9439886],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848903":{"id":"n1819848903","loc":[-85.6472145,41.9698528],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848904":{"id":"n1819848904","loc":[-85.6401979,41.9486233],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848905":{"id":"n1819848905","loc":[-85.6475042,41.963503],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848909":{"id":"n1819848909","loc":[-85.6343405,41.94358],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848914":{"id":"n1819848914","loc":[-85.6503474,41.9737773],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848915":{"id":"n1819848915","loc":[-85.6389533,41.9470992],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848916":{"id":"n1819848916","loc":[-85.6483625,41.9577907],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848917":{"id":"n1819848917","loc":[-85.6484768,41.9617419],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848918":{"id":"n1819848918","loc":[-85.644078,41.9545693],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848919":{"id":"n1819848919","loc":[-85.6437169,41.9543041],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848920":{"id":"n1819848920","loc":[-85.6478331,41.9627949],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848922":{"id":"n1819848922","loc":[-85.6499144,41.9785889],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848924":{"id":"n1819848924","loc":[-85.647633,41.9720066],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848926":{"id":"n1819848926","loc":[-85.6487987,41.978868],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848927":{"id":"n1819848927","loc":[-85.6495105,41.9730355],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848928":{"id":"n1819848928","loc":[-85.648223,41.9829654],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848929":{"id":"n1819848929","loc":[-85.6514846,41.9659122],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848931":{"id":"n1819848931","loc":[-85.6498753,41.9731871],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848932":{"id":"n1819848932","loc":[-85.640906,41.9508575],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848933":{"id":"n1819848933","loc":[-85.649775,41.9799767],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848934":{"id":"n1819848934","loc":[-85.6507014,41.9739927],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848937":{"id":"n1819848937","loc":[-85.6479763,41.9840899],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848938":{"id":"n1819848938","loc":[-85.6501113,41.9600884],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848939":{"id":"n1819848939","loc":[-85.6389962,41.9478253],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848941":{"id":"n1819848941","loc":[-85.637469,41.9445791],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848942":{"id":"n1819848942","loc":[-85.6494569,41.9601682],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848943":{"id":"n1819848943","loc":[-85.6368803,41.9439351],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819848945":{"id":"n1819848945","loc":[-85.6474398,41.9724213],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848946":{"id":"n1819848946","loc":[-85.6382629,41.9463666],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848948":{"id":"n1819848948","loc":[-85.6489633,41.9830771],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848952":{"id":"n1819848952","loc":[-85.6488882,41.9600326],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848953":{"id":"n1819848953","loc":[-85.6488094,41.9774324],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848954":{"id":"n1819848954","loc":[-85.6491135,41.9600485],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848955":{"id":"n1819848955","loc":[-85.6501435,41.9734583],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848956":{"id":"n1819848956","loc":[-85.6495534,41.960958],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848958":{"id":"n1819848958","loc":[-85.6474683,41.9561491],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848959":{"id":"n1819848959","loc":[-85.6401083,41.9485451],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848960":{"id":"n1819848960","loc":[-85.6481764,41.9678686],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848961":{"id":"n1819848961","loc":[-85.6484017,41.967382],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848962":{"id":"n1819848962","loc":[-85.6501328,41.959897],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848964":{"id":"n1819848964","loc":[-85.6403695,41.9504586],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848966":{"id":"n1819848966","loc":[-85.6398975,41.9491499],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848967":{"id":"n1819848967","loc":[-85.6412455,41.9510187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848968":{"id":"n1819848968","loc":[-85.6482622,41.9619493],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848969":{"id":"n1819848969","loc":[-85.6405841,41.9501474],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848970":{"id":"n1819848970","loc":[-85.6478583,41.9703394],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848971":{"id":"n1819848971","loc":[-85.6493388,41.9832845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848972":{"id":"n1819848972","loc":[-85.6485664,41.9829415],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848974":{"id":"n1819848974","loc":[-85.6491457,41.9779887],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848975":{"id":"n1819848975","loc":[-85.6468889,41.9697033],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848976":{"id":"n1819848976","loc":[-85.6452726,41.9546072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848977":{"id":"n1819848977","loc":[-85.6448435,41.9546072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848979":{"id":"n1819848979","loc":[-85.6485342,41.9763138],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848980":{"id":"n1819848980","loc":[-85.6495282,41.9664087],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848986":{"id":"n1819848986","loc":[-85.6486307,41.9603278],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848987":{"id":"n1819848987","loc":[-85.6492278,41.9791871],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848990":{"id":"n1819848990","loc":[-85.6501934,41.9800724],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848992":{"id":"n1819848992","loc":[-85.6482445,41.9819685],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848993":{"id":"n1819848993","loc":[-85.6481871,41.9704451],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848994":{"id":"n1819848994","loc":[-85.6371364,41.9457602],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848996":{"id":"n1819848996","loc":[-85.6500362,41.9801023],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849000":{"id":"n1819849000","loc":[-85.639007,41.9485914],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849001":{"id":"n1819849001","loc":[-85.6488882,41.9669253],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849002":{"id":"n1819849002","loc":[-85.6484698,41.9565062],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849004":{"id":"n1819849004","loc":[-85.6510769,41.9761064],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849005":{"id":"n1819849005","loc":[-85.6503581,41.9799029],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849006":{"id":"n1819849006","loc":[-85.6489381,41.9703893],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849008":{"id":"n1819849008","loc":[-85.6497457,41.9833588],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849011":{"id":"n1819849011","loc":[-85.6497358,41.9717593],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849012":{"id":"n1819849012","loc":[-85.6494676,41.9796796],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849019":{"id":"n1819849019","loc":[-85.6486093,41.9771034],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849021":{"id":"n1819849021","loc":[-85.6504546,41.9796556],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849022":{"id":"n1819849022","loc":[-85.6371294,41.9454154],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849023":{"id":"n1819849023","loc":[-85.6503436,41.9759249],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849025":{"id":"n1819849025","loc":[-85.6462382,41.9693822],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849026":{"id":"n1819849026","loc":[-85.6497573,41.983093],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849028":{"id":"n1819849028","loc":[-85.6497465,41.9602799],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849029":{"id":"n1819849029","loc":[-85.6374728,41.9460698],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849030":{"id":"n1819849030","loc":[-85.6486592,41.9566039],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849031":{"id":"n1819849031","loc":[-85.6515989,41.9654993],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849032":{"id":"n1819849032","loc":[-85.6387028,41.9482658],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849033":{"id":"n1819849033","loc":[-85.6464742,41.9688398],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849034":{"id":"n1819849034","loc":[-85.6495212,41.9589236],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849035":{"id":"n1819849035","loc":[-85.6490599,41.9790096],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849036":{"id":"n1819849036","loc":[-85.6489918,41.9800724],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849038":{"id":"n1819849038","loc":[-85.6499182,41.9659042],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849040":{"id":"n1819849040","loc":[-85.639758,41.9490143],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849041":{"id":"n1819849041","loc":[-85.6514846,41.9755241],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849042":{"id":"n1819849042","loc":[-85.6436633,41.9540647],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849045":{"id":"n1819849045","loc":[-85.6475541,41.9726387],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849046":{"id":"n1819849046","loc":[-85.6488308,41.9718331],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849047":{"id":"n1819849047","loc":[-85.6377694,41.9460953],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849048":{"id":"n1819849048","loc":[-85.6490706,41.9804452],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849049":{"id":"n1819849049","loc":[-85.6485449,41.9766248],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849051":{"id":"n1819849051","loc":[-85.6483625,41.9790256],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849052":{"id":"n1819849052","loc":[-85.6490706,41.9585167],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849053":{"id":"n1819849053","loc":[-85.6425008,41.9522874],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849054":{"id":"n1819849054","loc":[-85.6475793,41.9632158],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849055":{"id":"n1819849055","loc":[-85.6408631,41.9499399],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849056":{"id":"n1819849056","loc":[-85.6483373,41.9814681],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849057":{"id":"n1819849057","loc":[-85.6313548,41.9442876],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849058":{"id":"n1819849058","loc":[-85.6432663,41.9529796],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849059":{"id":"n1819849059","loc":[-85.6487128,41.9582873],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849060":{"id":"n1819849060","loc":[-85.6482338,41.9817612],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849062":{"id":"n1819849062","loc":[-85.6485664,41.9788661],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849063":{"id":"n1819849063","loc":[-85.6373081,41.9448824],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849064":{"id":"n1819849064","loc":[-85.6472215,41.9557582],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849065":{"id":"n1819849065","loc":[-85.6348984,41.9440414],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819849066":{"id":"n1819849066","loc":[-85.6501972,41.9647315],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849067":{"id":"n1819849067","loc":[-85.6489741,41.9808281],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849068":{"id":"n1819849068","loc":[-85.6420111,41.9515034],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849069":{"id":"n1819849069","loc":[-85.6397972,41.9488882],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849070":{"id":"n1819849070","loc":[-85.6499718,41.9593465],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849071":{"id":"n1819849071","loc":[-85.6486844,41.9811311],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849072":{"id":"n1819849072","loc":[-85.6390392,41.9474663],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849074":{"id":"n1819849074","loc":[-85.6495642,41.9616362],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849075":{"id":"n1819849075","loc":[-85.6483518,41.9791931],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849076":{"id":"n1819849076","loc":[-85.6478974,41.9833104],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849077":{"id":"n1819849077","loc":[-85.640155,41.948719],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849078":{"id":"n1819849078","loc":[-85.6399366,41.9487845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849079":{"id":"n1819849079","loc":[-85.6492959,41.9825348],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849080":{"id":"n1819849080","loc":[-85.6505083,41.9648352],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849081":{"id":"n1819849081","loc":[-85.6492959,41.9645241],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849082":{"id":"n1819849082","loc":[-85.6402049,41.9491835],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849083":{"id":"n1819849083","loc":[-85.6495175,41.9826963],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849084":{"id":"n1819849084","loc":[-85.6480836,41.9728361],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849085":{"id":"n1819849085","loc":[-85.6374349,41.9443425],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849086":{"id":"n1819849086","loc":[-85.6478331,41.9681238],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849089":{"id":"n1819849089","loc":[-85.639368,41.9486169],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849092":{"id":"n1819849092","loc":[-85.6503581,41.9788022],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849093":{"id":"n1819849093","loc":[-85.64862,41.9568014],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849094":{"id":"n1819849094","loc":[-85.6496999,41.9828877],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849095":{"id":"n1819849095","loc":[-85.647472,41.972198],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849096":{"id":"n1819849096","loc":[-85.6485771,41.9644523],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849097":{"id":"n1819849097","loc":[-85.6388353,41.9480488],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849099":{"id":"n1819849099","loc":[-85.6472752,41.9683312],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849104":{"id":"n1819849104","loc":[-85.6479548,41.9836035],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849105":{"id":"n1819849105","loc":[-85.6462489,41.9691668],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849107":{"id":"n1819849107","loc":[-85.6511912,41.9746328],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849108":{"id":"n1819849108","loc":[-85.6498646,41.9714881],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849111":{"id":"n1819849111","loc":[-85.6488239,41.961684],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849112":{"id":"n1819849112","loc":[-85.6469356,41.9553812],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849114":{"id":"n1819849114","loc":[-85.6479548,41.9640853],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849119":{"id":"n1819849119","loc":[-85.6491565,41.961692],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849121":{"id":"n1819849121","loc":[-85.651667,41.9656728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849124":{"id":"n1819849124","loc":[-85.6388423,41.9484414],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849126":{"id":"n1819849126","loc":[-85.6371686,41.9450978],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849127":{"id":"n1819849127","loc":[-85.6502615,41.9656728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849129":{"id":"n1819849129","loc":[-85.6498501,41.9613031],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849131":{"id":"n1819849131","loc":[-85.6513881,41.9653298],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849133":{"id":"n1819849133","loc":[-85.639883,41.9485291],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849139":{"id":"n1819849139","loc":[-85.6508693,41.9658264],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849140":{"id":"n1819849140","loc":[-85.6486806,41.9761642],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849141":{"id":"n1819849141","loc":[-85.6483159,41.9717613],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849144":{"id":"n1819849144","loc":[-85.6443714,41.9546232],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849146":{"id":"n1819849146","loc":[-85.641775,41.9513359],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849147":{"id":"n1819849147","loc":[-85.6495604,41.9757335],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849148":{"id":"n1819849148","loc":[-85.6465671,41.9551678],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849150":{"id":"n1819849150","loc":[-85.6485127,41.9794084],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849151":{"id":"n1819849151","loc":[-85.6499144,41.9757096],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849152":{"id":"n1819849152","loc":[-85.6433736,41.9531072],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849154":{"id":"n1819849154","loc":[-85.6489741,41.9607426],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849155":{"id":"n1819849155","loc":[-85.640627,41.9507697],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849156":{"id":"n1819849156","loc":[-85.6509659,41.9743058],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849157":{"id":"n1819849157","loc":[-85.6486844,41.9704431],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849158":{"id":"n1819849158","loc":[-85.6498538,41.9711132],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849159":{"id":"n1819849159","loc":[-85.6358937,41.943719],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849160":{"id":"n1819849160","loc":[-85.6497358,41.9707702],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849161":{"id":"n1819849161","loc":[-85.6480476,41.9564842],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849162":{"id":"n1819849162","loc":[-85.6482982,41.9574556],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849163":{"id":"n1819849163","loc":[-85.6501757,41.9757794],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849164":{"id":"n1819849164","loc":[-85.6372973,41.9459916],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849165":{"id":"n1819849165","loc":[-85.6513773,41.9750775],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849166":{"id":"n1819849166","loc":[-85.6436418,41.9537455],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849167":{"id":"n1819849167","loc":[-85.6483625,41.9571524],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849169":{"id":"n1819849169","loc":[-85.647751,41.9727962],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849170":{"id":"n1819849170","loc":[-85.6504546,41.9656808],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849171":{"id":"n1819849171","loc":[-85.6479977,41.971839],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849172":{"id":"n1819849172","loc":[-85.6482767,41.9642449],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849174":{"id":"n1819849174","loc":[-85.6414317,41.9512086],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849176":{"id":"n1819849176","loc":[-85.6469034,41.9685287],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849179":{"id":"n1819849179","loc":[-85.6408631,41.9497564],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849182":{"id":"n1819849182","loc":[-85.6476721,41.96384],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849183":{"id":"n1819849183","loc":[-85.6479725,41.983111],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849184":{"id":"n1819849184","loc":[-85.640788,41.9500516],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849185":{"id":"n1819849185","loc":[-85.6427798,41.9528778],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849186":{"id":"n1819849186","loc":[-85.6435308,41.9534124],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849187":{"id":"n1819849187","loc":[-85.6483733,41.9821998],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849189":{"id":"n1819849189","loc":[-85.6351752,41.9440796],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819849191":{"id":"n1819849191","loc":[-85.6487021,41.9601463],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849192":{"id":"n1819849192","loc":[-85.6363811,41.9437605],"version":"2","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n1819849193":{"id":"n1819849193","loc":[-85.6490883,41.9759728],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849194":{"id":"n1819849194","loc":[-85.6423292,41.9520081],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849195":{"id":"n1819849195","loc":[-85.6500003,41.960242],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849196":{"id":"n1819849196","loc":[-85.6385778,41.9466443],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849197":{"id":"n1819849197","loc":[-85.6494032,41.9718789],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849198":{"id":"n1819849198","loc":[-85.6404339,41.9506501],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849199":{"id":"n1819849199","loc":[-85.6426226,41.9527083],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849200":{"id":"n1819849200","loc":[-85.6439101,41.9545035],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849201":{"id":"n1819849201","loc":[-85.6516563,41.9657845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{}},"n1819849202":{"id":"n1819849202","loc":[-85.6473395,41.9699585],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{}},"n1819858501":{"id":"n1819858501","loc":[-85.6361263,41.9437126],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858503":{"id":"n1819858503","loc":[-85.6350068,41.944034],"version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n1819858513":{"id":"n1819858513","loc":[-85.6371402,41.9453282],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858518":{"id":"n1819858518","loc":[-85.6348713,41.9432923],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858523":{"id":"n1819858523","loc":[-85.6357047,41.943799],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858526":{"id":"n1819858526","loc":[-85.6349947,41.9435756],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858531":{"id":"n1819858531","loc":[-85.6350376,41.943827],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1820937508":{"id":"n1820937508","loc":[-85.1026013,42.0881722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937509":{"id":"n1820937509","loc":[-85.0558088,42.102493],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937511":{"id":"n1820937511","loc":[-85.3030116,41.9724451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937513":{"id":"n1820937513","loc":[-85.0353221,42.1027398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937514":{"id":"n1820937514","loc":[-85.0835468,42.1015469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937515":{"id":"n1820937515","loc":[-85.2421298,42.0106305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937517":{"id":"n1820937517","loc":[-85.0090632,42.0910452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937518":{"id":"n1820937518","loc":[-85.086626,42.0948838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:57Z","tags":{}},"n1820937520":{"id":"n1820937520","loc":[-85.2552039,42.0015448],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937521":{"id":"n1820937521","loc":[-85.3739614,41.9969917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937522":{"id":"n1820937522","loc":[-85.4831166,41.993898],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937523":{"id":"n1820937523","loc":[-85.0341084,42.0977657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937524":{"id":"n1820937524","loc":[-85.3272802,41.9710333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937525":{"id":"n1820937525","loc":[-85.2125568,42.0414521],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937526":{"id":"n1820937526","loc":[-85.3798022,41.9992458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937527":{"id":"n1820937527","loc":[-85.2652021,41.999768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937528":{"id":"n1820937528","loc":[-85.3852739,42.0004896],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937529":{"id":"n1820937529","loc":[-85.3911919,42.0030513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937530":{"id":"n1820937530","loc":[-85.5440349,41.9717109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937531":{"id":"n1820937531","loc":[-85.2790155,41.9911764],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937532":{"id":"n1820937532","loc":[-85.4723277,41.9950518],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937533":{"id":"n1820937533","loc":[-85.5690546,41.9653931],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937535":{"id":"n1820937535","loc":[-85.5674882,41.9649623],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937536":{"id":"n1820937536","loc":[-85.6362815,41.9189165],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937537":{"id":"n1820937537","loc":[-85.5659003,41.963638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:58Z","tags":{}},"n1820937539":{"id":"n1820937539","loc":[-85.6391353,41.9122262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937540":{"id":"n1820937540","loc":[-85.4834385,41.9894803],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937541":{"id":"n1820937541","loc":[-85.6399078,41.9160744],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937542":{"id":"n1820937542","loc":[-85.632874,41.941031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937543":{"id":"n1820937543","loc":[-85.1307591,42.0726961],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937544":{"id":"n1820937544","loc":[-85.6444397,41.9128378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937545":{"id":"n1820937545","loc":[-85.6197204,41.9420365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937546":{"id":"n1820937546","loc":[-85.1164857,42.0864631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937547":{"id":"n1820937547","loc":[-85.6476111,41.9142222],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937548":{"id":"n1820937548","loc":[-85.2915747,41.9774223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937549":{"id":"n1820937549","loc":[-85.6430192,41.9102461],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937550":{"id":"n1820937550","loc":[-85.1597495,42.0639017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937551":{"id":"n1820937551","loc":[-85.5504079,41.9701793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937553":{"id":"n1820937553","loc":[-85.2781317,41.9948951],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937555":{"id":"n1820937555","loc":[-85.3724594,41.997518],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937556":{"id":"n1820937556","loc":[-85.5629434,41.9665155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937557":{"id":"n1820937557","loc":[-85.3791971,41.9990808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937558":{"id":"n1820937558","loc":[-85.001891,42.0878843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:55:59Z","tags":{}},"n1820937560":{"id":"n1820937560","loc":[-85.3140838,41.9709056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937561":{"id":"n1820937561","loc":[-85.2468032,42.0146987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937563":{"id":"n1820937563","loc":[-85.0877378,42.097255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937564":{"id":"n1820937564","loc":[-85.2442498,42.0150654],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937566":{"id":"n1820937566","loc":[-85.3108973,41.9701478],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937568":{"id":"n1820937568","loc":[-85.0344584,42.1016572],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937569":{"id":"n1820937569","loc":[-85.2331025,42.0297387],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937570":{"id":"n1820937570","loc":[-85.5058446,41.9746996],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937571":{"id":"n1820937571","loc":[-85.5622739,41.9676427],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937572":{"id":"n1820937572","loc":[-85.2792687,41.9890337],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937574":{"id":"n1820937574","loc":[-84.9909302,42.08695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937575":{"id":"n1820937575","loc":[-85.6218233,41.9418609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937576":{"id":"n1820937576","loc":[-85.3577437,41.9931062],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937577":{"id":"n1820937577","loc":[-85.639028,41.9165853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937578":{"id":"n1820937578","loc":[-84.9956576,42.0865348],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937579":{"id":"n1820937579","loc":[-85.4828376,41.990198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937580":{"id":"n1820937580","loc":[-85.3244478,41.9720543],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937582":{"id":"n1820937582","loc":[-85.0517479,42.1035159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937583":{"id":"n1820937583","loc":[-85.225646,42.0338025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937584":{"id":"n1820937584","loc":[-84.9941019,42.0862163],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937586":{"id":"n1820937586","loc":[-85.1051762,42.0879452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937587":{"id":"n1820937587","loc":[-85.1245203,42.0753162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937588":{"id":"n1820937588","loc":[-85.3250808,41.9719506],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937589":{"id":"n1820937589","loc":[-85.2720109,41.997933],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:00Z","tags":{}},"n1820937590":{"id":"n1820937590","loc":[-85.2556653,42.0027248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937591":{"id":"n1820937591","loc":[-85.0872483,42.0943544],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937592":{"id":"n1820937592","loc":[-85.2778353,41.9955023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937593":{"id":"n1820937593","loc":[-85.2984733,41.9735538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937594":{"id":"n1820937594","loc":[-85.101578,42.0889552],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937595":{"id":"n1820937595","loc":[-85.3888745,42.0016959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937596":{"id":"n1820937596","loc":[-84.9903508,42.0870654],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937597":{"id":"n1820937597","loc":[-85.6405558,41.9146261],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937598":{"id":"n1820937598","loc":[-85.6460704,41.9141311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937599":{"id":"n1820937599","loc":[-85.0377468,42.1037428],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937600":{"id":"n1820937600","loc":[-85.2298345,42.0312899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937601":{"id":"n1820937601","loc":[-85.1080958,42.0861964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937602":{"id":"n1820937602","loc":[-85.6325307,41.9402329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937603":{"id":"n1820937603","loc":[-85.1165984,42.0832184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937604":{"id":"n1820937604","loc":[-85.6354446,41.9190602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937605":{"id":"n1820937605","loc":[-85.1114592,42.0862959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937606":{"id":"n1820937606","loc":[-85.0858763,42.1001646],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937607":{"id":"n1820937607","loc":[-85.0472083,42.1015151],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937608":{"id":"n1820937608","loc":[-85.0802477,42.1027609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937610":{"id":"n1820937610","loc":[-85.0924585,42.0928564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937611":{"id":"n1820937611","loc":[-85.0329617,42.09827],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937612":{"id":"n1820937612","loc":[-85.2814617,41.993465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937613":{"id":"n1820937613","loc":[-85.3097708,41.9700282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937614":{"id":"n1820937614","loc":[-85.2809427,41.993695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937615":{"id":"n1820937615","loc":[-85.0583233,42.1026494],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:01Z","tags":{}},"n1820937617":{"id":"n1820937617","loc":[-85.2801592,41.9840021],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937619":{"id":"n1820937619","loc":[-85.1064154,42.0863449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937620":{"id":"n1820937620","loc":[-85.0423173,42.1014662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937621":{"id":"n1820937621","loc":[-85.2168913,42.0398107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937622":{"id":"n1820937622","loc":[-85.2798481,41.9833401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937623":{"id":"n1820937623","loc":[-85.0575468,42.1028672],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937625":{"id":"n1820937625","loc":[-85.0130369,42.0893067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937626":{"id":"n1820937626","loc":[-85.0346985,42.1018256],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937627":{"id":"n1820937627","loc":[-85.2231569,42.0372768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937628":{"id":"n1820937628","loc":[-85.2956195,41.9732268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937629":{"id":"n1820937629","loc":[-85.1052312,42.086893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937630":{"id":"n1820937630","loc":[-85.4813356,41.9958436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937631":{"id":"n1820937631","loc":[-85.0961599,42.0914672],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937632":{"id":"n1820937632","loc":[-85.308419,41.9704749],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937633":{"id":"n1820937633","loc":[-85.295952,41.9715119],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937634":{"id":"n1820937634","loc":[-85.3310933,41.9703923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937635":{"id":"n1820937635","loc":[-85.2940745,41.9739686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937636":{"id":"n1820937636","loc":[-85.3803343,42.000484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937637":{"id":"n1820937637","loc":[-85.1174231,42.0845533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:02Z","tags":{}},"n1820937638":{"id":"n1820937638","loc":[-85.0095836,42.089839],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937639":{"id":"n1820937639","loc":[-85.3179354,41.9705866],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937640":{"id":"n1820937640","loc":[-85.257708,42.0001189],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937641":{"id":"n1820937641","loc":[-85.2563522,42.0002771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937642":{"id":"n1820937642","loc":[-85.3181929,41.970419],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937643":{"id":"n1820937643","loc":[-85.2911884,41.9757154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937644":{"id":"n1820937644","loc":[-85.2714423,41.9975862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937645":{"id":"n1820937645","loc":[-85.0193669,42.089888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937646":{"id":"n1820937646","loc":[-85.3889818,42.0039921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937647":{"id":"n1820937647","loc":[-85.3408093,41.9853965],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937648":{"id":"n1820937648","loc":[-85.1258091,42.0748332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937649":{"id":"n1820937649","loc":[-85.5722561,41.962782],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937650":{"id":"n1820937650","loc":[-85.3266902,41.9721819],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937651":{"id":"n1820937651","loc":[-85.1473255,42.065192],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937652":{"id":"n1820937652","loc":[-85.1462526,42.0655106],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937653":{"id":"n1820937653","loc":[-85.4641051,42.0013929],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937654":{"id":"n1820937654","loc":[-85.5620379,41.9700677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937655":{"id":"n1820937655","loc":[-85.3226025,41.971121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937656":{"id":"n1820937656","loc":[-85.0200965,42.0899516],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937657":{"id":"n1820937657","loc":[-85.0624714,42.1044711],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937658":{"id":"n1820937658","loc":[-85.5649562,41.9637178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937659":{"id":"n1820937659","loc":[-85.2360315,42.0253315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937660":{"id":"n1820937660","loc":[-85.3881449,41.9994475],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937661":{"id":"n1820937661","loc":[-85.5032911,41.976263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937662":{"id":"n1820937662","loc":[-85.481297,41.9871414],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937663":{"id":"n1820937663","loc":[-85.1167056,42.0841898],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937664":{"id":"n1820937664","loc":[-85.2891714,41.9787223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937665":{"id":"n1820937665","loc":[-85.4393429,42.0058736],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937666":{"id":"n1820937666","loc":[-85.0077007,42.0895762],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937667":{"id":"n1820937667","loc":[-85.2736202,41.9979171],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937668":{"id":"n1820937668","loc":[-84.9935332,42.0859296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:03Z","tags":{}},"n1820937669":{"id":"n1820937669","loc":[-85.0622769,42.1046713],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937670":{"id":"n1820937670","loc":[-85.2309031,42.0311249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937671":{"id":"n1820937671","loc":[-85.0343726,42.10069],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937672":{"id":"n1820937672","loc":[-85.0596551,42.1048612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937673":{"id":"n1820937673","loc":[-85.1338597,42.0707449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937674":{"id":"n1820937674","loc":[-85.3117663,41.9689194],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937675":{"id":"n1820937675","loc":[-85.0705649,42.1057499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937676":{"id":"n1820937676","loc":[-85.2441425,42.0180944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937677":{"id":"n1820937677","loc":[-85.1171174,42.0862692],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937678":{"id":"n1820937678","loc":[-85.0346824,42.1005519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937680":{"id":"n1820937680","loc":[-85.2389927,42.0229245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937681":{"id":"n1820937681","loc":[-85.0834892,42.1018642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937682":{"id":"n1820937682","loc":[-85.0619443,42.1049459],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937683":{"id":"n1820937683","loc":[-85.2845366,41.9811868],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937684":{"id":"n1820937684","loc":[-85.210411,42.0394123],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937685":{"id":"n1820937685","loc":[-85.4377383,42.0055942],"version":"2","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:51:01Z","tags":{}},"n1820937686":{"id":"n1820937686","loc":[-85.2882058,41.9789138],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937687":{"id":"n1820937687","loc":[-85.2741191,41.9955808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937688":{"id":"n1820937688","loc":[-85.3442211,41.9903575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937689":{"id":"n1820937689","loc":[-85.2641413,41.9995237],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937690":{"id":"n1820937690","loc":[-85.2804489,41.9829174],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937691":{"id":"n1820937691","loc":[-85.5593342,41.9729074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937692":{"id":"n1820937692","loc":[-85.3590912,41.9932601],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:04Z","tags":{}},"n1820937694":{"id":"n1820937694","loc":[-85.4826445,41.9957479],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937695":{"id":"n1820937695","loc":[-85.4539127,42.0063041],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937696":{"id":"n1820937696","loc":[-85.2456767,42.0153683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937697":{"id":"n1820937697","loc":[-85.5794015,41.9489631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937698":{"id":"n1820937698","loc":[-85.4108686,42.0078507],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937699":{"id":"n1820937699","loc":[-85.0616386,42.1051529],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937700":{"id":"n1820937700","loc":[-85.4977979,41.978241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937701":{"id":"n1820937701","loc":[-85.2488417,42.0086319],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937702":{"id":"n1820937702","loc":[-85.5588836,41.9728116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937703":{"id":"n1820937703","loc":[-85.4557366,42.0051241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937705":{"id":"n1820937705","loc":[-85.0723151,42.1056094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937706":{"id":"n1820937706","loc":[-85.0057909,42.0887323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937707":{"id":"n1820937707","loc":[-85.0756786,42.105677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937708":{"id":"n1820937708","loc":[-85.0901504,42.0940001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937709":{"id":"n1820937709","loc":[-85.0979999,42.0910213],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937710":{"id":"n1820937710","loc":[-85.2376301,42.0239686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937711":{"id":"n1820937711","loc":[-85.2780671,41.9902299],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937712":{"id":"n1820937712","loc":[-85.251481,42.0113188],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937713":{"id":"n1820937713","loc":[-85.3114767,41.9690311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937714":{"id":"n1820937714","loc":[-85.2649621,41.9975662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937715":{"id":"n1820937715","loc":[-85.283807,41.9813383],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:05Z","tags":{}},"n1820937716":{"id":"n1820937716","loc":[-85.5515451,41.9703867],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937717":{"id":"n1820937717","loc":[-85.1176605,42.0850896],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937718":{"id":"n1820937718","loc":[-85.1069317,42.0862441],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937719":{"id":"n1820937719","loc":[-85.2739314,41.9976938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937720":{"id":"n1820937720","loc":[-85.5550212,41.9702112],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937721":{"id":"n1820937721","loc":[-85.3076679,41.9719904],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937722":{"id":"n1820937722","loc":[-85.592319,41.9440316],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937723":{"id":"n1820937723","loc":[-85.3139979,41.9704031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937724":{"id":"n1820937724","loc":[-85.0421134,42.1013149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937725":{"id":"n1820937725","loc":[-85.2508373,42.0102741],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937726":{"id":"n1820937726","loc":[-85.0830922,42.1038821],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937727":{"id":"n1820937727","loc":[-85.6342473,41.9360031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937730":{"id":"n1820937730","loc":[-85.0500192,42.1024942],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937731":{"id":"n1820937731","loc":[-85.3498644,41.9926221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937732":{"id":"n1820937732","loc":[-85.0234117,42.0918903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937733":{"id":"n1820937733","loc":[-85.0464425,42.1009408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937734":{"id":"n1820937734","loc":[-85.033938,42.099886],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937736":{"id":"n1820937736","loc":[-85.0152752,42.0886009],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937737":{"id":"n1820937737","loc":[-85.0441894,42.1012671],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937738":{"id":"n1820937738","loc":[-85.4668731,41.9979804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937739":{"id":"n1820937739","loc":[-85.4407377,42.006033],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937740":{"id":"n1820937740","loc":[-85.2262253,42.0344878],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937741":{"id":"n1820937741","loc":[-85.2550001,42.0033706],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937742":{"id":"n1820937742","loc":[-85.3071422,41.9722617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937743":{"id":"n1820937743","loc":[-85.6147852,41.942228],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937744":{"id":"n1820937744","loc":[-85.0183853,42.0901825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:06Z","tags":{}},"n1820937745":{"id":"n1820937745","loc":[-85.6323161,41.9228489],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937746":{"id":"n1820937746","loc":[-85.0095568,42.0901376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937747":{"id":"n1820937747","loc":[-85.2524037,42.0113826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937748":{"id":"n1820937748","loc":[-85.3186864,41.9708578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937749":{"id":"n1820937749","loc":[-85.2805669,41.9870883],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937750":{"id":"n1820937750","loc":[-85.0585768,42.1038144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937751":{"id":"n1820937751","loc":[-85.2970786,41.9715358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937752":{"id":"n1820937752","loc":[-85.1315758,42.0723445],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937753":{"id":"n1820937753","loc":[-85.2448291,42.0175444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937754":{"id":"n1820937754","loc":[-85.2446468,42.0174248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937755":{"id":"n1820937755","loc":[-85.229165,42.032129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937756":{"id":"n1820937756","loc":[-85.5612654,41.9724926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937757":{"id":"n1820937757","loc":[-85.2331776,42.030854],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937758":{"id":"n1820937758","loc":[-85.2271909,42.0334519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937759":{"id":"n1820937759","loc":[-85.1032396,42.0879214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937760":{"id":"n1820937760","loc":[-85.0638447,42.1044154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937761":{"id":"n1820937761","loc":[-85.1260706,42.0745556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937762":{"id":"n1820937762","loc":[-85.3454485,41.99132],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937763":{"id":"n1820937763","loc":[-85.2639321,41.9980088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937764":{"id":"n1820937764","loc":[-85.0837681,42.1013746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937765":{"id":"n1820937765","loc":[-85.2808137,41.9869368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937766":{"id":"n1820937766","loc":[-85.6338997,41.9309373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937767":{"id":"n1820937767","loc":[-85.2267403,42.0332766],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937768":{"id":"n1820937768","loc":[-85.0605831,42.1052074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937769":{"id":"n1820937769","loc":[-85.0259021,42.0930037],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937770":{"id":"n1820937770","loc":[-85.232963,42.0313162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937771":{"id":"n1820937771","loc":[-85.2404947,42.0125381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:07Z","tags":{}},"n1820937772":{"id":"n1820937772","loc":[-85.0910892,42.0935742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937773":{"id":"n1820937773","loc":[-85.2554829,42.0019435],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937774":{"id":"n1820937774","loc":[-85.2799339,41.9867773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937775":{"id":"n1820937775","loc":[-85.1075432,42.0852767],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937776":{"id":"n1820937776","loc":[-85.1176927,42.0854001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937777":{"id":"n1820937777","loc":[-85.1067064,42.0863357],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937778":{"id":"n1820937778","loc":[-85.2517492,42.0106333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937779":{"id":"n1820937779","loc":[-85.0987174,42.0909031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937780":{"id":"n1820937780","loc":[-85.1160083,42.0863994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937781":{"id":"n1820937781","loc":[-85.1268645,42.0739703],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937782":{"id":"n1820937782","loc":[-85.0454702,42.1002852],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937783":{"id":"n1820937783","loc":[-85.1334145,42.0705418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937784":{"id":"n1820937784","loc":[-85.5866542,41.947431],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937786":{"id":"n1820937786","loc":[-85.2359886,42.0250366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937787":{"id":"n1820937787","loc":[-85.3138048,41.9698527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937788":{"id":"n1820937788","loc":[-85.1274291,42.0733081],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937790":{"id":"n1820937790","loc":[-85.6292905,41.9411267],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937791":{"id":"n1820937791","loc":[-85.5958809,41.9417333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:08Z","tags":{}},"n1820937792":{"id":"n1820937792","loc":[-85.1271019,42.0737581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937793":{"id":"n1820937793","loc":[-85.2312679,42.0314437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937794":{"id":"n1820937794","loc":[-85.1081387,42.0863516],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937795":{"id":"n1820937795","loc":[-85.2424473,42.0212109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937796":{"id":"n1820937796","loc":[-85.2710654,41.9975236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937797":{"id":"n1820937797","loc":[-85.4798408,41.9863223],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820937798":{"id":"n1820937798","loc":[-85.035939,42.104296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937799":{"id":"n1820937799","loc":[-85.2178139,42.0395398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937800":{"id":"n1820937800","loc":[-85.0630709,42.1042614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937801":{"id":"n1820937801","loc":[-85.0440124,42.1014861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937802":{"id":"n1820937802","loc":[-85.1321874,42.0720458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937804":{"id":"n1820937804","loc":[-85.079427,42.1029121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937805":{"id":"n1820937805","loc":[-85.2962632,41.9738968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937806":{"id":"n1820937806","loc":[-85.6334748,41.9274627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937807":{"id":"n1820937807","loc":[-85.1057341,42.0872804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937808":{"id":"n1820937808","loc":[-85.4960169,41.9778263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937809":{"id":"n1820937809","loc":[-85.2821226,41.9910273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937810":{"id":"n1820937810","loc":[-85.0013868,42.0885054],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937811":{"id":"n1820937811","loc":[-85.2952547,41.9729795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937812":{"id":"n1820937812","loc":[-85.1298375,42.0667842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937813":{"id":"n1820937813","loc":[-85.1339201,42.0710025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937814":{"id":"n1820937814","loc":[-85.0374356,42.103691],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937815":{"id":"n1820937815","loc":[-85.0061115,42.0880607],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937817":{"id":"n1820937817","loc":[-85.2398402,42.0226934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937818":{"id":"n1820937818","loc":[-85.123501,42.076236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:09Z","tags":{}},"n1820937819":{"id":"n1820937819","loc":[-85.1209489,42.0791294],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937820":{"id":"n1820937820","loc":[-85.0818624,42.1025778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937821":{"id":"n1820937821","loc":[-85.4428835,42.0054749],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937822":{"id":"n1820937822","loc":[-85.4710359,41.9961147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937823":{"id":"n1820937823","loc":[-85.4253354,42.006198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937824":{"id":"n1820937824","loc":[-85.5486483,41.9709451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937825":{"id":"n1820937825","loc":[-85.2303238,42.0310452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937826":{"id":"n1820937826","loc":[-85.6450405,41.9136361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937828":{"id":"n1820937828","loc":[-85.2606853,41.9964073],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937830":{"id":"n1820937830","loc":[-85.097383,42.0911447],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937831":{"id":"n1820937831","loc":[-85.0498207,42.102136],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937832":{"id":"n1820937832","loc":[-85.1232435,42.0763793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937833":{"id":"n1820937833","loc":[-85.394093,42.0055921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937834":{"id":"n1820937834","loc":[-85.3566665,41.9928295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937835":{"id":"n1820937835","loc":[-85.3543276,41.9920002],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937837":{"id":"n1820937837","loc":[-85.084668,42.1034932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937838":{"id":"n1820937838","loc":[-85.4400296,42.0060649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937839":{"id":"n1820937839","loc":[-85.2362246,42.025714],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937840":{"id":"n1820937840","loc":[-85.0409225,42.1012791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937841":{"id":"n1820937841","loc":[-85.2442283,42.019832],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937842":{"id":"n1820937842","loc":[-85.1123001,42.084824],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937843":{"id":"n1820937843","loc":[-85.1603074,42.0638061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937844":{"id":"n1820937844","loc":[-85.1359744,42.0650646],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937845":{"id":"n1820937845","loc":[-85.1757569,42.053849],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937846":{"id":"n1820937846","loc":[-85.5200925,41.9716686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937848":{"id":"n1820937848","loc":[-85.5525322,41.9701315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937849":{"id":"n1820937849","loc":[-85.0406489,42.10149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:10Z","tags":{}},"n1820937850":{"id":"n1820937850","loc":[-85.0142547,42.088825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937851":{"id":"n1820937851","loc":[-85.343749,41.9881884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937852":{"id":"n1820937852","loc":[-85.074996,42.1060205],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937853":{"id":"n1820937853","loc":[-85.2436275,42.0136864],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937854":{"id":"n1820937854","loc":[-85.2641453,41.9980897],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937856":{"id":"n1820937856","loc":[-85.2802343,41.9870086],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937857":{"id":"n1820937857","loc":[-85.0099256,42.0909946],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937858":{"id":"n1820937858","loc":[-85.493957,41.9786079],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937859":{"id":"n1820937859","loc":[-85.0739405,42.1059795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937860":{"id":"n1820937860","loc":[-85.2331605,42.0301423],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937862":{"id":"n1820937862","loc":[-85.2035231,42.0438425],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937863":{"id":"n1820937863","loc":[-85.0884928,42.0986971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937864":{"id":"n1820937864","loc":[-85.131597,42.0690142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937865":{"id":"n1820937865","loc":[-85.3937454,42.0052677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937866":{"id":"n1820937866","loc":[-85.2212729,42.0378561],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937867":{"id":"n1820937867","loc":[-85.0886068,42.0982421],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937868":{"id":"n1820937868","loc":[-85.0875004,42.0968064],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:11Z","tags":{}},"n1820937869":{"id":"n1820937869","loc":[-85.0771323,42.1042642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937870":{"id":"n1820937870","loc":[-85.0164554,42.0894887],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937871":{"id":"n1820937871","loc":[-85.6069102,41.9415577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937872":{"id":"n1820937872","loc":[-85.3273875,41.9704908],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937873":{"id":"n1820937873","loc":[-85.3890891,41.9997983],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937875":{"id":"n1820937875","loc":[-85.5091276,41.9723705],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937876":{"id":"n1820937876","loc":[-85.0770626,42.1047696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937877":{"id":"n1820937877","loc":[-85.612575,41.9419567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937878":{"id":"n1820937878","loc":[-85.3868146,42.0036094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937879":{"id":"n1820937879","loc":[-85.2722738,41.9981204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937880":{"id":"n1820937880","loc":[-85.3064878,41.9723733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937882":{"id":"n1820937882","loc":[-85.1270845,42.0727678],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937884":{"id":"n1820937884","loc":[-85.3316512,41.97923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937885":{"id":"n1820937885","loc":[-85.3932519,42.0042472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937886":{"id":"n1820937886","loc":[-85.2457411,42.0175444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937887":{"id":"n1820937887","loc":[-85.1397509,42.0648415],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937891":{"id":"n1820937891","loc":[-85.3196735,41.9719665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937892":{"id":"n1820937892","loc":[-85.3372473,41.9845033],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937894":{"id":"n1820937894","loc":[-85.3254778,41.9719745],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937897":{"id":"n1820937897","loc":[-85.3185148,41.9691268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937899":{"id":"n1820937899","loc":[-85.5419106,41.9714556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937901":{"id":"n1820937901","loc":[-85.3293509,41.9748368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:12Z","tags":{}},"n1820937903":{"id":"n1820937903","loc":[-85.0798078,42.1028365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937905":{"id":"n1820937905","loc":[-85.3954191,42.0056025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937909":{"id":"n1820937909","loc":[-85.3417534,41.9857155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937913":{"id":"n1820937913","loc":[-84.9927822,42.0857107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937915":{"id":"n1820937915","loc":[-85.5444212,41.9712801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937917":{"id":"n1820937917","loc":[-85.259088,41.9981682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937921":{"id":"n1820937921","loc":[-85.2784576,41.9876358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937922":{"id":"n1820937922","loc":[-84.9971918,42.087753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937924":{"id":"n1820937924","loc":[-85.5310688,41.966899],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820937928":{"id":"n1820937928","loc":[-85.3766436,41.9979326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937930":{"id":"n1820937930","loc":[-85.5494852,41.9704346],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937933":{"id":"n1820937933","loc":[-85.5548281,41.9695412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937935":{"id":"n1820937935","loc":[-85.0768588,42.105088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937937":{"id":"n1820937937","loc":[-85.2646885,41.9978054],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937939":{"id":"n1820937939","loc":[-85.2441532,42.0176082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937941":{"id":"n1820937941","loc":[-85.105553,42.0877928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937943":{"id":"n1820937943","loc":[-85.0879457,42.0958909],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937944":{"id":"n1820937944","loc":[-85.3187015,41.9704402],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937945":{"id":"n1820937945","loc":[-85.5624456,41.970626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937946":{"id":"n1820937946","loc":[-85.0580176,42.1028644],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937948":{"id":"n1820937948","loc":[-85.3016061,41.9726286],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937949":{"id":"n1820937949","loc":[-85.4310388,42.0069418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937950":{"id":"n1820937950","loc":[-85.2945144,41.9740723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937951":{"id":"n1820937951","loc":[-85.1170222,42.082657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:13Z","tags":{}},"n1820937952":{"id":"n1820937952","loc":[-85.0864503,42.0947632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937953":{"id":"n1820937953","loc":[-85.4285926,42.0059533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937970":{"id":"n1820937970","loc":[-85.3629965,41.9938023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937972":{"id":"n1820937972","loc":[-85.2438099,42.0199755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937974":{"id":"n1820937974","loc":[-85.1327654,42.0699285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937977":{"id":"n1820937977","loc":[-85.1515956,42.0611935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937978":{"id":"n1820937978","loc":[-85.0107369,42.0896638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937979":{"id":"n1820937979","loc":[-85.1152626,42.0862083],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937980":{"id":"n1820937980","loc":[-85.4531831,42.0062881],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937981":{"id":"n1820937981","loc":[-85.0341473,42.0985924],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937982":{"id":"n1820937982","loc":[-85.0877485,42.0960171],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937983":{"id":"n1820937983","loc":[-85.2756373,41.9951742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937984":{"id":"n1820937984","loc":[-85.2965421,41.9714401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937985":{"id":"n1820937985","loc":[-85.2409775,42.0226934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937986":{"id":"n1820937986","loc":[-85.0170723,42.0900579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937987":{"id":"n1820937987","loc":[-85.1034663,42.0880555],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937988":{"id":"n1820937988","loc":[-85.0585071,42.1031577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937990":{"id":"n1820937990","loc":[-85.0819174,42.1032373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937992":{"id":"n1820937992","loc":[-85.0546608,42.1030542],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937993":{"id":"n1820937993","loc":[-85.0100811,42.0906125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937995":{"id":"n1820937995","loc":[-85.6304278,41.9432655],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820937997":{"id":"n1820937997","loc":[-85.0255628,42.092778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:14Z","tags":{}},"n1820938011":{"id":"n1820938011","loc":[-85.2316756,42.0317146],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938012":{"id":"n1820938012","loc":[-85.4067917,42.008042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938013":{"id":"n1820938013","loc":[-85.390398,42.0028759],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938014":{"id":"n1820938014","loc":[-85.0161604,42.0886527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938015":{"id":"n1820938015","loc":[-85.125337,42.0744589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938016":{"id":"n1820938016","loc":[-85.2151317,42.0404801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938017":{"id":"n1820938017","loc":[-85.3165085,41.9706025],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938018":{"id":"n1820938018","loc":[-85.5641193,41.9640688],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938019":{"id":"n1820938019","loc":[-85.147583,42.0642203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938022":{"id":"n1820938022","loc":[-85.2803781,41.9947886],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938024":{"id":"n1820938024","loc":[-85.2692469,41.9982053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938026":{"id":"n1820938026","loc":[-85.4321975,42.0067505],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938028":{"id":"n1820938028","loc":[-85.572535,41.9633405],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938030":{"id":"n1820938030","loc":[-85.3237505,41.9716475],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938032":{"id":"n1820938032","loc":[-85.6487698,41.9141583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938033":{"id":"n1820938033","loc":[-85.0526371,42.1038315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938034":{"id":"n1820938034","loc":[-85.088069,42.0978731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938035":{"id":"n1820938035","loc":[-85.2516312,42.0102267],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938039":{"id":"n1820938039","loc":[-85.2731374,41.9982958],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:15Z","tags":{}},"n1820938040":{"id":"n1820938040","loc":[-85.5453224,41.9713439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938041":{"id":"n1820938041","loc":[-85.4480548,42.0049647],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938043":{"id":"n1820938043","loc":[-85.2504081,42.010322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938045":{"id":"n1820938045","loc":[-85.2663447,41.99919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938046":{"id":"n1820938046","loc":[-85.0507287,42.102907],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938047":{"id":"n1820938047","loc":[-85.0408246,42.1024743],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938048":{"id":"n1820938048","loc":[-85.2796335,41.9866099],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938050":{"id":"n1820938050","loc":[-85.452475,42.0061127],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938051":{"id":"n1820938051","loc":[-85.2410569,42.0128147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938052":{"id":"n1820938052","loc":[-85.0413302,42.1011477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938053":{"id":"n1820938053","loc":[-85.6327409,41.9197627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938056":{"id":"n1820938056","loc":[-85.1072039,42.0857994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938057":{"id":"n1820938057","loc":[-85.2001114,42.0448145],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938058":{"id":"n1820938058","loc":[-85.2655347,41.9978186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938059":{"id":"n1820938059","loc":[-85.2330918,42.0304874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938060":{"id":"n1820938060","loc":[-85.2601113,41.9966545],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938061":{"id":"n1820938061","loc":[-85.5397863,41.9708494],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938062":{"id":"n1820938062","loc":[-85.2702085,41.9977217],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938063":{"id":"n1820938063","loc":[-85.2219982,42.03699],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938064":{"id":"n1820938064","loc":[-85.0668957,42.105121],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938065":{"id":"n1820938065","loc":[-85.2328665,42.0270769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938066":{"id":"n1820938066","loc":[-85.3189654,41.9694778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938067":{"id":"n1820938067","loc":[-85.3814115,42.0022915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938068":{"id":"n1820938068","loc":[-85.2759108,41.9956008],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:16Z","tags":{}},"n1820938069":{"id":"n1820938069","loc":[-85.0391938,42.1034853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938070":{"id":"n1820938070","loc":[-85.2850623,41.9810353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938071":{"id":"n1820938071","loc":[-85.538074,41.970855],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938073":{"id":"n1820938073","loc":[-85.1319661,42.0670932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938074":{"id":"n1820938074","loc":[-85.2816763,41.9913678],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938075":{"id":"n1820938075","loc":[-85.3182144,41.9700282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938076":{"id":"n1820938076","loc":[-85.5909028,41.9458989],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938077":{"id":"n1820938077","loc":[-85.4057617,42.0074361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938078":{"id":"n1820938078","loc":[-85.2620438,41.9967729],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938079":{"id":"n1820938079","loc":[-85.1122143,42.0851107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938080":{"id":"n1820938080","loc":[-85.2443785,42.0174567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938081":{"id":"n1820938081","loc":[-85.0319733,42.0953853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938082":{"id":"n1820938082","loc":[-85.0878276,42.09443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938083":{"id":"n1820938083","loc":[-85.0271789,42.0935809],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938084":{"id":"n1820938084","loc":[-85.0326399,42.0974222],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938085":{"id":"n1820938085","loc":[-85.3989167,42.0065592],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938086":{"id":"n1820938086","loc":[-85.3263361,41.9721261],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938087":{"id":"n1820938087","loc":[-85.2547855,42.0037134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938088":{"id":"n1820938088","loc":[-85.4373259,42.005746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938089":{"id":"n1820938089","loc":[-85.3094275,41.9699245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938090":{"id":"n1820938090","loc":[-85.2783246,41.9872793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938092":{"id":"n1820938092","loc":[-85.0815633,42.1025169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938093":{"id":"n1820938093","loc":[-85.1788511,42.0522134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938095":{"id":"n1820938095","loc":[-85.2830345,41.9816733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938096":{"id":"n1820938096","loc":[-85.0744984,42.1059835],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938097":{"id":"n1820938097","loc":[-85.2788396,41.9879333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:17Z","tags":{}},"n1820938098":{"id":"n1820938098","loc":[-85.3640093,41.9946531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938099":{"id":"n1820938099","loc":[-85.291167,41.9787463],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938100":{"id":"n1820938100","loc":[-85.0772436,42.1038156],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938101":{"id":"n1820938101","loc":[-85.00563,42.0887482],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938102":{"id":"n1820938102","loc":[-85.0326881,42.0961245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938104":{"id":"n1820938104","loc":[-85.0530448,42.1038634],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938105":{"id":"n1820938105","loc":[-85.2625266,41.9970639],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938106":{"id":"n1820938106","loc":[-85.2827556,41.9823512],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938107":{"id":"n1820938107","loc":[-85.2784319,41.9910752],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938108":{"id":"n1820938108","loc":[-85.0882099,42.094393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938109":{"id":"n1820938109","loc":[-85.5718484,41.9645371],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938110":{"id":"n1820938110","loc":[-85.2559764,42.0099317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938111":{"id":"n1820938111","loc":[-85.2969284,41.973179],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938113":{"id":"n1820938113","loc":[-85.3875055,42.0019726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938114":{"id":"n1820938114","loc":[-85.4250779,42.0068199],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938115":{"id":"n1820938115","loc":[-85.0645367,42.104889],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938116":{"id":"n1820938116","loc":[-85.1636762,42.0623724],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938117":{"id":"n1820938117","loc":[-85.0757322,42.1055935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:18Z","tags":{}},"n1820938118":{"id":"n1820938118","loc":[-85.3695197,41.9981559],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938120":{"id":"n1820938120","loc":[-85.1297516,42.0671027],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938121":{"id":"n1820938121","loc":[-85.1057448,42.0875551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938122":{"id":"n1820938122","loc":[-85.2805175,41.9943182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938123":{"id":"n1820938123","loc":[-85.2545173,42.0040722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938124":{"id":"n1820938124","loc":[-84.9966607,42.0871319],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938125":{"id":"n1820938125","loc":[-85.0099899,42.0904612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938126":{"id":"n1820938126","loc":[-85.2489919,42.0091102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938127":{"id":"n1820938127","loc":[-85.0342706,42.0979476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938128":{"id":"n1820938128","loc":[-85.1080891,42.0855884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938129":{"id":"n1820938129","loc":[-85.0128183,42.0905356],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938130":{"id":"n1820938130","loc":[-85.631608,41.9434251],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938131":{"id":"n1820938131","loc":[-85.2551975,42.0008524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938132":{"id":"n1820938132","loc":[-85.6421823,41.9096233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938133":{"id":"n1820938133","loc":[-85.0125059,42.0906284],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938134":{"id":"n1820938134","loc":[-85.5499358,41.9701793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938135":{"id":"n1820938135","loc":[-85.5472107,41.9712323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938136":{"id":"n1820938136","loc":[-85.2760758,41.9958691],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938137":{"id":"n1820938137","loc":[-85.276678,41.9960433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938138":{"id":"n1820938138","loc":[-85.0570319,42.1024731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938140":{"id":"n1820938140","loc":[-85.2394325,42.0227492],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938142":{"id":"n1820938142","loc":[-85.5666341,41.9638829],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938144":{"id":"n1820938144","loc":[-85.258101,41.9996353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938147":{"id":"n1820938147","loc":[-85.2129645,42.0413565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:19Z","tags":{}},"n1820938149":{"id":"n1820938149","loc":[-84.9962369,42.0868373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938151":{"id":"n1820938151","loc":[-85.2570386,42.0084968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938153":{"id":"n1820938153","loc":[-85.3971142,42.0050285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938155":{"id":"n1820938155","loc":[-85.1072093,42.0855566],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938157":{"id":"n1820938157","loc":[-85.2840323,41.9920959],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938159":{"id":"n1820938159","loc":[-85.1187924,42.0816458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938161":{"id":"n1820938161","loc":[-85.2681324,41.9985788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938163":{"id":"n1820938163","loc":[-85.0887034,42.0984969],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938165":{"id":"n1820938165","loc":[-85.4133405,42.0073141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938166":{"id":"n1820938166","loc":[-85.0097445,42.0902888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938167":{"id":"n1820938167","loc":[-85.0828133,42.1037388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938168":{"id":"n1820938168","loc":[-85.0549599,42.1030833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938169":{"id":"n1820938169","loc":[-85.4571528,42.0010421],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938178":{"id":"n1820938178","loc":[-85.2706644,41.9975941],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938180":{"id":"n1820938180","loc":[-85.2258606,42.0335794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938182":{"id":"n1820938182","loc":[-85.2832276,41.9814659],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938184":{"id":"n1820938184","loc":[-85.1082299,42.0860928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938185":{"id":"n1820938185","loc":[-85.3839392,42.0022381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938186":{"id":"n1820938186","loc":[-85.2772131,41.995905],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938187":{"id":"n1820938187","loc":[-85.1044895,42.0879214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938188":{"id":"n1820938188","loc":[-85.2135267,42.0407087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938189":{"id":"n1820938189","loc":[-85.2543993,42.0044628],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938190":{"id":"n1820938190","loc":[-85.1501793,42.0617351],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938191":{"id":"n1820938191","loc":[-85.3350587,41.9820469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938192":{"id":"n1820938192","loc":[-85.1350731,42.0655735],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938193":{"id":"n1820938193","loc":[-85.0404008,42.1028843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:20Z","tags":{}},"n1820938194":{"id":"n1820938194","loc":[-85.6323161,41.943042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938195":{"id":"n1820938195","loc":[-85.1259593,42.0742837],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938196":{"id":"n1820938196","loc":[-85.4562988,42.0033758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938197":{"id":"n1820938197","loc":[-85.256824,42.0056826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938198":{"id":"n1820938198","loc":[-85.2742103,41.9963862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938199":{"id":"n1820938199","loc":[-85.0380888,42.1037877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938200":{"id":"n1820938200","loc":[-85.47404,41.9944721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938201":{"id":"n1820938201","loc":[-85.103021,42.087948],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938202":{"id":"n1820938202","loc":[-85.4030151,42.0065113],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938203":{"id":"n1820938203","loc":[-85.2113981,42.040735],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938204":{"id":"n1820938204","loc":[-85.2603433,41.9965137],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938206":{"id":"n1820938206","loc":[-85.1669378,42.0607634],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938207":{"id":"n1820938207","loc":[-85.0642027,42.1046076],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938208":{"id":"n1820938208","loc":[-85.2812428,41.9915696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938209":{"id":"n1820938209","loc":[-85.0839559,42.1038343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938210":{"id":"n1820938210","loc":[-85.1239946,42.0769368],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938211":{"id":"n1820938211","loc":[-85.2311177,42.0283042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938212":{"id":"n1820938212","loc":[-85.2791614,41.9882682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938213":{"id":"n1820938213","loc":[-85.2674941,41.9987582],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938214":{"id":"n1820938214","loc":[-85.352787,41.9919579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938215":{"id":"n1820938215","loc":[-85.0874146,42.0952182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938216":{"id":"n1820938216","loc":[-85.0069711,42.0877092],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938217":{"id":"n1820938217","loc":[-85.2059049,42.0404004],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938218":{"id":"n1820938218","loc":[-85.2403552,42.0227332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938219":{"id":"n1820938219","loc":[-85.2492923,42.0098915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:21Z","tags":{}},"n1820938220":{"id":"n1820938220","loc":[-85.269778,41.9979541],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938221":{"id":"n1820938221","loc":[-85.2097673,42.0389024],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938222":{"id":"n1820938222","loc":[-85.0845942,42.1032015],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938223":{"id":"n1820938223","loc":[-84.993206,42.0858142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938224":{"id":"n1820938224","loc":[-85.2108187,42.0402729],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938225":{"id":"n1820938225","loc":[-84.9893959,42.0873043],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938226":{"id":"n1820938226","loc":[-85.2952332,41.9719984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938227":{"id":"n1820938227","loc":[-85.4100961,42.0081536],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938228":{"id":"n1820938228","loc":[-85.3299088,41.9785696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938229":{"id":"n1820938229","loc":[-85.2258176,42.0340097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938230":{"id":"n1820938230","loc":[-85.3146739,41.9711449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938231":{"id":"n1820938231","loc":[-85.5447645,41.9712801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938232":{"id":"n1820938232","loc":[-85.5510087,41.9705941],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938233":{"id":"n1820938233","loc":[-85.5122389,41.9703445],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938234":{"id":"n1820938234","loc":[-85.2792687,41.9865381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938235":{"id":"n1820938235","loc":[-85.1475229,42.0630151],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938237":{"id":"n1820938237","loc":[-85.0332889,42.0996034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938238":{"id":"n1820938238","loc":[-85.2588882,41.9986877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938239":{"id":"n1820938239","loc":[-85.0656458,42.1050892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:22Z","tags":{}},"n1820938240":{"id":"n1820938240","loc":[-84.9913915,42.086098],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938241":{"id":"n1820938241","loc":[-85.4752416,41.9944402],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938242":{"id":"n1820938242","loc":[-85.1214304,42.0791147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938243":{"id":"n1820938243","loc":[-85.0075183,42.0886925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938244":{"id":"n1820938244","loc":[-85.1052888,42.0872087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938245":{"id":"n1820938245","loc":[-85.3104252,41.9703393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938246":{"id":"n1820938246","loc":[-85.232109,42.0318158],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938247":{"id":"n1820938247","loc":[-85.0756075,42.1059528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938248":{"id":"n1820938248","loc":[-85.0075612,42.0890866],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938249":{"id":"n1820938249","loc":[-85.1013312,42.0897474],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938250":{"id":"n1820938250","loc":[-85.1168076,42.0828919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938251":{"id":"n1820938251","loc":[-85.2951367,41.9723334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938252":{"id":"n1820938252","loc":[-85.0879363,42.0976053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938253":{"id":"n1820938253","loc":[-85.0354763,42.1021838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938254":{"id":"n1820938254","loc":[-85.2379627,42.0236339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938255":{"id":"n1820938255","loc":[-85.1308245,42.0685364],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938256":{"id":"n1820938256","loc":[-85.0914446,42.0934774],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938257":{"id":"n1820938257","loc":[-85.2436812,42.014069],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938258":{"id":"n1820938258","loc":[-85.0682529,42.1056106],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938259":{"id":"n1820938259","loc":[-85.290652,41.9766805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938260":{"id":"n1820938260","loc":[-85.0133494,42.0897434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938261":{"id":"n1820938261","loc":[-85.2753047,41.9949429],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938262":{"id":"n1820938262","loc":[-85.0314691,42.0950788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:23Z","tags":{}},"n1820938263":{"id":"n1820938263","loc":[-85.3444786,41.9908359],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938264":{"id":"n1820938264","loc":[-85.0443115,42.1009061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938265":{"id":"n1820938265","loc":[-85.0634853,42.1043159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938267":{"id":"n1820938267","loc":[-85.3978223,42.0053952],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938268":{"id":"n1820938268","loc":[-85.0228659,42.0911885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938269":{"id":"n1820938269","loc":[-85.0220237,42.0906272],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938270":{"id":"n1820938270","loc":[-85.1061525,42.0863369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938271":{"id":"n1820938271","loc":[-85.2382309,42.0233708],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938272":{"id":"n1820938272","loc":[-85.310672,41.9702755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938273":{"id":"n1820938273","loc":[-85.1448192,42.0652613],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938274":{"id":"n1820938274","loc":[-85.6036057,41.9403766],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938275":{"id":"n1820938275","loc":[-85.0778941,42.1032413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938276":{"id":"n1820938276","loc":[-85.1279374,42.0723974],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938277":{"id":"n1820938277","loc":[-85.2806635,41.9847836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938278":{"id":"n1820938278","loc":[-85.2653201,41.9976352],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938279":{"id":"n1820938279","loc":[-85.0351665,42.1001805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938280":{"id":"n1820938280","loc":[-85.0718269,42.1056253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938281":{"id":"n1820938281","loc":[-85.2574248,42.0075322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938282":{"id":"n1820938282","loc":[-85.126666,42.0740778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938283":{"id":"n1820938283","loc":[-85.077705,42.1034733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938284":{"id":"n1820938284","loc":[-85.3535552,41.9919045],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938286":{"id":"n1820938286","loc":[-85.2810711,41.9866657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938287":{"id":"n1820938287","loc":[-85.4567494,42.0019885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938288":{"id":"n1820938288","loc":[-85.2642419,41.9992936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938289":{"id":"n1820938289","loc":[-85.2643344,41.9980925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938290":{"id":"n1820938290","loc":[-85.3270335,41.9776125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938291":{"id":"n1820938291","loc":[-85.1200584,42.0795077],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:24Z","tags":{}},"n1820938292":{"id":"n1820938292","loc":[-85.2290792,42.0340256],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938293":{"id":"n1820938293","loc":[-85.6015887,41.9401372],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938294":{"id":"n1820938294","loc":[-85.5370869,41.970488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938295":{"id":"n1820938295","loc":[-85.3108866,41.9698048],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938297":{"id":"n1820938297","loc":[-85.1556511,42.0628184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938298":{"id":"n1820938298","loc":[-85.0027922,42.0875221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938300":{"id":"n1820938300","loc":[-85.3873338,42.0040614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938301":{"id":"n1820938301","loc":[-85.0350753,42.1004034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938302":{"id":"n1820938302","loc":[-85.6239476,41.9411906],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938304":{"id":"n1820938304","loc":[-85.0118246,42.0897964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938306":{"id":"n1820938306","loc":[-85.4796877,41.995275],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938307":{"id":"n1820938307","loc":[-85.5388636,41.9707856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938309":{"id":"n1820938309","loc":[-85.2971902,41.9727773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938310":{"id":"n1820938310","loc":[-85.5426831,41.9715513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938311":{"id":"n1820938311","loc":[-85.2798373,41.9836671],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938312":{"id":"n1820938312","loc":[-85.2432198,42.0104017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938313":{"id":"n1820938313","loc":[-85.2650412,41.9987554],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938317":{"id":"n1820938317","loc":[-85.0015423,42.0882386],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:25Z","tags":{}},"n1820938318":{"id":"n1820938318","loc":[-85.1409783,42.064879],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938319":{"id":"n1820938319","loc":[-85.1691908,42.058995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938320":{"id":"n1820938320","loc":[-85.1059165,42.0864882],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938321":{"id":"n1820938321","loc":[-85.3664941,41.9965771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938323":{"id":"n1820938323","loc":[-85.3143198,41.9710971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938324":{"id":"n1820938324","loc":[-85.0016067,42.0880675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938325":{"id":"n1820938325","loc":[-85.0148139,42.0887164],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938326":{"id":"n1820938326","loc":[-85.0324682,42.0959056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938327":{"id":"n1820938327","loc":[-85.0898661,42.0939921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938328":{"id":"n1820938328","loc":[-85.2556427,42.0004936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938329":{"id":"n1820938329","loc":[-85.6287112,41.9407437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938330":{"id":"n1820938330","loc":[-84.9913392,42.0866701],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938331":{"id":"n1820938331","loc":[-85.2685777,41.9984632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938332":{"id":"n1820938332","loc":[-85.0078884,42.0901614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938333":{"id":"n1820938333","loc":[-84.999642,42.0878616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938334":{"id":"n1820938334","loc":[-85.0188909,42.0899186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938335":{"id":"n1820938335","loc":[-85.2830238,41.9819843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938336":{"id":"n1820938336","loc":[-85.2491421,42.0096204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:26Z","tags":{}},"n1820938337":{"id":"n1820938337","loc":[-85.0585701,42.1034295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938338":{"id":"n1820938338","loc":[-85.0651965,42.1051636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938339":{"id":"n1820938339","loc":[-85.0583944,42.104292],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938340":{"id":"n1820938340","loc":[-85.119876,42.0801567],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938341":{"id":"n1820938341","loc":[-85.0943937,42.0931323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938342":{"id":"n1820938342","loc":[-85.1504583,42.0613209],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938343":{"id":"n1820938343","loc":[-85.0425426,42.1019836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938345":{"id":"n1820938345","loc":[-84.9991391,42.0878206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938346":{"id":"n1820938346","loc":[-85.2563841,42.0094614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938347":{"id":"n1820938347","loc":[-85.0515387,42.103297],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938348":{"id":"n1820938348","loc":[-85.0857261,42.1003636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938349":{"id":"n1820938349","loc":[-85.078971,42.1029241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938350":{"id":"n1820938350","loc":[-85.5699558,41.958931],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938351":{"id":"n1820938351","loc":[-85.3181285,41.9696533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938352":{"id":"n1820938352","loc":[-85.5998506,41.9402329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938353":{"id":"n1820938353","loc":[-85.2567277,42.000317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938354":{"id":"n1820938354","loc":[-85.3082795,41.9708338],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938355":{"id":"n1820938355","loc":[-85.3127856,41.9692784],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938356":{"id":"n1820938356","loc":[-85.0340775,42.1010721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938357":{"id":"n1820938357","loc":[-85.3158111,41.9706583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938359":{"id":"n1820938359","loc":[-85.2312035,42.0280412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938360":{"id":"n1820938360","loc":[-85.2448613,42.018477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938361":{"id":"n1820938361","loc":[-85.29077,41.9759068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:27Z","tags":{}},"n1820938364":{"id":"n1820938364","loc":[-85.3677387,41.9976615],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938365":{"id":"n1820938365","loc":[-85.0785204,42.1030355],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938366":{"id":"n1820938366","loc":[-85.2262039,42.0333722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938367":{"id":"n1820938367","loc":[-85.1226011,42.0780902],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938368":{"id":"n1820938368","loc":[-85.3229673,41.971129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938369":{"id":"n1820938369","loc":[-85.385334,42.0000056],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938370":{"id":"n1820938370","loc":[-85.000098,42.0879094],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938372":{"id":"n1820938372","loc":[-85.3852481,42.0025091],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938373":{"id":"n1820938373","loc":[-85.3770513,41.9982515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938374":{"id":"n1820938374","loc":[-85.6278314,41.9405362],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938375":{"id":"n1820938375","loc":[-85.6355133,41.9344068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938376":{"id":"n1820938376","loc":[-85.635642,41.9324753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938377":{"id":"n1820938377","loc":[-85.3154463,41.970778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938378":{"id":"n1820938378","loc":[-85.0920334,42.093411],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938379":{"id":"n1820938379","loc":[-85.3269155,41.9722297],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938381":{"id":"n1820938381","loc":[-85.1134334,42.0849184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938382":{"id":"n1820938382","loc":[-85.005968,42.088585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938384":{"id":"n1820938384","loc":[-85.1245203,42.0757183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938385":{"id":"n1820938385","loc":[-85.020704,42.0905396],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938386":{"id":"n1820938386","loc":[-85.119585,42.0808984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938387":{"id":"n1820938387","loc":[-85.0072447,42.0880117],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938388":{"id":"n1820938388","loc":[-85.2742908,41.9960273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938389":{"id":"n1820938389","loc":[-85.3275807,41.9696852],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938390":{"id":"n1820938390","loc":[-85.2385635,42.0231556],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:28Z","tags":{}},"n1820938392":{"id":"n1820938392","loc":[-85.0202856,42.0900778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938393":{"id":"n1820938393","loc":[-85.2067847,42.0395398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938394":{"id":"n1820938394","loc":[-85.5183544,41.9713495],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938396":{"id":"n1820938396","loc":[-85.5073037,41.9736787],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938397":{"id":"n1820938397","loc":[-85.2519638,42.0114225],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938398":{"id":"n1820938398","loc":[-85.287487,41.9793285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938399":{"id":"n1820938399","loc":[-85.2298088,42.0336431],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938400":{"id":"n1820938400","loc":[-85.229444,42.0339141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938401":{"id":"n1820938401","loc":[-85.2421791,42.0220239],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938402":{"id":"n1820938402","loc":[-85.2976687,41.9737612],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938403":{"id":"n1820938403","loc":[-85.3622069,41.993473],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938404":{"id":"n1820938404","loc":[-85.2465458,42.014906],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938405":{"id":"n1820938405","loc":[-85.5724663,41.9639412],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938406":{"id":"n1820938406","loc":[-85.3708501,41.9982037],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938408":{"id":"n1820938408","loc":[-85.2564592,42.0055311],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938409":{"id":"n1820938409","loc":[-85.1192846,42.0810856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938410":{"id":"n1820938410","loc":[-85.5623812,41.971663],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938411":{"id":"n1820938411","loc":[-85.3221948,41.9719665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938412":{"id":"n1820938412","loc":[-85.5168738,41.9710305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938413":{"id":"n1820938413","loc":[-85.4546852,42.0061127],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938414":{"id":"n1820938414","loc":[-85.5896153,41.9463617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:29Z","tags":{}},"n1820938415":{"id":"n1820938415","loc":[-85.2978189,41.9722138],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938416":{"id":"n1820938416","loc":[-85.1021681,42.0883581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938417":{"id":"n1820938417","loc":[-85.2797193,41.9912984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938419":{"id":"n1820938419","loc":[-85.2362461,42.0248533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938420":{"id":"n1820938420","loc":[-85.4833639,41.9846252],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820938422":{"id":"n1820938422","loc":[-85.3281064,41.9689433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938424":{"id":"n1820938424","loc":[-85.2416963,42.0130088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938425":{"id":"n1820938425","loc":[-85.5718655,41.9564577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938426":{"id":"n1820938426","loc":[-85.0512812,42.1030701],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938427":{"id":"n1820938427","loc":[-85.1273527,42.0723616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938428":{"id":"n1820938428","loc":[-85.0215033,42.0904083],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938429":{"id":"n1820938429","loc":[-85.6169953,41.942228],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938430":{"id":"n1820938430","loc":[-85.2829165,41.9907243],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938431":{"id":"n1820938431","loc":[-85.2240796,42.0374203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938432":{"id":"n1820938432","loc":[-85.0167598,42.0898442],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938433":{"id":"n1820938433","loc":[-85.2132649,42.0411334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938434":{"id":"n1820938434","loc":[-85.2293839,42.031513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:30Z","tags":{}},"n1820938435":{"id":"n1820938435","loc":[-85.1203374,42.0792608],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938436":{"id":"n1820938436","loc":[-85.109571,42.086268],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938437":{"id":"n1820938437","loc":[-85.1079026,42.0853842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938438":{"id":"n1820938438","loc":[-85.109237,42.0862413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938439":{"id":"n1820938439","loc":[-85.2259936,42.0350831],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938440":{"id":"n1820938440","loc":[-85.3669705,41.99679],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938441":{"id":"n1820938441","loc":[-85.2418143,42.0223507],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938442":{"id":"n1820938442","loc":[-85.3101248,41.9702515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938443":{"id":"n1820938443","loc":[-85.069315,42.1059688],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938444":{"id":"n1820938444","loc":[-85.205862,42.0410378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938445":{"id":"n1820938445","loc":[-85.0388076,42.1036604],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938446":{"id":"n1820938446","loc":[-85.2225389,42.0370115],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938447":{"id":"n1820938447","loc":[-85.3241474,41.9719346],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938448":{"id":"n1820938448","loc":[-85.3125496,41.9690789],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938449":{"id":"n1820938449","loc":[-85.1146497,42.0857039],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938450":{"id":"n1820938450","loc":[-85.1333944,42.0714963],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938451":{"id":"n1820938451","loc":[-85.5619306,41.9720937],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938452":{"id":"n1820938452","loc":[-85.2553651,42.0006479],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938453":{"id":"n1820938453","loc":[-85.3151137,41.9710093],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938454":{"id":"n1820938454","loc":[-85.2592315,41.9977947],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938455":{"id":"n1820938455","loc":[-85.2655723,41.9995966],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:31Z","tags":{}},"n1820938456":{"id":"n1820938456","loc":[-85.4820652,41.9959233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938459":{"id":"n1820938459","loc":[-85.450737,42.0055068],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938460":{"id":"n1820938460","loc":[-85.2428658,42.0205573],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938461":{"id":"n1820938461","loc":[-85.0835576,42.1021559],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938462":{"id":"n1820938462","loc":[-85.244636,42.0194733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938463":{"id":"n1820938463","loc":[-85.5702562,41.9581332],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938465":{"id":"n1820938465","loc":[-85.5680031,41.9659515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938467":{"id":"n1820938467","loc":[-85.2798752,41.9948353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938468":{"id":"n1820938468","loc":[-85.0477407,42.1015537],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938469":{"id":"n1820938469","loc":[-85.6403842,41.913732],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938470":{"id":"n1820938470","loc":[-85.0396029,42.103289],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938471":{"id":"n1820938471","loc":[-85.2824702,41.9907777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938472":{"id":"n1820938472","loc":[-85.2969284,41.9735538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938474":{"id":"n1820938474","loc":[-85.401041,42.0070853],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938475":{"id":"n1820938475","loc":[-85.4116625,42.0073883],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938476":{"id":"n1820938476","loc":[-85.0437764,42.1016214],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938477":{"id":"n1820938477","loc":[-85.3643269,41.9958436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938478":{"id":"n1820938478","loc":[-85.3895182,42.0009465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938479":{"id":"n1820938479","loc":[-85.636157,41.9333373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:32Z","tags":{}},"n1820938480":{"id":"n1820938480","loc":[-85.2811355,41.9858044],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938481":{"id":"n1820938481","loc":[-85.0239052,42.092153],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938482":{"id":"n1820938482","loc":[-85.2558798,42.0053557],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938483":{"id":"n1820938483","loc":[-85.2544422,42.0047339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938484":{"id":"n1820938484","loc":[-85.4864683,41.9843183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938485":{"id":"n1820938485","loc":[-85.2554185,42.0031075],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938486":{"id":"n1820938486","loc":[-85.3082795,41.9712486],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938487":{"id":"n1820938487","loc":[-85.2433378,42.0133436],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938488":{"id":"n1820938488","loc":[-85.0216696,42.0904162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938489":{"id":"n1820938489","loc":[-85.2546138,42.0050289],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938490":{"id":"n1820938490","loc":[-85.2717521,41.9977349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938491":{"id":"n1820938491","loc":[-85.0100489,42.0908195],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938492":{"id":"n1820938492","loc":[-85.207879,42.0392211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938493":{"id":"n1820938493","loc":[-85.0007363,42.0882836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938494":{"id":"n1820938494","loc":[-85.5775303,41.9504097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938495":{"id":"n1820938495","loc":[-85.1131584,42.0847683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938496":{"id":"n1820938496","loc":[-85.0887825,42.0941633],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938497":{"id":"n1820938497","loc":[-85.1185926,42.0818938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938498":{"id":"n1820938498","loc":[-85.2748487,41.9948712],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938499":{"id":"n1820938499","loc":[-85.2566952,42.0090788],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938500":{"id":"n1820938500","loc":[-85.0774757,42.1036234],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938501":{"id":"n1820938501","loc":[-85.4190869,42.008903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938502":{"id":"n1820938502","loc":[-85.1140395,42.0850577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938503":{"id":"n1820938503","loc":[-85.1136104,42.0848627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938504":{"id":"n1820938504","loc":[-85.5828089,41.9480638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938505":{"id":"n1820938505","loc":[-85.625514,41.9405202],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938506":{"id":"n1820938506","loc":[-85.2063384,42.0398322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938507":{"id":"n1820938507","loc":[-85.3395476,41.9851636],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:33Z","tags":{}},"n1820938508":{"id":"n1820938508","loc":[-85.0328853,42.0963606],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938510":{"id":"n1820938510","loc":[-85.1170369,42.0843702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938511":{"id":"n1820938511","loc":[-85.2784748,41.9868487],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938512":{"id":"n1820938512","loc":[-85.6310501,41.9435528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938514":{"id":"n1820938514","loc":[-85.0334284,42.0981028],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938515":{"id":"n1820938515","loc":[-84.9912091,42.0868226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938516":{"id":"n1820938516","loc":[-85.2806141,41.9940351],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938517":{"id":"n1820938517","loc":[-85.1233025,42.0776734],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938518":{"id":"n1820938518","loc":[-85.2047891,42.0429023],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938519":{"id":"n1820938519","loc":[-85.1475443,42.0648312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938520":{"id":"n1820938520","loc":[-85.2644685,41.9990891],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938521":{"id":"n1820938521","loc":[-85.1056281,42.0872553],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938522":{"id":"n1820938522","loc":[-85.4813184,41.9930105],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938523":{"id":"n1820938523","loc":[-85.321551,41.9722936],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938524":{"id":"n1820938524","loc":[-85.1564664,42.0631211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938525":{"id":"n1820938525","loc":[-85.4149885,42.0079144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938527":{"id":"n1820938527","loc":[-85.2861888,41.9803653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938528":{"id":"n1820938528","loc":[-85.1301379,42.0682178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938529":{"id":"n1820938529","loc":[-85.4156537,42.0084247],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938530":{"id":"n1820938530","loc":[-85.245151,42.0176082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938531":{"id":"n1820938531","loc":[-85.457818,42.0001651],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:34Z","tags":{}},"n1820938532":{"id":"n1820938532","loc":[-85.310951,41.9694538],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938533":{"id":"n1820938533","loc":[-85.1509089,42.0611298],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938534":{"id":"n1820938534","loc":[-85.1108249,42.086321],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938535":{"id":"n1820938535","loc":[-85.1260344,42.0740687],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938536":{"id":"n1820938536","loc":[-85.4561228,42.0042791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938537":{"id":"n1820938537","loc":[-85.2805082,41.9945761],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938538":{"id":"n1820938538","loc":[-85.273352,41.9981921],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938539":{"id":"n1820938539","loc":[-85.1084216,42.0864364],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938540":{"id":"n1820938540","loc":[-85.5009737,41.9773637],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938541":{"id":"n1820938541","loc":[-85.3960843,42.0051879],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938542":{"id":"n1820938542","loc":[-85.3425088,41.9865034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938545":{"id":"n1820938545","loc":[-84.9937907,42.0860849],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938546":{"id":"n1820938546","loc":[-85.1084176,42.086065],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938547":{"id":"n1820938547","loc":[-85.3492851,41.9924786],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938548":{"id":"n1820938548","loc":[-85.2512235,42.0101147],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938549":{"id":"n1820938549","loc":[-85.3717298,41.9979326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:35Z","tags":{}},"n1820938551":{"id":"n1820938551","loc":[-85.2573712,42.0064081],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938552":{"id":"n1820938552","loc":[-85.2514596,42.010139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938553":{"id":"n1820938553","loc":[-85.416512,42.0088073],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938554":{"id":"n1820938554","loc":[-85.4365964,42.0061606],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938555":{"id":"n1820938555","loc":[-85.4552431,42.0057301],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938556":{"id":"n1820938556","loc":[-85.2916283,41.9778769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938557":{"id":"n1820938557","loc":[-85.100709,42.0902968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938558":{"id":"n1820938558","loc":[-85.4703064,41.9965771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938559":{"id":"n1820938559","loc":[-85.3134722,41.9696134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938560":{"id":"n1820938560","loc":[-85.4834213,41.9885768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938561":{"id":"n1820938561","loc":[-85.2740641,41.9975236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938562":{"id":"n1820938562","loc":[-85.148334,42.0623405],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938563":{"id":"n1820938563","loc":[-85.2358598,42.0263675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938565":{"id":"n1820938565","loc":[-85.2902979,41.9790892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938566":{"id":"n1820938566","loc":[-85.2528865,42.0112869],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938567":{"id":"n1820938567","loc":[-85.2595319,41.9973003],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938568":{"id":"n1820938568","loc":[-85.071151,42.105689],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938570":{"id":"n1820938570","loc":[-85.299278,41.9732188],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938571":{"id":"n1820938571","loc":[-85.0354669,42.1024771],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938583":{"id":"n1820938583","loc":[-85.3313937,41.972562],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938585":{"id":"n1820938585","loc":[-85.0756933,42.1058334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938587":{"id":"n1820938587","loc":[-85.3130324,41.9694219],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:36Z","tags":{}},"n1820938590":{"id":"n1820938590","loc":[-85.0934227,42.0931681],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938592":{"id":"n1820938592","loc":[-85.3517956,41.9922553],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938593":{"id":"n1820938593","loc":[-85.4023971,42.0065169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938594":{"id":"n1820938594","loc":[-85.3506798,41.9925583],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938595":{"id":"n1820938595","loc":[-85.3673524,41.9971193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938596":{"id":"n1820938596","loc":[-85.1073608,42.0853523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938597":{"id":"n1820938597","loc":[-85.2976579,41.972477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938598":{"id":"n1820938598","loc":[-85.5616517,41.9694295],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938599":{"id":"n1820938599","loc":[-85.3552074,41.9921915],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938600":{"id":"n1820938600","loc":[-85.4665126,41.9999953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938601":{"id":"n1820938601","loc":[-85.2740695,41.9966226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938602":{"id":"n1820938602","loc":[-85.279376,41.9886669],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938603":{"id":"n1820938603","loc":[-85.0771109,42.1040413],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938604":{"id":"n1820938604","loc":[-85.2636049,41.9977895],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938605":{"id":"n1820938605","loc":[-85.3762145,41.9976456],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938606":{"id":"n1820938606","loc":[-85.2321369,42.0289577],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938620":{"id":"n1820938620","loc":[-85.4947724,41.9776189],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938622":{"id":"n1820938622","loc":[-85.1547069,42.0622768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938624":{"id":"n1820938624","loc":[-85.0005056,42.0880249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938626":{"id":"n1820938626","loc":[-85.0735596,42.1059357],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938628":{"id":"n1820938628","loc":[-85.4665298,41.99932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938629":{"id":"n1820938629","loc":[-85.434515,42.0065273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938630":{"id":"n1820938630","loc":[-85.117462,42.0823823],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938631":{"id":"n1820938631","loc":[-85.0131777,42.0890707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938632":{"id":"n1820938632","loc":[-85.0875326,42.0961934],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:37Z","tags":{}},"n1820938634":{"id":"n1820938634","loc":[-85.6433839,41.9112042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938635":{"id":"n1820938635","loc":[-85.1366181,42.064969],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938636":{"id":"n1820938636","loc":[-85.073109,42.1057925],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938638":{"id":"n1820938638","loc":[-85.161406,42.0632541],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938640":{"id":"n1820938640","loc":[-85.6343932,41.9188845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938642":{"id":"n1820938642","loc":[-85.2500004,42.010306],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938644":{"id":"n1820938644","loc":[-85.291918,41.9753166],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938663":{"id":"n1820938663","loc":[-85.2841611,41.9916812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938664":{"id":"n1820938664","loc":[-85.1052955,42.0868134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938665":{"id":"n1820938665","loc":[-85.4606118,42.0005534],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938666":{"id":"n1820938666","loc":[-85.5672736,41.9642922],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938667":{"id":"n1820938667","loc":[-85.6348481,41.9316932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938668":{"id":"n1820938668","loc":[-85.0224904,42.0909576],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938669":{"id":"n1820938669","loc":[-85.0133856,42.0899755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938670":{"id":"n1820938670","loc":[-85.344779,41.991139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938671":{"id":"n1820938671","loc":[-85.632874,41.9425313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938673":{"id":"n1820938673","loc":[-85.4941501,41.9779698],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938675":{"id":"n1820938675","loc":[-85.0862559,42.0997519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938676":{"id":"n1820938676","loc":[-85.0097874,42.0898032],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938678":{"id":"n1820938678","loc":[-84.9913553,42.0863675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938680":{"id":"n1820938680","loc":[-85.0533666,42.1038315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938682":{"id":"n1820938682","loc":[-85.2950294,41.9743914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938684":{"id":"n1820938684","loc":[-85.2517385,42.0104499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938686":{"id":"n1820938686","loc":[-85.0247971,42.0922514],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938688":{"id":"n1820938688","loc":[-85.0807037,42.1026017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:38Z","tags":{}},"n1820938690":{"id":"n1820938690","loc":[-85.52462,41.9722748],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938694":{"id":"n1820938694","loc":[-85.2586535,41.9988818],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938695":{"id":"n1820938695","loc":[-85.0931612,42.092948],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938697":{"id":"n1820938697","loc":[-85.2470822,42.016564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938698":{"id":"n1820938698","loc":[-85.4143018,42.0075158],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938699":{"id":"n1820938699","loc":[-85.0771484,42.104487],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938700":{"id":"n1820938700","loc":[-85.0291208,42.0942775],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938701":{"id":"n1820938701","loc":[-85.6367964,41.9185971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938702":{"id":"n1820938702","loc":[-85.085419,42.1010693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938703":{"id":"n1820938703","loc":[-85.0583877,42.1040584],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938705":{"id":"n1820938705","loc":[-85.2573379,42.0003182],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938706":{"id":"n1820938706","loc":[-85.2655937,41.9981575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938707":{"id":"n1820938707","loc":[-85.023181,42.0915758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938708":{"id":"n1820938708","loc":[-85.2318687,42.0274674],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938709":{"id":"n1820938709","loc":[-85.1056389,42.0866184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938710":{"id":"n1820938710","loc":[-85.5276265,41.9700978],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820938711":{"id":"n1820938711","loc":[-85.0864128,42.0945761],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938712":{"id":"n1820938712","loc":[-84.9897071,42.0871888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:39Z","tags":{}},"n1820938714":{"id":"n1820938714","loc":[-85.1328845,42.0665611],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938715":{"id":"n1820938715","loc":[-85.0336537,42.0991377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938716":{"id":"n1820938716","loc":[-85.087597,42.0986692],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938717":{"id":"n1820938717","loc":[-85.1241394,42.0761882],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938718":{"id":"n1820938718","loc":[-85.1176002,42.0847723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938719":{"id":"n1820938719","loc":[-85.2423615,42.0216572],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938721":{"id":"n1820938721","loc":[-85.2196378,42.0387908],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938722":{"id":"n1820938722","loc":[-85.0164272,42.0890082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938723":{"id":"n1820938723","loc":[-85.5917182,41.9451807],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938724":{"id":"n1820938724","loc":[-85.2458806,42.0086638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938725":{"id":"n1820938725","loc":[-85.1264474,42.0740527],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938726":{"id":"n1820938726","loc":[-85.1961631,42.04738],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938727":{"id":"n1820938727","loc":[-85.2784643,41.9943648],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938728":{"id":"n1820938728","loc":[-85.2905554,41.9763216],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938729":{"id":"n1820938729","loc":[-85.2913386,41.9771511],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938730":{"id":"n1820938730","loc":[-85.0112519,42.0895683],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938732":{"id":"n1820938732","loc":[-85.4290261,42.0064531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:40Z","tags":{}},"n1820938733":{"id":"n1820938733","loc":[-85.3867073,42.0031629],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938734":{"id":"n1820938734","loc":[-85.4943647,41.9836005],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938735":{"id":"n1820938735","loc":[-85.4900303,41.9860728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938736":{"id":"n1820938736","loc":[-85.0866153,42.0944539],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938737":{"id":"n1820938737","loc":[-85.0869532,42.0990911],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938738":{"id":"n1820938738","loc":[-85.6321659,41.9208851],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938739":{"id":"n1820938739","loc":[-85.5930485,41.9433453],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938740":{"id":"n1820938740","loc":[-85.0406851,42.102733],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938741":{"id":"n1820938741","loc":[-85.1051131,42.0869846],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938742":{"id":"n1820938742","loc":[-85.1377554,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938743":{"id":"n1820938743","loc":[-85.2795694,41.994604],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938745":{"id":"n1820938745","loc":[-85.4948153,41.9826594],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938746":{"id":"n1820938746","loc":[-85.4488916,42.0050923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938747":{"id":"n1820938747","loc":[-85.1052526,42.0866144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938748":{"id":"n1820938748","loc":[-85.1468749,42.0653991],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938749":{"id":"n1820938749","loc":[-85.0856886,42.1006104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938750":{"id":"n1820938750","loc":[-85.2144022,42.0404004],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938751":{"id":"n1820938751","loc":[-85.277771,41.9907458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938752":{"id":"n1820938752","loc":[-85.1474542,42.0636149],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938753":{"id":"n1820938753","loc":[-85.0820515,42.1028075],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938754":{"id":"n1820938754","loc":[-85.1122948,42.08525],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:41Z","tags":{}},"n1820938756":{"id":"n1820938756","loc":[-85.0173352,42.0901933],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938757":{"id":"n1820938757","loc":[-85.2259721,42.0354018],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938758":{"id":"n1820938758","loc":[-85.0872389,42.0987795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938759":{"id":"n1820938759","loc":[-85.2291436,42.031874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938760":{"id":"n1820938760","loc":[-85.3802485,42.0016002],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938761":{"id":"n1820938761","loc":[-85.3945822,42.0057938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938762":{"id":"n1820938762","loc":[-85.5273237,41.9713017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938763":{"id":"n1820938763","loc":[-85.2868862,41.9798629],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938764":{"id":"n1820938764","loc":[-85.2516677,42.0107899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938766":{"id":"n1820938766","loc":[-85.3183002,41.9693103],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938768":{"id":"n1820938768","loc":[-85.2159042,42.0401932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938770":{"id":"n1820938770","loc":[-85.0094481,42.0911141],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938771":{"id":"n1820938771","loc":[-85.0244538,42.0922155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938772":{"id":"n1820938772","loc":[-85.231697,42.028862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938773":{"id":"n1820938773","loc":[-85.2102394,42.0390617],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938774":{"id":"n1820938774","loc":[-85.2463419,42.0151212],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938775":{"id":"n1820938775","loc":[-85.0726195,42.1056424],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938776":{"id":"n1820938776","loc":[-85.0060431,42.0883262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938778":{"id":"n1820938778","loc":[-85.425889,42.0056982],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938779":{"id":"n1820938779","loc":[-85.1183042,42.0820638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:42Z","tags":{}},"n1820938780":{"id":"n1820938780","loc":[-85.441596,42.0058257],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938781":{"id":"n1820938781","loc":[-85.1124879,42.0847086],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938782":{"id":"n1820938782","loc":[-85.2452733,42.0153894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938783":{"id":"n1820938783","loc":[-85.2741191,41.9969244],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938784":{"id":"n1820938784","loc":[-85.2829487,41.9822236],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938785":{"id":"n1820938785","loc":[-85.3202743,41.972142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938786":{"id":"n1820938786","loc":[-85.2345402,42.0266465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938787":{"id":"n1820938787","loc":[-85.3037626,41.9724611],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938789":{"id":"n1820938789","loc":[-85.2474792,42.0161973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938790":{"id":"n1820938790","loc":[-85.2951045,41.9727323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938791":{"id":"n1820938791","loc":[-85.322345,41.9712726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938792":{"id":"n1820938792","loc":[-85.2402372,42.0110394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938793":{"id":"n1820938793","loc":[-85.5135693,41.9698659],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938794":{"id":"n1820938794","loc":[-85.4695339,41.9967366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938796":{"id":"n1820938796","loc":[-85.0418492,42.1011131],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938797":{"id":"n1820938797","loc":[-85.3334107,41.9806337],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938798":{"id":"n1820938798","loc":[-85.5625314,41.9711685],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938799":{"id":"n1820938799","loc":[-85.3755707,41.9973585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938800":{"id":"n1820938800","loc":[-85.5227532,41.9722429],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938801":{"id":"n1820938801","loc":[-85.4267687,42.0052836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938803":{"id":"n1820938803","loc":[-85.0284704,42.0940837],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938804":{"id":"n1820938804","loc":[-85.015585,42.0885305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938805":{"id":"n1820938805","loc":[-85.0765905,42.1053865],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938806":{"id":"n1820938806","loc":[-85.2614953,41.9964551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:43Z","tags":{}},"n1820938808":{"id":"n1820938808","loc":[-85.0307355,42.0947313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938810":{"id":"n1820938810","loc":[-85.3894753,42.0003565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938812":{"id":"n1820938812","loc":[-85.0868848,42.095006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938813":{"id":"n1820938813","loc":[-85.3854198,42.0009465],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938814":{"id":"n1820938814","loc":[-85.2659692,41.9993534],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938815":{"id":"n1820938815","loc":[-85.1234259,42.0765266],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938816":{"id":"n1820938816","loc":[-85.1426906,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938818":{"id":"n1820938818","loc":[-85.1014533,42.0893067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938819":{"id":"n1820938819","loc":[-85.0883064,42.098067],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938820":{"id":"n1820938820","loc":[-85.0503156,42.102704],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938821":{"id":"n1820938821","loc":[-85.1179649,42.0821884],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938822":{"id":"n1820938822","loc":[-85.3484697,41.9921596],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938823":{"id":"n1820938823","loc":[-85.3732962,41.9970874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938824":{"id":"n1820938824","loc":[-85.2784104,41.9898312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938825":{"id":"n1820938825","loc":[-85.4441709,42.0052198],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938826":{"id":"n1820938826","loc":[-85.3925438,42.0038326],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938829":{"id":"n1820938829","loc":[-85.5717582,41.9621861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:44Z","tags":{}},"n1820938830":{"id":"n1820938830","loc":[-85.0866314,42.0995051],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938831":{"id":"n1820938831","loc":[-85.576672,41.9522769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938832":{"id":"n1820938832","loc":[-85.1587238,42.0636205],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938833":{"id":"n1820938833","loc":[-85.3804245,41.9999155],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938834":{"id":"n1820938834","loc":[-85.280083,41.9948843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938836":{"id":"n1820938836","loc":[-85.561892,41.9686693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938837":{"id":"n1820938837","loc":[-85.0158975,42.0885253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938838":{"id":"n1820938838","loc":[-85.4248204,42.007633],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938839":{"id":"n1820938839","loc":[-85.0352738,42.1039657],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938840":{"id":"n1820938840","loc":[-85.211956,42.0411812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938841":{"id":"n1820938841","loc":[-85.4816575,41.9908997],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938842":{"id":"n1820938842","loc":[-85.3807635,42.0020308],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938843":{"id":"n1820938843","loc":[-85.0100865,42.0898521],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938844":{"id":"n1820938844","loc":[-85.0103936,42.0897434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938848":{"id":"n1820938848","loc":[-85.2430052,42.0131363],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938849":{"id":"n1820938849","loc":[-85.112559,42.0853723],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:45Z","tags":{}},"n1820938851":{"id":"n1820938851","loc":[-85.3641553,41.9952535],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938852":{"id":"n1820938852","loc":[-85.2087373,42.0390777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938853":{"id":"n1820938853","loc":[-85.2473933,42.0148263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938854":{"id":"n1820938854","loc":[-85.0213464,42.090509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938855":{"id":"n1820938855","loc":[-85.0673208,42.1052353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938856":{"id":"n1820938856","loc":[-85.1003053,42.0905528],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938857":{"id":"n1820938857","loc":[-85.2617367,41.9965389],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938858":{"id":"n1820938858","loc":[-85.280363,41.9916015],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938859":{"id":"n1820938859","loc":[-85.0038866,42.0873469],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938860":{"id":"n1820938860","loc":[-85.2476401,42.0151451],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938861":{"id":"n1820938861","loc":[-85.193717,42.0499294],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938862":{"id":"n1820938862","loc":[-85.3478689,41.9917609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938863":{"id":"n1820938863","loc":[-85.5638017,41.9648881],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938864":{"id":"n1820938864","loc":[-85.4356308,42.0064476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938865":{"id":"n1820938865","loc":[-85.0561722,42.1023509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938867":{"id":"n1820938867","loc":[-85.2256031,42.0356034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938868":{"id":"n1820938868","loc":[-85.6102576,41.9420844],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938869":{"id":"n1820938869","loc":[-85.2285213,42.0339938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:46Z","tags":{}},"n1820938870":{"id":"n1820938870","loc":[-85.0326238,42.0978003],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938871":{"id":"n1820938871","loc":[-85.0131389,42.0903736],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938872":{"id":"n1820938872","loc":[-85.2550859,42.0012259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938873":{"id":"n1820938873","loc":[-85.1130029,42.0846966],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938874":{"id":"n1820938874","loc":[-85.1579041,42.06336],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938875":{"id":"n1820938875","loc":[-85.0430522,42.1020234],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938876":{"id":"n1820938876","loc":[-85.2786679,41.9865935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938877":{"id":"n1820938877","loc":[-85.1221666,42.0788706],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938878":{"id":"n1820938878","loc":[-85.2554614,42.0103303],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938879":{"id":"n1820938879","loc":[-85.2349801,42.0265748],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938880":{"id":"n1820938880","loc":[-85.0997434,42.0907864],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938881":{"id":"n1820938881","loc":[-85.0045464,42.0878167],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938882":{"id":"n1820938882","loc":[-85.2728048,41.9982519],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938883":{"id":"n1820938883","loc":[-85.3111333,41.9691587],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938884":{"id":"n1820938884","loc":[-85.3219802,41.9721899],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938885":{"id":"n1820938885","loc":[-85.3091378,41.9699325],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938887":{"id":"n1820938887","loc":[-85.4242367,42.0085203],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938888":{"id":"n1820938888","loc":[-84.9968377,42.0874504],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:47Z","tags":{}},"n1820938890":{"id":"n1820938890","loc":[-85.5443139,41.9714078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938891":{"id":"n1820938891","loc":[-85.6404013,41.9154676],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938892":{"id":"n1820938892","loc":[-85.3644986,41.9962582],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938893":{"id":"n1820938893","loc":[-85.0496772,42.1018323],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938894":{"id":"n1820938894","loc":[-85.297261,41.9737373],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938895":{"id":"n1820938895","loc":[-85.0327096,42.098071],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938896":{"id":"n1820938896","loc":[-85.3856773,41.9996867],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938897":{"id":"n1820938897","loc":[-85.0493862,42.1015509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938898":{"id":"n1820938898","loc":[-84.9969879,42.0876614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938899":{"id":"n1820938899","loc":[-85.0848625,42.1013587],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938900":{"id":"n1820938900","loc":[-85.5853195,41.9479201],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938901":{"id":"n1820938901","loc":[-85.6329169,41.9387964],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938902":{"id":"n1820938902","loc":[-85.0843046,42.1029468],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938903":{"id":"n1820938903","loc":[-85.1228747,42.0778474],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938904":{"id":"n1820938904","loc":[-85.4855456,41.984095],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938905":{"id":"n1820938905","loc":[-85.0573269,42.1026801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938906":{"id":"n1820938906","loc":[-85.2425868,42.0131523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938907":{"id":"n1820938907","loc":[-85.1149622,42.0860053],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938908":{"id":"n1820938908","loc":[-85.4833097,41.9951578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938909":{"id":"n1820938909","loc":[-85.075979,42.1056372],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938910":{"id":"n1820938910","loc":[-85.0338509,42.0977139],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938911":{"id":"n1820938911","loc":[-85.6384272,41.9115715],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938912":{"id":"n1820938912","loc":[-85.0458363,42.1004074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938913":{"id":"n1820938913","loc":[-85.0592138,42.1048305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:48Z","tags":{}},"n1820938914":{"id":"n1820938914","loc":[-85.2807493,41.9916653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938915":{"id":"n1820938915","loc":[-85.1103274,42.0864193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938916":{"id":"n1820938916","loc":[-85.6267156,41.9404404],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938918":{"id":"n1820938918","loc":[-85.0331374,42.0982911],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938919":{"id":"n1820938919","loc":[-85.5637331,41.965409],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938920":{"id":"n1820938920","loc":[-85.5457515,41.9714237],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938922":{"id":"n1820938922","loc":[-85.082073,42.1030104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938923":{"id":"n1820938923","loc":[-85.0780765,42.103102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938924":{"id":"n1820938924","loc":[-85.4208035,42.0089508],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938925":{"id":"n1820938925","loc":[-85.3469934,41.9914795],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938926":{"id":"n1820938926","loc":[-85.0322,42.095619],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938927":{"id":"n1820938927","loc":[-85.4784431,41.9949401],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938928":{"id":"n1820938928","loc":[-85.1303095,42.0667523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938929":{"id":"n1820938929","loc":[-85.2463784,42.0084781],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938930":{"id":"n1820938930","loc":[-85.6299986,41.9427707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938931":{"id":"n1820938931","loc":[-85.6325907,41.9238499],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938932":{"id":"n1820938932","loc":[-85.4808464,41.9914476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938934":{"id":"n1820938934","loc":[-85.2411599,42.0105292],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938935":{"id":"n1820938935","loc":[-85.0163213,42.0892379],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938936":{"id":"n1820938936","loc":[-85.3290934,41.9682322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938937":{"id":"n1820938937","loc":[-85.4925623,41.9853231],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:49Z","tags":{}},"n1820938938":{"id":"n1820938938","loc":[-85.0338294,42.09892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938940":{"id":"n1820938940","loc":[-85.4174561,42.008903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938941":{"id":"n1820938941","loc":[-85.1165595,42.0838845],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938942":{"id":"n1820938942","loc":[-85.2954585,41.9717192],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938943":{"id":"n1820938943","loc":[-85.6330199,41.9257338],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938944":{"id":"n1820938944","loc":[-85.2294654,42.0324478],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938945":{"id":"n1820938945","loc":[-85.5601282,41.9728914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938946":{"id":"n1820938946","loc":[-85.1176324,42.08568],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938947":{"id":"n1820938947","loc":[-85.0210245,42.0906005],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938948":{"id":"n1820938948","loc":[-85.0251887,42.09253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938949":{"id":"n1820938949","loc":[-85.0895832,42.0939551],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938950":{"id":"n1820938950","loc":[-84.9915109,42.085842],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938951":{"id":"n1820938951","loc":[-85.2187366,42.0393486],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938952":{"id":"n1820938952","loc":[-85.006605,42.087579],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938953":{"id":"n1820938953","loc":[-85.046641,42.1012393],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938954":{"id":"n1820938954","loc":[-85.052102,42.103695],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938955":{"id":"n1820938955","loc":[-85.283925,41.9912825],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938956":{"id":"n1820938956","loc":[-85.2326626,42.0316349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938957":{"id":"n1820938957","loc":[-85.1174298,42.0859694],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938958":{"id":"n1820938958","loc":[-85.3802056,41.9994794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938959":{"id":"n1820938959","loc":[-85.4586334,41.9999737],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938960":{"id":"n1820938960","loc":[-85.4302234,42.0069418],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938961":{"id":"n1820938961","loc":[-85.092201,42.0930674],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938962":{"id":"n1820938962","loc":[-85.3684511,41.9979382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938963":{"id":"n1820938963","loc":[-85.4618735,42.0011856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938964":{"id":"n1820938964","loc":[-85.4828205,41.9877793],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:50Z","tags":{}},"n1820938965":{"id":"n1820938965","loc":[-85.0837789,42.1025726],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938966":{"id":"n1820938966","loc":[-85.0176195,42.090253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938967":{"id":"n1820938967","loc":[-85.3801627,42.001074],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938968":{"id":"n1820938968","loc":[-85.4767007,41.994488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938969":{"id":"n1820938969","loc":[-85.274268,41.9957495],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938970":{"id":"n1820938970","loc":[-85.2977438,41.9719506],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938971":{"id":"n1820938971","loc":[-85.2425546,42.0208682],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938972":{"id":"n1820938972","loc":[-85.2557082,42.002382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938973":{"id":"n1820938973","loc":[-85.3187937,41.9691986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938975":{"id":"n1820938975","loc":[-85.2448077,42.0153045],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938977":{"id":"n1820938977","loc":[-85.0343015,42.0997718],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938978":{"id":"n1820938978","loc":[-85.2449364,42.01874],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938979":{"id":"n1820938979","loc":[-85.2598391,41.9969602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938980":{"id":"n1820938980","loc":[-85.4294724,42.0067665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938981":{"id":"n1820938981","loc":[-85.428082,42.0055124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938983":{"id":"n1820938983","loc":[-85.5436315,41.9717484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938985":{"id":"n1820938985","loc":[-85.5978336,41.9407437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938986":{"id":"n1820938986","loc":[-85.491661,41.9860249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938987":{"id":"n1820938987","loc":[-85.4942789,41.9801392],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:51Z","tags":{}},"n1820938988":{"id":"n1820938988","loc":[-85.0416306,42.1010841],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938989":{"id":"n1820938989","loc":[-85.2653644,41.9984433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938990":{"id":"n1820938990","loc":[-85.1028266,42.0881124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938991":{"id":"n1820938991","loc":[-85.0163146,42.0887932],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938992":{"id":"n1820938992","loc":[-85.5282209,41.9678112],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820938993":{"id":"n1820938993","loc":[-85.5442752,41.9715888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938994":{"id":"n1820938994","loc":[-85.5634327,41.9658558],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938995":{"id":"n1820938995","loc":[-85.0384227,42.1037627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938996":{"id":"n1820938996","loc":[-85.1144258,42.0854439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938997":{"id":"n1820938997","loc":[-85.1870651,42.0506305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938998":{"id":"n1820938998","loc":[-85.1256159,42.0747376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820938999":{"id":"n1820938999","loc":[-85.3272695,41.9715836],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939000":{"id":"n1820939000","loc":[-85.0543067,42.103098],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939001":{"id":"n1820939001","loc":[-85.4678173,41.9973585],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939003":{"id":"n1820939003","loc":[-85.0266626,42.0933154],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939004":{"id":"n1820939004","loc":[-85.0353046,42.1019728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939005":{"id":"n1820939005","loc":[-85.1237961,42.0762798],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939006":{"id":"n1820939006","loc":[-85.2812214,41.9826702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:52Z","tags":{}},"n1820939007":{"id":"n1820939007","loc":[-85.2927763,41.9747343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939008":{"id":"n1820939008","loc":[-85.3270979,41.9720862],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939009":{"id":"n1820939009","loc":[-85.488657,41.9856581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939010":{"id":"n1820939010","loc":[-85.3087301,41.9701399],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939011":{"id":"n1820939011","loc":[-85.0276939,42.093768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939012":{"id":"n1820939012","loc":[-85.2956516,41.9748779],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939013":{"id":"n1820939013","loc":[-85.1298579,42.0726443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939014":{"id":"n1820939014","loc":[-85.105144,42.0870893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939015":{"id":"n1820939015","loc":[-85.0677486,42.1053917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939016":{"id":"n1820939016","loc":[-85.0333681,42.0993459],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939017":{"id":"n1820939017","loc":[-85.6384272,41.910805],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939018":{"id":"n1820939018","loc":[-85.399496,42.006894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939019":{"id":"n1820939019","loc":[-85.2648427,41.9998318],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939020":{"id":"n1820939020","loc":[-85.1237424,42.0766779],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939021":{"id":"n1820939021","loc":[-85.2515025,42.0109442],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939022":{"id":"n1820939022","loc":[-85.5566306,41.9718385],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939023":{"id":"n1820939023","loc":[-85.090644,42.0938369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939024":{"id":"n1820939024","loc":[-85.1245525,42.074914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939025":{"id":"n1820939025","loc":[-85.1099934,42.0863926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939026":{"id":"n1820939026","loc":[-85.1251653,42.0744589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:53Z","tags":{}},"n1820939027":{"id":"n1820939027","loc":[-85.401792,42.0068143],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939028":{"id":"n1820939028","loc":[-85.0094763,42.0899584],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939029":{"id":"n1820939029","loc":[-85.1330779,42.0705605],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939030":{"id":"n1820939030","loc":[-85.4935064,41.984398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939031":{"id":"n1820939031","loc":[-85.5713334,41.9613939],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939032":{"id":"n1820939032","loc":[-85.0873945,42.0964669],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939033":{"id":"n1820939033","loc":[-85.0886497,42.0986481],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939034":{"id":"n1820939034","loc":[-85.3276343,41.9758897],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939035":{"id":"n1820939035","loc":[-85.1304386,42.0727387],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939036":{"id":"n1820939036","loc":[-85.2551932,42.0052999],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939037":{"id":"n1820939037","loc":[-85.2206936,42.0384458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939038":{"id":"n1820939038","loc":[-85.2313645,42.0286389],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939039":{"id":"n1820939039","loc":[-85.0754586,42.1059835],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939040":{"id":"n1820939040","loc":[-85.0663324,42.1050812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939041":{"id":"n1820939041","loc":[-85.2406234,42.0106887],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939042":{"id":"n1820939042","loc":[-85.0685962,42.1058175],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939043":{"id":"n1820939043","loc":[-85.0689462,42.1059437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939044":{"id":"n1820939044","loc":[-85.0586144,42.1046144],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939045":{"id":"n1820939045","loc":[-85.3650565,41.9965452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939047":{"id":"n1820939047","loc":[-85.5752558,41.9536014],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:54Z","tags":{}},"n1820939048":{"id":"n1820939048","loc":[-85.5110159,41.9710624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939050":{"id":"n1820939050","loc":[-85.2832641,41.9926477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939051":{"id":"n1820939051","loc":[-85.0078402,42.0898947],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939052":{"id":"n1820939052","loc":[-85.3882737,42.0017916],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939053":{"id":"n1820939053","loc":[-85.1718945,42.0564937],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939054":{"id":"n1820939054","loc":[-85.0947048,42.0929293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939055":{"id":"n1820939055","loc":[-85.4456944,42.0051082],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939056":{"id":"n1820939056","loc":[-85.3139872,41.9706903],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939057":{"id":"n1820939057","loc":[-85.3893895,42.0034021],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939058":{"id":"n1820939058","loc":[-85.2425332,42.0106089],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939059":{"id":"n1820939059","loc":[-85.6085624,41.9420844],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939060":{"id":"n1820939060","loc":[-85.210411,42.0397789],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939061":{"id":"n1820939061","loc":[-85.2762542,41.9960473],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939062":{"id":"n1820939062","loc":[-85.4686584,41.9969973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939063":{"id":"n1820939063","loc":[-85.3860421,42.0018394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939064":{"id":"n1820939064","loc":[-85.5636944,41.9644414],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939065":{"id":"n1820939065","loc":[-85.3267331,41.9766554],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939066":{"id":"n1820939066","loc":[-85.0868996,42.0943822],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939067":{"id":"n1820939067","loc":[-85.104861,42.0880038],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939068":{"id":"n1820939068","loc":[-85.5537123,41.9695093],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939069":{"id":"n1820939069","loc":[-85.6325092,41.9396743],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939070":{"id":"n1820939070","loc":[-85.3869648,42.0024454],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939071":{"id":"n1820939071","loc":[-85.2775349,41.9957335],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:55Z","tags":{}},"n1820939072":{"id":"n1820939072","loc":[-85.2055616,42.0421533],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939073":{"id":"n1820939073","loc":[-85.4731431,41.9946531],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939074":{"id":"n1820939074","loc":[-85.0399609,42.1030833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939075":{"id":"n1820939075","loc":[-85.3055758,41.9725169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939076":{"id":"n1820939076","loc":[-85.4834599,41.994488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939077":{"id":"n1820939077","loc":[-85.3819866,42.0023018],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939078":{"id":"n1820939078","loc":[-85.1218756,42.0789992],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939079":{"id":"n1820939079","loc":[-85.2793159,41.9944458],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939080":{"id":"n1820939080","loc":[-85.2495498,42.0101466],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939081":{"id":"n1820939081","loc":[-85.0035969,42.0872434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939082":{"id":"n1820939082","loc":[-85.1054243,42.0865626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939083":{"id":"n1820939083","loc":[-85.0917665,42.0934774],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939084":{"id":"n1820939084","loc":[-85.3442211,41.988938],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939086":{"id":"n1820939086","loc":[-85.273989,41.9953588],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939087":{"id":"n1820939087","loc":[-85.1142541,42.0852488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939089":{"id":"n1820939089","loc":[-85.1526684,42.0615758],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939090":{"id":"n1820939090","loc":[-85.2538843,42.0110159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939091":{"id":"n1820939091","loc":[-85.28341,41.9909635],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939092":{"id":"n1820939092","loc":[-85.3963178,42.0050217],"version":"2","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:29Z","tags":{}},"n1820939093":{"id":"n1820939093","loc":[-85.0851682,42.1012472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939095":{"id":"n1820939095","loc":[-85.2811784,41.986243],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939096":{"id":"n1820939096","loc":[-85.4274125,42.0052995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939097":{"id":"n1820939097","loc":[-85.0871262,42.0951652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:56Z","tags":{}},"n1820939099":{"id":"n1820939099","loc":[-85.1314253,42.0671665],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939100":{"id":"n1820939100","loc":[-85.2778997,41.991001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939101":{"id":"n1820939101","loc":[-85.112107,42.0862812],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939102":{"id":"n1820939102","loc":[-85.299911,41.9729955],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939103":{"id":"n1820939103","loc":[-85.639822,41.9094796],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939104":{"id":"n1820939104","loc":[-85.122294,42.0785334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939105":{"id":"n1820939105","loc":[-85.2476294,42.015719],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939106":{"id":"n1820939106","loc":[-85.4946007,41.9814631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939107":{"id":"n1820939107","loc":[-85.0879524,42.0986919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939108":{"id":"n1820939108","loc":[-85.0342814,42.098274],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939109":{"id":"n1820939109","loc":[-85.2450695,42.0095463],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939110":{"id":"n1820939110","loc":[-85.3847546,42.0024135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939111":{"id":"n1820939111","loc":[-85.2961344,41.9742558],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939112":{"id":"n1820939112","loc":[-85.27899,41.994317],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939114":{"id":"n1820939114","loc":[-85.1017644,42.0886618],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939115":{"id":"n1820939115","loc":[-85.076215,42.1056333],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939116":{"id":"n1820939116","loc":[-85.1198009,42.0805349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939117":{"id":"n1820939117","loc":[-85.11988,42.0798513],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939118":{"id":"n1820939118","loc":[-85.147819,42.0625476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939119":{"id":"n1820939119","loc":[-85.0585969,42.1029042],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939120":{"id":"n1820939120","loc":[-85.1248596,42.0745744],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:57Z","tags":{}},"n1820939121":{"id":"n1820939121","loc":[-85.3023786,41.9725249],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939123":{"id":"n1820939123","loc":[-85.0119332,42.0900699],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939124":{"id":"n1820939124","loc":[-85.2466852,42.0170343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939125":{"id":"n1820939125","loc":[-85.0033019,42.0872792],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939126":{"id":"n1820939126","loc":[-85.0042084,42.0875778],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939128":{"id":"n1820939128","loc":[-85.0052961,42.0885424],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939130":{"id":"n1820939130","loc":[-85.0647942,42.10508],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939131":{"id":"n1820939131","loc":[-85.2824123,41.9825107],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939132":{"id":"n1820939132","loc":[-85.3210039,41.9723255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939133":{"id":"n1820939133","loc":[-85.0491033,42.1014184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939134":{"id":"n1820939134","loc":[-85.1127776,42.0855168],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939135":{"id":"n1820939135","loc":[-85.1243768,42.0759322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939137":{"id":"n1820939137","loc":[-85.125974,42.0747547],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939138":{"id":"n1820939138","loc":[-85.1071248,42.0859973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939139":{"id":"n1820939139","loc":[-85.5326175,41.9674833],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1820939140":{"id":"n1820939140","loc":[-85.1338715,42.0660833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939142":{"id":"n1820939142","loc":[-85.649671,41.9135675],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:58Z","tags":{}},"n1820939144":{"id":"n1820939144","loc":[-85.0236545,42.0920444],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939145":{"id":"n1820939145","loc":[-85.1084391,42.0859376],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939146":{"id":"n1820939146","loc":[-85.1539988,42.0618626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939147":{"id":"n1820939147","loc":[-85.2354521,42.026511],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939148":{"id":"n1820939148","loc":[-85.2362246,42.0260408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939149":{"id":"n1820939149","loc":[-85.2401342,42.0115233],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939150":{"id":"n1820939150","loc":[-85.295319,41.9747423],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939151":{"id":"n1820939151","loc":[-85.1164696,42.0835409],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939152":{"id":"n1820939152","loc":[-85.3232891,41.9712885],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939153":{"id":"n1820939153","loc":[-85.2574463,42.0068944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939155":{"id":"n1820939155","loc":[-85.5704064,41.9598246],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939156":{"id":"n1820939156","loc":[-85.0349077,42.0998116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939157":{"id":"n1820939157","loc":[-85.0949529,42.0925619],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939159":{"id":"n1820939159","loc":[-85.0179829,42.0902343],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939160":{"id":"n1820939160","loc":[-85.0405832,42.1016942],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939161":{"id":"n1820939161","loc":[-85.2534015,42.0111833],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939162":{"id":"n1820939162","loc":[-85.0839881,42.102708],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939163":{"id":"n1820939163","loc":[-85.0341996,42.1008385],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939164":{"id":"n1820939164","loc":[-85.1037761,42.0879731],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:56:59Z","tags":{}},"n1820939173":{"id":"n1820939173","loc":[-85.0460616,42.1005786],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939177":{"id":"n1820939177","loc":[-85.0061651,42.0878059],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939181":{"id":"n1820939181","loc":[-85.1456775,42.0654684],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939183":{"id":"n1820939183","loc":[-85.1325508,42.0718439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939185":{"id":"n1820939185","loc":[-85.2485842,42.008329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939187":{"id":"n1820939187","loc":[-85.2744128,41.9949322],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939189":{"id":"n1820939189","loc":[-85.2579025,41.9999542],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939191":{"id":"n1820939191","loc":[-85.3358998,41.9828987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939193":{"id":"n1820939193","loc":[-85.3192658,41.9716714],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939194":{"id":"n1820939194","loc":[-85.6400795,41.9130725],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939195":{"id":"n1820939195","loc":[-85.3278489,41.9780591],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939196":{"id":"n1820939196","loc":[-85.2800197,41.983061],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939197":{"id":"n1820939197","loc":[-85.3278167,41.9692943],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939198":{"id":"n1820939198","loc":[-85.3366894,41.9838653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939199":{"id":"n1820939199","loc":[-85.0328383,42.0969923],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939201":{"id":"n1820939201","loc":[-85.3259284,41.9720383],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:00Z","tags":{}},"n1820939217":{"id":"n1820939217","loc":[-85.1840181,42.0503277],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939220":{"id":"n1820939220","loc":[-85.422563,42.0089986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939222":{"id":"n1820939222","loc":[-85.555386,41.9707856],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939224":{"id":"n1820939224","loc":[-85.3830809,42.002254],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939226":{"id":"n1820939226","loc":[-84.9917938,42.0857517],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939227":{"id":"n1820939227","loc":[-85.2936775,41.9740484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939228":{"id":"n1820939228","loc":[-85.2632133,41.9975024],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939229":{"id":"n1820939229","loc":[-85.2809424,41.9853259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939230":{"id":"n1820939230","loc":[-85.242104,42.0131204],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939232":{"id":"n1820939232","loc":[-85.2610246,41.9963901],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939233":{"id":"n1820939233","loc":[-85.2335531,42.0268378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939234":{"id":"n1820939234","loc":[-85.3188839,41.9713575],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939235":{"id":"n1820939235","loc":[-85.2413637,42.0225658],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939237":{"id":"n1820939237","loc":[-85.0010796,42.0887215],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939239":{"id":"n1820939239","loc":[-85.2241697,42.0362624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939243":{"id":"n1820939243","loc":[-85.0368456,42.1040134],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939244":{"id":"n1820939244","loc":[-85.1327986,42.069524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939260":{"id":"n1820939260","loc":[-85.5408163,41.9711206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:01Z","tags":{}},"n1820939261":{"id":"n1820939261","loc":[-85.2959199,41.9746546],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939262":{"id":"n1820939262","loc":[-85.3298659,41.9683598],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939263":{"id":"n1820939263","loc":[-85.2240581,42.0358425],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939264":{"id":"n1820939264","loc":[-85.2438206,42.0101944],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939265":{"id":"n1820939265","loc":[-85.3984489,42.0059589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939266":{"id":"n1820939266","loc":[-85.2330811,42.0294279],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939268":{"id":"n1820939268","loc":[-85.1126877,42.0857704],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939271":{"id":"n1820939271","loc":[-85.254925,42.0106253],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939273":{"id":"n1820939273","loc":[-85.4328046,42.0064662],"version":"2","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:51:01Z","tags":{}},"n1820939277":{"id":"n1820939277","loc":[-85.289622,41.9789616],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939279":{"id":"n1820939279","loc":[-85.4574532,42.0004043],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939281":{"id":"n1820939281","loc":[-85.4803486,41.9867211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939283":{"id":"n1820939283","loc":[-85.157475,42.0631848],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939285":{"id":"n1820939285","loc":[-85.2571458,42.0059935],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939287":{"id":"n1820939287","loc":[-85.2818544,41.9825984],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939289":{"id":"n1820939289","loc":[-85.2298302,42.0328781],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:02Z","tags":{}},"n1820939291":{"id":"n1820939291","loc":[-85.4819523,41.984821],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820939301":{"id":"n1820939301","loc":[-85.3139765,41.9701159],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939304":{"id":"n1820939304","loc":[-85.0424447,42.101742],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939306":{"id":"n1820939306","loc":[-85.6360283,41.9338482],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939310":{"id":"n1820939310","loc":[-85.3463025,41.9913622],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939312":{"id":"n1820939312","loc":[-85.4664869,41.9988097],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939314":{"id":"n1820939314","loc":[-85.149364,42.0622449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939316":{"id":"n1820939316","loc":[-85.2460415,42.0153125],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939318":{"id":"n1820939318","loc":[-85.4806103,41.9924523],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939320":{"id":"n1820939320","loc":[-85.2449042,42.0190987],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939322":{"id":"n1820939322","loc":[-85.5280165,41.9689263],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939324":{"id":"n1820939324","loc":[-85.0051204,42.0882625],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939326":{"id":"n1820939326","loc":[-85.1240925,42.0771546],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939329":{"id":"n1820939329","loc":[-85.2261653,42.0342225],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939331":{"id":"n1820939331","loc":[-85.5259933,41.972211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939333":{"id":"n1820939333","loc":[-85.0074754,42.0883183],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939335":{"id":"n1820939335","loc":[-85.0764014,42.1055549],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939336":{"id":"n1820939336","loc":[-85.2908773,41.9769597],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939337":{"id":"n1820939337","loc":[-85.4095382,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939346":{"id":"n1820939346","loc":[-85.2514166,42.0111753],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939348":{"id":"n1820939348","loc":[-85.0030377,42.0873799],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939350":{"id":"n1820939350","loc":[-85.3659362,41.9964974],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:03Z","tags":{}},"n1820939352":{"id":"n1820939352","loc":[-85.226058,42.0348281],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939355":{"id":"n1820939355","loc":[-85.1902408,42.0507101],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939357":{"id":"n1820939357","loc":[-85.2781854,41.9946001],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939359":{"id":"n1820939359","loc":[-85.2139988,42.0405175],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939361":{"id":"n1820939361","loc":[-85.0086609,42.0908262],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939363":{"id":"n1820939363","loc":[-85.0627128,42.1043398],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939365":{"id":"n1820939365","loc":[-85.1311346,42.072501],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939369":{"id":"n1820939369","loc":[-85.248198,42.0082652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939370":{"id":"n1820939370","loc":[-84.99792,42.087794],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939371":{"id":"n1820939371","loc":[-85.2786775,41.9942783],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939372":{"id":"n1820939372","loc":[-85.0342103,42.1013957],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939373":{"id":"n1820939373","loc":[-85.2022357,42.0444799],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939374":{"id":"n1820939374","loc":[-85.2279205,42.0337388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939375":{"id":"n1820939375","loc":[-85.1337699,42.0712614],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939376":{"id":"n1820939376","loc":[-85.317517,41.9707062],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939377":{"id":"n1820939377","loc":[-85.1326326,42.070218],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939394":{"id":"n1820939394","loc":[-85.0197746,42.0899118],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939397":{"id":"n1820939397","loc":[-85.2590076,41.9984632],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939399":{"id":"n1820939399","loc":[-85.2469964,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939400":{"id":"n1820939400","loc":[-85.2470929,42.0146668],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939401":{"id":"n1820939401","loc":[-84.9984095,42.0878087],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939402":{"id":"n1820939402","loc":[-85.2372653,42.0243273],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:04Z","tags":{}},"n1820939403":{"id":"n1820939403","loc":[-85.2454986,42.0091955],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939404":{"id":"n1820939404","loc":[-85.0539205,42.1035995],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939405":{"id":"n1820939405","loc":[-85.550601,41.9706101],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939406":{"id":"n1820939406","loc":[-85.0351343,42.0999656],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939407":{"id":"n1820939407","loc":[-85.0082908,42.0905755],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939408":{"id":"n1820939408","loc":[-85.0132904,42.0902251],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939410":{"id":"n1820939410","loc":[-85.0892546,42.094012],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939412":{"id":"n1820939412","loc":[-85.0350793,42.1030315],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939416":{"id":"n1820939416","loc":[-85.0012406,42.0886777],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939418":{"id":"n1820939418","loc":[-85.0577453,42.1029229],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939420":{"id":"n1820939420","loc":[-85.1230786,42.0776722],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939422":{"id":"n1820939422","loc":[-85.571136,41.9649304],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939436":{"id":"n1820939436","loc":[-85.1137968,42.0848997],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939437":{"id":"n1820939437","loc":[-85.3559584,41.9925105],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939438":{"id":"n1820939438","loc":[-85.0080172,42.0903565],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939439":{"id":"n1820939439","loc":[-85.0048897,42.0880913],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939441":{"id":"n1820939441","loc":[-85.0406959,42.1018574],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939443":{"id":"n1820939443","loc":[-85.3897328,42.0029078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939445":{"id":"n1820939445","loc":[-85.122349,42.0782814],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939448":{"id":"n1820939448","loc":[-85.4872193,41.985036],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939450":{"id":"n1820939450","loc":[-85.0120459,42.0904919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:05Z","tags":{}},"n1820939452":{"id":"n1820939452","loc":[-85.6320543,41.921982],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939456":{"id":"n1820939456","loc":[-85.0844749,42.1036843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939458":{"id":"n1820939458","loc":[-85.0968037,42.091296],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939463":{"id":"n1820939463","loc":[-85.5339747,41.9681841],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939465":{"id":"n1820939465","loc":[-85.4125423,42.0072129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939467":{"id":"n1820939467","loc":[-85.6335563,41.9303626],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939469":{"id":"n1820939469","loc":[-85.2821014,41.9932126],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939471":{"id":"n1820939471","loc":[-85.374691,41.9969917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939485":{"id":"n1820939485","loc":[-85.4471321,42.0049806],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939487":{"id":"n1820939487","loc":[-85.3752532,41.9972206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939489":{"id":"n1820939489","loc":[-85.4517283,42.005927],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939492":{"id":"n1820939492","loc":[-85.4662552,42.0005693],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939494":{"id":"n1820939494","loc":[-85.0120083,42.0902928],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939496":{"id":"n1820939496","loc":[-85.044463,42.1004631],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939498":{"id":"n1820939498","loc":[-85.418293,42.0089667],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939500":{"id":"n1820939500","loc":[-85.0554762,42.1027358],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939504":{"id":"n1820939504","loc":[-85.1246289,42.0746858],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:06Z","tags":{}},"n1820939507":{"id":"n1820939507","loc":[-85.0408139,42.1021838],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939508":{"id":"n1820939508","loc":[-85.1236204,42.0775169],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939509":{"id":"n1820939509","loc":[-85.0350109,42.1037428],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939510":{"id":"n1820939510","loc":[-85.0551583,42.1029878],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939511":{"id":"n1820939511","loc":[-85.0956771,42.0916662],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939512":{"id":"n1820939512","loc":[-85.2323408,42.0273638],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939513":{"id":"n1820939513","loc":[-85.1232771,42.0762388],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939531":{"id":"n1820939531","loc":[-85.264608,41.9997828],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939533":{"id":"n1820939533","loc":[-85.4198808,42.0087914],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939535":{"id":"n1820939535","loc":[-85.3080864,41.9715677],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939536":{"id":"n1820939536","loc":[-85.1189426,42.0812596],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939537":{"id":"n1820939537","loc":[-85.2642741,41.9996764],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939538":{"id":"n1820939538","loc":[-85.2572531,42.0079627],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939539":{"id":"n1820939539","loc":[-85.2907807,41.9790174],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939540":{"id":"n1820939540","loc":[-85.3171415,41.9707301],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939541":{"id":"n1820939541","loc":[-85.08777,42.0953841],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939542":{"id":"n1820939542","loc":[-85.1239262,42.0773218],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939543":{"id":"n1820939543","loc":[-84.9973956,42.0877968],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939544":{"id":"n1820939544","loc":[-85.011606,42.0896161],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939545":{"id":"n1820939545","loc":[-85.4077358,42.0082971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939546":{"id":"n1820939546","loc":[-85.3614945,41.9933717],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:07Z","tags":{}},"n1820939547":{"id":"n1820939547","loc":[-85.3189118,41.9697649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939550":{"id":"n1820939550","loc":[-85.1262691,42.0740221],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939551":{"id":"n1820939551","loc":[-85.3863639,41.9994635],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939552":{"id":"n1820939552","loc":[-85.2836034,41.9923953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939554":{"id":"n1820939554","loc":[-85.3222377,41.9715916],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939555":{"id":"n1820939555","loc":[-85.0122658,42.0906312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939556":{"id":"n1820939556","loc":[-85.0022652,42.0877581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939557":{"id":"n1820939557","loc":[-85.1011314,42.0899954],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939559":{"id":"n1820939559","loc":[-85.0008181,42.0885293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939561":{"id":"n1820939561","loc":[-85.3637046,41.9942488],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939562":{"id":"n1820939562","loc":[-85.4500117,42.0052892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939563":{"id":"n1820939563","loc":[-85.0537636,42.1036365],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939565":{"id":"n1820939565","loc":[-85.2367503,42.0246939],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939566":{"id":"n1820939566","loc":[-85.0448479,42.1002653],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939567":{"id":"n1820939567","loc":[-85.6337065,41.9295006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939568":{"id":"n1820939568","loc":[-85.0879792,42.095623],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939569":{"id":"n1820939569","loc":[-85.6347623,41.9352369],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939570":{"id":"n1820939570","loc":[-85.1497931,42.0620378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:08Z","tags":{}},"n1820939571":{"id":"n1820939571","loc":[-85.5676169,41.9656324],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939572":{"id":"n1820939572","loc":[-85.638041,41.9166971],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939573":{"id":"n1820939573","loc":[-85.4993429,41.9781293],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939574":{"id":"n1820939574","loc":[-85.5352831,41.9692127],"version":"2","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:33Z","tags":{}},"n1820939575":{"id":"n1820939575","loc":[-84.9924429,42.0857118],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939577":{"id":"n1820939577","loc":[-85.0581101,42.1026721],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939578":{"id":"n1820939578","loc":[-85.641088,41.9094477],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939579":{"id":"n1820939579","loc":[-85.2548821,42.0052282],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939580":{"id":"n1820939580","loc":[-85.1124463,42.0859734],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939581":{"id":"n1820939581","loc":[-85.1083479,42.0857624],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939583":{"id":"n1820939583","loc":[-85.1387424,42.0648893],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939584":{"id":"n1820939584","loc":[-85.5152645,41.9700892],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939585":{"id":"n1820939585","loc":[-85.5463738,41.9713439],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939586":{"id":"n1820939586","loc":[-85.360207,41.9933717],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939587":{"id":"n1820939587","loc":[-85.2402372,42.0120917],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939588":{"id":"n1820939588","loc":[-85.3936381,42.0047255],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939589":{"id":"n1820939589","loc":[-85.3310246,41.973784],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939590":{"id":"n1820939590","loc":[-85.0329403,42.096642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:09Z","tags":{}},"n1820939591":{"id":"n1820939591","loc":[-85.0097271,42.0910981],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939593":{"id":"n1820939593","loc":[-85.0446562,42.1003437],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939595":{"id":"n1820939595","loc":[-85.0856671,42.1008452],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939596":{"id":"n1820939596","loc":[-85.4087228,42.0083449],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939597":{"id":"n1820939597","loc":[-85.0609519,42.1052564],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939598":{"id":"n1820939598","loc":[-85.3432126,41.9874548],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939599":{"id":"n1820939599","loc":[-85.4041738,42.0067027],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939600":{"id":"n1820939600","loc":[-85.0825437,42.1035768],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939601":{"id":"n1820939601","loc":[-85.048422,42.101498],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939602":{"id":"n1820939602","loc":[-85.0336256,42.0999031],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939603":{"id":"n1820939603","loc":[-85.046818,42.1014104],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939605":{"id":"n1820939605","loc":[-85.2856524,41.98078],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939607":{"id":"n1820939607","loc":[-85.1118173,42.0864245],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939609":{"id":"n1820939609","loc":[-85.0443397,42.1006263],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939610":{"id":"n1820939610","loc":[-85.0336698,42.0978361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:10Z","tags":{}},"n1820939611":{"id":"n1820939611","loc":[-85.4630322,42.0014248],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939612":{"id":"n1820939612","loc":[-85.0613127,42.1052353],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939613":{"id":"n1820939613","loc":[-85.0137571,42.0887801],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939614":{"id":"n1820939614","loc":[-85.272487,41.9982013],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939616":{"id":"n1820939616","loc":[-85.4665727,41.9983791],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939617":{"id":"n1820939617","loc":[-85.1288078,42.0725476],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939618":{"id":"n1820939618","loc":[-85.4653282,42.00109],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939619":{"id":"n1820939619","loc":[-85.2314717,42.0276746],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939620":{"id":"n1820939620","loc":[-85.255982,42.0003569],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939621":{"id":"n1820939621","loc":[-85.2886779,41.9787223],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939622":{"id":"n1820939622","loc":[-85.22438,42.0367509],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939623":{"id":"n1820939623","loc":[-85.0334713,42.0998382],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939624":{"id":"n1820939624","loc":[-85.2236504,42.037484],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939625":{"id":"n1820939625","loc":[-85.636908,41.9175162],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939627":{"id":"n1820939627","loc":[-85.2669187,41.9989707],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939628":{"id":"n1820939628","loc":[-85.3247268,41.9720702],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939629":{"id":"n1820939629","loc":[-85.3785104,41.9987299],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:11Z","tags":{}},"n1820939630":{"id":"n1820939630","loc":[-85.5267658,41.9720515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939631":{"id":"n1820939631","loc":[-85.2445116,42.0098811],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939632":{"id":"n1820939632","loc":[-85.1271448,42.0725077],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939633":{"id":"n1820939633","loc":[-85.0345751,42.099724],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939634":{"id":"n1820939634","loc":[-85.4217476,42.0089986],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939635":{"id":"n1820939635","loc":[-85.3121848,41.9689433],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939636":{"id":"n1820939636","loc":[-85.2826419,41.9929985],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939637":{"id":"n1820939637","loc":[-85.3160257,41.9706344],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939638":{"id":"n1820939638","loc":[-85.5684967,41.9657919],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939640":{"id":"n1820939640","loc":[-85.225131,42.0356194],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939642":{"id":"n1820939642","loc":[-85.1324124,42.0693328],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939644":{"id":"n1820939644","loc":[-84.9994073,42.0878843],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939645":{"id":"n1820939645","loc":[-85.1087596,42.0863329],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939646":{"id":"n1820939646","loc":[-85.2915532,41.9782996],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939647":{"id":"n1820939647","loc":[-84.9988708,42.0877808],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939648":{"id":"n1820939648","loc":[-85.2243628,42.0356728],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939649":{"id":"n1820939649","loc":[-85.0427397,42.1020524],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:12Z","tags":{}},"n1820939650":{"id":"n1820939650","loc":[-85.6388392,41.9100752],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939651":{"id":"n1820939651","loc":[-85.0133709,42.0888557],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939652":{"id":"n1820939652","loc":[-85.318798,41.9701211],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939653":{"id":"n1820939653","loc":[-85.6335778,41.9190602],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939654":{"id":"n1820939654","loc":[-85.6338396,41.9370247],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939655":{"id":"n1820939655","loc":[-85.0939069,42.0931988],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939656":{"id":"n1820939656","loc":[-85.5702347,41.9651378],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939657":{"id":"n1820939657","loc":[-85.4235286,42.0088392],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939658":{"id":"n1820939658","loc":[-85.2740856,41.9972206],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939659":{"id":"n1820939659","loc":[-85.4824299,41.9934195],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939660":{"id":"n1820939660","loc":[-85.3857846,42.0014408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939661":{"id":"n1820939661","loc":[-85.0451658,42.10028],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939662":{"id":"n1820939662","loc":[-85.3893036,42.001377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939664":{"id":"n1820939664","loc":[-85.2455845,42.0088607],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939665":{"id":"n1820939665","loc":[-85.2741071,41.9951116],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939666":{"id":"n1820939666","loc":[-85.1298375,42.0677718],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939667":{"id":"n1820939667","loc":[-85.5491848,41.9707377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:13Z","tags":{}},"n1820939669":{"id":"n1820939669","loc":[-85.2780298,41.995238],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939670":{"id":"n1820939670","loc":[-85.1330068,42.0716926],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939671":{"id":"n1820939671","loc":[-85.0811342,42.1025129],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939672":{"id":"n1820939672","loc":[-85.2325124,42.0290135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939673":{"id":"n1820939673","loc":[-85.2975077,41.9716953],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939674":{"id":"n1820939674","loc":[-85.0951729,42.0922394],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939676":{"id":"n1820939676","loc":[-85.0363252,42.1043119],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939677":{"id":"n1820939677","loc":[-85.2960057,41.97349],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939678":{"id":"n1820939678","loc":[-85.3701849,41.9982515],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939679":{"id":"n1820939679","loc":[-85.3381486,41.9848861],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939680":{"id":"n1820939680","loc":[-85.2058448,42.0417286],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939682":{"id":"n1820939682","loc":[-85.0819335,42.1034443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939683":{"id":"n1820939683","loc":[-85.3872223,41.9993359],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939684":{"id":"n1820939684","loc":[-85.095366,42.091909],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939685":{"id":"n1820939685","loc":[-85.2327914,42.0291888],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939686":{"id":"n1820939686","loc":[-85.0433459,42.1018773],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939687":{"id":"n1820939687","loc":[-85.0585339,42.1027318],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939688":{"id":"n1820939688","loc":[-85.0062885,42.0876347],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939689":{"id":"n1820939689","loc":[-85.246299,42.017377],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939690":{"id":"n1820939690","loc":[-85.2932376,41.9742877],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939691":{"id":"n1820939691","loc":[-85.2962846,41.9736815],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:14Z","tags":{}},"n1820939692":{"id":"n1820939692","loc":[-85.6052365,41.9409193],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939693":{"id":"n1820939693","loc":[-85.2570536,42.0003341],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939694":{"id":"n1820939694","loc":[-85.0488458,42.1014064],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939695":{"id":"n1820939695","loc":[-85.4050321,42.0069578],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939696":{"id":"n1820939696","loc":[-85.4847517,41.9845894],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939697":{"id":"n1820939697","loc":[-85.0844655,42.1013826],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939698":{"id":"n1820939698","loc":[-85.1437206,42.0650008],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939699":{"id":"n1820939699","loc":[-85.1168183,42.0864034],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939700":{"id":"n1820939700","loc":[-85.5479831,41.9711366],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939701":{"id":"n1820939701","loc":[-85.0349948,42.1034124],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939702":{"id":"n1820939702","loc":[-85.0835589,42.1038821],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939703":{"id":"n1820939703","loc":[-85.0203875,42.0902649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939704":{"id":"n1820939704","loc":[-85.0371191,42.1038184],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939705":{"id":"n1820939705","loc":[-85.1273312,42.0735681],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939707":{"id":"n1820939707","loc":[-85.1272239,42.0730226],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939710":{"id":"n1820939710","loc":[-85.0349881,42.1019012],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939712":{"id":"n1820939712","loc":[-85.2440459,42.0178313],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939713":{"id":"n1820939713","loc":[-85.2444751,42.0182618],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939714":{"id":"n1820939714","loc":[-85.0539996,42.1032863],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:15Z","tags":{}},"n1820939715":{"id":"n1820939715","loc":[-85.2215905,42.0373246],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939716":{"id":"n1820939716","loc":[-85.0649712,42.1051994],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939717":{"id":"n1820939717","loc":[-85.0927146,42.0927581],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939718":{"id":"n1820939718","loc":[-85.3884668,42.0042312],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939719":{"id":"n1820939719","loc":[-85.0840672,42.1013241],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939720":{"id":"n1820939720","loc":[-85.304739,41.9725408],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939721":{"id":"n1820939721","loc":[-85.2243585,42.0371334],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939722":{"id":"n1820939722","loc":[-85.0599823,42.1049686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939723":{"id":"n1820939723","loc":[-85.0298825,42.0944288],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939724":{"id":"n1820939724","loc":[-85.0366095,42.1042443],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939725":{"id":"n1820939725","loc":[-85.0698783,42.1058135],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939726":{"id":"n1820939726","loc":[-85.1054551,42.0873361],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939727":{"id":"n1820939727","loc":[-84.9952324,42.0864285],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939728":{"id":"n1820939728","loc":[-85.3442211,41.9897993],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939729":{"id":"n1820939729","loc":[-85.4386134,42.0056822],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939730":{"id":"n1820939730","loc":[-85.2438528,42.0146589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939731":{"id":"n1820939731","loc":[-85.0355581,42.1041846],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939732":{"id":"n1820939732","loc":[-85.557682,41.9724447],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939734":{"id":"n1820939734","loc":[-85.2299418,42.033314],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939735":{"id":"n1820939735","loc":[-85.6297412,41.9419088],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939736":{"id":"n1820939736","loc":[-85.2645101,41.9980259],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939738":{"id":"n1820939738","loc":[-85.082195,42.1035649],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:16Z","tags":{}},"n1820939739":{"id":"n1820939739","loc":[-85.234272,42.0267102],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939740":{"id":"n1820939740","loc":[-85.0130758,42.0895006],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939741":{"id":"n1820939741","loc":[-85.4594702,42.0000375],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939742":{"id":"n1820939742","loc":[-84.9946745,42.0863687],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939743":{"id":"n1820939743","loc":[-85.6438775,41.9120186],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939744":{"id":"n1820939744","loc":[-85.6372685,41.9168089],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939745":{"id":"n1820939745","loc":[-85.2789468,41.9893208],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939747":{"id":"n1820939747","loc":[-85.3775019,41.998427],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939749":{"id":"n1820939749","loc":[-85.0993571,42.0909178],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939750":{"id":"n1820939750","loc":[-85.1308503,42.0669339],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939751":{"id":"n1820939751","loc":[-85.4802566,41.9856659],"version":"2","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1820939752":{"id":"n1820939752","loc":[-85.2543563,42.0108804],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939753":{"id":"n1820939753","loc":[-85.1041033,42.0878815],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939755":{"id":"n1820939755","loc":[-85.4000969,42.0071651],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939757":{"id":"n1820939757","loc":[-85.3858275,42.0022381],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939758":{"id":"n1820939758","loc":[-85.3653998,41.996609],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939759":{"id":"n1820939759","loc":[-85.2432949,42.0202305],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939760":{"id":"n1820939760","loc":[-85.3878874,42.0042472],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939761":{"id":"n1820939761","loc":[-85.2516741,42.0114145],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:17Z","tags":{}},"n1820939762":{"id":"n1820939762","loc":[-85.2788825,41.9865142],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939763":{"id":"n1820939763","loc":[-85.0009147,42.0886686],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939764":{"id":"n1820939764","loc":[-85.3918142,42.003434],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939765":{"id":"n1820939765","loc":[-85.5532832,41.9696848],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939766":{"id":"n1820939766","loc":[-85.5545063,41.969254],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939768":{"id":"n1820939768","loc":[-85.1327989,42.0704769],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939770":{"id":"n1820939770","loc":[-85.0588558,42.1047696],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939772":{"id":"n1820939772","loc":[-85.555798,41.9713017],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939773":{"id":"n1820939773","loc":[-85.0565853,42.1023589],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939774":{"id":"n1820939774","loc":[-85.2582941,41.9992765],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939775":{"id":"n1820939775","loc":[-85.3007264,41.9727642],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939776":{"id":"n1820939776","loc":[-85.2477045,42.0082652],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1820939777":{"id":"n1820939777","loc":[-85.2415247,42.0104973],"version":"1","changeset":"12180411","user":"Thad C","uid":"349027","visible":"true","timestamp":"2012-07-10T22:57:18Z","tags":{}},"n1821006698":{"id":"n1821006698","loc":[-85.6345227,41.9382009],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006700":{"id":"n1821006700","loc":[-85.6344894,41.938975],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006704":{"id":"n1821006704","loc":[-85.6351181,41.9370157],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006706":{"id":"n1821006706","loc":[-85.6357554,41.9361657],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006708":{"id":"n1821006708","loc":[-85.6351235,41.9368481],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006710":{"id":"n1821006710","loc":[-85.6352844,41.9364211],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006712":{"id":"n1821006712","loc":[-85.6351503,41.937307],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006716":{"id":"n1821006716","loc":[-85.6350366,41.9379774],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821006725":{"id":"n1821006725","loc":[-85.6352147,41.9375903],"version":"1","changeset":"12181163","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T01:58:48Z","tags":{}},"n1821137607":{"id":"n1821137607","loc":[-85.5297057,41.9669915],"version":"1","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1821137608":{"id":"n1821137608","loc":[-85.5288598,41.9673094],"version":"1","changeset":"12182668","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:35:32Z","tags":{}},"n1821139530":{"id":"n1821139530","loc":[-85.4832228,41.9881686],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139531":{"id":"n1821139531","loc":[-85.4812101,41.9851258],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139532":{"id":"n1821139532","loc":[-85.4799127,41.9860244],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1821139533":{"id":"n1821139533","loc":[-85.4800313,41.9865555],"version":"1","changeset":"12182679","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T07:37:01Z","tags":{}},"n1841425201":{"id":"n1841425201","loc":[-85.4334577,42.0063713],"version":"1","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:50:57Z","tags":{}},"n1841425222":{"id":"n1841425222","loc":[-85.4382449,42.0055785],"version":"1","changeset":"12524188","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-28T14:50:58Z","tags":{}},"n1914861007":{"id":"n1914861007","loc":[-85.394959,42.0057472],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:21Z","tags":{}},"n1914861057":{"id":"n1914861057","loc":[-85.3967185,42.0049695],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:22Z","tags":{}},"n1914861112":{"id":"n1914861112","loc":[-85.394179,42.0056906],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:24Z","tags":{}},"n1914861306":{"id":"n1914861306","loc":[-85.3900226,42.0028488],"version":"1","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:27Z","tags":{}},"n2114807565":{"id":"n2114807565","loc":[-85.6385979,41.9577824],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807568":{"id":"n2114807568","loc":[-85.6325097,41.9775713],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807572":{"id":"n2114807572","loc":[-85.6328996,41.9980965],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807578":{"id":"n2114807578","loc":[-85.6344818,41.9696956],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807583":{"id":"n2114807583","loc":[-85.6326289,41.9757853],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807593":{"id":"n2114807593","loc":[-85.6360828,41.9650674],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2130304159":{"id":"n2130304159","loc":[-85.6352537,41.9450015],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"railway":"level_crossing"}},"n2139795852":{"id":"n2139795852","loc":[-85.6374708,41.9311633],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:57Z","tags":{}},"n2139858882":{"id":"n2139858882","loc":[-85.635178,41.9356158],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858883":{"id":"n2139858883","loc":[-85.63533,41.9355886],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858884":{"id":"n2139858884","loc":[-85.6353819,41.93556],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858885":{"id":"n2139858885","loc":[-85.6353665,41.9355157],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858886":{"id":"n2139858886","loc":[-85.6353165,41.9354971],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858887":{"id":"n2139858887","loc":[-85.6352454,41.9355328],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858888":{"id":"n2139858888","loc":[-85.6350184,41.9357846],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858889":{"id":"n2139858889","loc":[-85.634978,41.9359448],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858890":{"id":"n2139858890","loc":[-85.6347723,41.9361523],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858891":{"id":"n2139858891","loc":[-85.6347165,41.9362667],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858892":{"id":"n2139858892","loc":[-85.6346992,41.9364312],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858893":{"id":"n2139858893","loc":[-85.634603,41.9366329],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858894":{"id":"n2139858894","loc":[-85.6345973,41.9367488],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858895":{"id":"n2139858895","loc":[-85.6345127,41.9369734],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858896":{"id":"n2139858896","loc":[-85.634478,41.9371923],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858897":{"id":"n2139858897","loc":[-85.6344838,41.9373768],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858898":{"id":"n2139858898","loc":[-85.6346242,41.9375299],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858899":{"id":"n2139858899","loc":[-85.6347723,41.9376357],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858900":{"id":"n2139858900","loc":[-85.6347607,41.9377788],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858901":{"id":"n2139858901","loc":[-85.6346204,41.9379533],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858902":{"id":"n2139858902","loc":[-85.6344184,41.9380105],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858903":{"id":"n2139858903","loc":[-85.6341627,41.9380406],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858904":{"id":"n2139858904","loc":[-85.634005,41.9381679],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858905":{"id":"n2139858905","loc":[-85.63393,41.9383353],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:11Z","tags":{}},"n2139858906":{"id":"n2139858906","loc":[-85.6338588,41.9384597],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858907":{"id":"n2139858907","loc":[-85.6336627,41.9387759],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858908":{"id":"n2139858908","loc":[-85.6335127,41.9389361],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858933":{"id":"n2139858933","loc":[-85.6353118,41.9432646],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858934":{"id":"n2139858934","loc":[-85.6353952,41.9433002],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858935":{"id":"n2139858935","loc":[-85.6356496,41.9433255],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858936":{"id":"n2139858936","loc":[-85.6363128,41.9433373],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858937":{"id":"n2139858937","loc":[-85.6365467,41.9433779],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858938":{"id":"n2139858938","loc":[-85.6368692,41.9435265],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858939":{"id":"n2139858939","loc":[-85.6370986,41.9437039],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858940":{"id":"n2139858940","loc":[-85.6372371,41.9437732],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858941":{"id":"n2139858941","loc":[-85.6374756,41.9438171],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858942":{"id":"n2139858942","loc":[-85.6376164,41.9439286],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858943":{"id":"n2139858943","loc":[-85.6377504,41.944138],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858944":{"id":"n2139858944","loc":[-85.6384204,41.9443137],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858945":{"id":"n2139858945","loc":[-85.6385726,41.9444506],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858946":{"id":"n2139858946","loc":[-85.638702,41.9445739],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858947":{"id":"n2139858947","loc":[-85.6387179,41.9446516],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858948":{"id":"n2139858948","loc":[-85.6387088,41.9447985],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858949":{"id":"n2139858949","loc":[-85.6387656,41.9449877],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858950":{"id":"n2139858950","loc":[-85.638777,41.9451448],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858951":{"id":"n2139858951","loc":[-85.6387088,41.9452631],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858964":{"id":"n2139858964","loc":[-85.6383346,41.9442912],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858966":{"id":"n2139858966","loc":[-85.6384724,41.9443605],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858967":{"id":"n2139858967","loc":[-85.6354078,41.9434285],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858968":{"id":"n2139858968","loc":[-85.635271,41.943654],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858969":{"id":"n2139858969","loc":[-85.6352657,41.9437437],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858970":{"id":"n2139858970","loc":[-85.635271,41.9438195],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858971":{"id":"n2139858971","loc":[-85.6351563,41.9438906],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858972":{"id":"n2139858972","loc":[-85.6351384,41.9438882],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858973":{"id":"n2139858973","loc":[-85.6351514,41.9438034],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858974":{"id":"n2139858974","loc":[-85.6351237,41.9436641],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858975":{"id":"n2139858975","loc":[-85.6351498,41.9436108],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858976":{"id":"n2139858976","loc":[-85.6351058,41.9435345],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858977":{"id":"n2139858977","loc":[-85.6349641,41.9432051],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858986":{"id":"n2139858986","loc":[-85.6341205,41.9380746],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858990":{"id":"n2139858990","loc":[-85.6345671,41.9381816],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858995":{"id":"n2139858995","loc":[-85.6339783,41.9382273],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139859003":{"id":"n2139859003","loc":[-85.6340477,41.9373489],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{}},"n2139859004":{"id":"n2139859004","loc":[-85.6339784,41.9374752],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{}},"n2139870406":{"id":"n2139870406","loc":[-85.6342265,41.9432605],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:01Z","tags":{}},"n2139877106":{"id":"n2139877106","loc":[-85.6346323,41.9438746],"version":"1","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:38Z","tags":{}},"n2139982399":{"id":"n2139982399","loc":[-85.6324055,41.9408537],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982400":{"id":"n2139982400","loc":[-85.632488,41.941063],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{"leisure":"slipway"}},"n2139982401":{"id":"n2139982401","loc":[-85.6327261,41.9415366],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982402":{"id":"n2139982402","loc":[-85.6326391,41.9413598],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982403":{"id":"n2139982403","loc":[-85.6327041,41.9414391],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982405":{"id":"n2139982405","loc":[-85.6322891,41.9406009],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982406":{"id":"n2139982406","loc":[-85.6325412,41.9425257],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139989333":{"id":"n2139989333","loc":[-85.6340584,41.9431731],"version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{}},"n2140006331":{"id":"n2140006331","loc":[-85.6361751,41.9459744],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006334":{"id":"n2140006334","loc":[-85.636528,41.9459751],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006336":{"id":"n2140006336","loc":[-85.6370918,41.9458926],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006338":{"id":"n2140006338","loc":[-85.6378806,41.9456474],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006340":{"id":"n2140006340","loc":[-85.6385831,41.9454343],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006342":{"id":"n2140006342","loc":[-85.639341,41.945157],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006344":{"id":"n2140006344","loc":[-85.6393497,41.9450232],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006346":{"id":"n2140006346","loc":[-85.6388245,41.9450145],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006348":{"id":"n2140006348","loc":[-85.6388167,41.9441739],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006351":{"id":"n2140006351","loc":[-85.6382915,41.9441797],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006353":{"id":"n2140006353","loc":[-85.63828,41.9438109],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006355":{"id":"n2140006355","loc":[-85.6381949,41.9436009],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006357":{"id":"n2140006357","loc":[-85.6371904,41.9435918],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006359":{"id":"n2140006359","loc":[-85.6366966,41.9432727],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006361":{"id":"n2140006361","loc":[-85.6353755,41.9432744],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006365":{"id":"n2140006365","loc":[-85.6350906,41.9435472],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006366":{"id":"n2140006366","loc":[-85.6343461,41.9441573],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006395":{"id":"n2140006395","loc":[-85.6351171,41.9437175],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006397":{"id":"n2140006397","loc":[-85.635352,41.9450206],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006399":{"id":"n2140006399","loc":[-85.6358194,41.9454937],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006401":{"id":"n2140006401","loc":[-85.6348693,41.9445739],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006431":{"id":"n2140006431","loc":[-85.6376737,41.9438023],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006437":{"id":"n2140006437","loc":[-85.6382631,41.9442724],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2189123379":{"id":"n2189123379","loc":[-85.6342671,41.9352665],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"w203974076":{"id":"w203974076","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870442","n2139870457","n2139870458","n2139870459","n2139870460","n2139870452"]},"w170989131":{"id":"w170989131","version":"5","changeset":"13114234","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-09-15T03:33:30Z","tags":{"name":"St Joseph River","source":"Bing Imagery","waterway":"river"},"nodes":["n1820938225","n1820938712","n1820937596","n1820937574","n1820938515","n1820938330","n1820938678","n1820938240","n1820938950","n1820939226","n1820939575","n1820937913","n1820938223","n1820937668","n1820938545","n1820937584","n1820939742","n1820939727","n1820937578","n1820938149","n1820938124","n1820938888","n1820938898","n1820937922","n1820939543","n1820939370","n1820939401","n1820939647","n1820938345","n1820939644","n1820938333","n1820938370","n1820938624","n1820938493","n1820939559","n1820939763","n1820939237","n1820939416","n1820937810","n1820938317","n1820938324","n1820937558","n1820939556","n1820938298","n1820939348","n1820939125","n1820939081","n1820938859","n1820939126","n1820938881","n1820939439","n1820939324","n1820939128","n1820938101","n1820937706","n1820938382","n1820938776","n1820937815","n1820939177","n1820939688","n1820938952","n1820938216","n1820938387","n1820939333","n1820938243","n1820938248","n1820937666","n1820939051","n1820938332","n1820939438","n1820939407","n1820939361","n1820937517","n1820938770","n1820939591","n1820937857","n1820938491","n1820937993","n1820938125","n1820938166","n1820937746","n1820939028","n1820937638","n1820938676","n1820938843","n1820938844","n1820937978","n1820938730","n1820939544","n1820938304","n1820939123","n1820939494","n1820939450","n1820939555","n1820938133","n1820938129","n1820938871","n1820939408","n1820938669","n1820938260","n1820939740","n1820937625","n1820938631","n1820939651","n1820939613","n1820937850","n1820938325","n1820937736","n1820938804","n1820938837","n1820938014","n1820938991","n1820938722","n1820938935","n1820937870","n1820938432","n1820937986","n1820938756","n1820938966","n1820939159","n1820937744","n1820938334","n1820937645","n1820939394","n1820937656","n1820938392","n1820939703","n1820938385","n1820938947","n1820938854","n1820938428","n1820938488","n1820938269","n1820938668","n1820938268","n1820938707","n1820937732","n1820939144","n1820938481","n1820938771","n1820938686","n1820938948","n1820937997","n1820937769","n1820939003","n1820938083","n1820939011","n1820938803","n1820938700","n1820939723","n1820938808","n1820938262","n1820938081","n1820938926","n1820938326","n1820938102","n1820938508","n1820939590","n1820939199","n1820938084","n1820938870","n1820938895","n1820937611","n1820938918","n1820938514","n1820939610","n1820938910","n1820937523","n1820938127","n1820939108","n1820937981","n1820938938","n1820938715","n1820939016","n1820938237","n1820939623","n1820939602","n1820937734","n1820938977","n1820939633","n1820939156","n1820939406","n1820938279","n1820938301","n1820937678","n1820937671","n1820939163","n1820938356","n1820939372","n1820937568","n1820937626","n1820939710","n1820939004","n1820938253","n1820938571","n1820937513","n1820939412","n1820939701","n1820939509","n1820938839","n1820939731","n1820937798","n1820939676","n1820939724","n1820939243","n1820939704","n1820937814","n1820937599","n1820938199","n1820938995","n1820938445","n1820938069","n1820938470","n1820939074","n1820938193","n1820938740","n1820938047","n1820939507","n1820939441","n1820939160","n1820937849","n1820937840","n1820938052","n1820938988","n1820938796","n1820937724","n1820937620","n1820939304","n1820938343","n1820939649","n1820938875","n1820939686","n1820938476","n1820937801","n1820937737","n1820938264","n1820939609","n1820939496","n1820939593","n1820939566","n1820939661","n1820937782","n1820938912","n1820939173","n1820937733","n1820938953","n1820939603","n1820937607","n1820938468","n1820939601","n1820939694","n1820939133","n1820938897","n1820938893","n1820937831","n1820937730","n1820938820","n1820938046","n1820938426","n1820938347","n1820937582","n1820938954","n1820938033","n1820938104","n1820938680","n1820939563","n1820939404","n1820939714","n1820939000","n1820937992","n1820938168","n1820939510","n1820939500","n1820937509","n1820938865","n1820939773","n1820938138","n1820938905","n1820937623","n1820939418","n1820937946","n1820939577","n1820937615","n1820939687","n1820939119","n1820937988","n1820938337","n1820937750","n1820938703","n1820938339","n1820939044","n1820939770","n1820938913","n1820937672","n1820939722","n1820937768","n1820939597","n1820939612","n1820937699","n1820937682","n1820937669","n1820937657","n1820939363","n1820937800","n1820938265","n1820937760","n1820938207","n1820938115","n1820939130","n1820939716","n1820938338","n1820938239","n1820939040","n1820938064","n1820938855","n1820939015","n1820938258","n1820939042","n1820939043","n1820938443","n1820939725","n1820937675","n1820938568","n1820938280","n1820937705","n1820938775","n1820938636","n1820938626","n1820937859","n1820938096","n1820937852","n1820939039","n1820938247","n1820938585","n1820937707","n1820938117","n1820938909","n1820939115","n1820939335","n1820938805","n1820937935","n1820937876","n1820938699","n1820937869","n1820938603","n1820938100","n1820938500","n1820938283","n1820938275","n1820938923","n1820938365","n1820938349","n1820937804","n1820937903","n1820937608","n1820938688","n1820939671","n1820938092","n1820937820","n1820938753","n1820938922","n1820937990","n1820939682","n1820939738","n1820939600","n1820938167","n1820937726","n1820939702","n1820938209","n1820939456","n1820937837","n1820938222","n1820938902","n1820939162","n1820938965","n1820938461","n1820937681","n1820937514","n1820937764","n1820939719","n1820939697","n1820938899","n1820939093","n1820938702","n1820939595","n1820938749","n1820938348","n1820937606","n1820938675","n1820938830","n1820938737","n1820938758","n1820938716","n1820939107","n1820937863","n1820939033","n1820938163","n1820937867","n1820938819","n1820938034","n1820938252","n1820937563","n1820937868","n1820939032","n1820938632","n1820937982","n1820937943","n1820939568","n1820939541","n1820938215","n1820939097","n1820938812","n1820937518","n1820937952","n1820938711","n1820938736","n1820939066","n1820937591","n1820938082","n1820938108","n1820938496","n1820939410","n1820938949","n1820938327","n1820937708","n1820939023","n1820937772","n1820938256","n1820939083","n1820938378","n1820938961","n1820937610","n1820939717","n1820938695","n1820938590","n1820939655","n1820938341","n1820939054","n1820939157","n1820939674","n1820939684","n1820939511","n1820937631","n1820939458","n1820937830","n1820937709","n1820937779","n1820939749","n1820938880","n1820938856","n1820938557","n1820939557","n1820938249","n1820938818","n1820937594","n1820939114","n1820938416","n1820937508","n1820938990","n1820938201","n1820937759","n1820937987","n1820939164","n1820939753","n1820938187","n1820939067","n1820937586","n1820937941","n1820938121","n1820937807","n1820938521","n1820939726","n1820938244","n1820939014","n1820938741","n1820937629","n1820938664","n1820938747","n1820939082","n1820938709","n1820938320","n1820938270","n1820937619","n1820937777","n1820937718","n1820939138","n1820938056","n1820938155","n1820938596","n1820937775","n1820938437","n1820938128","n1820939581","n1820939145","n1820938546","n1820938184","n1820937601","n1820937794","n1820938539","n1820939645","n1820938438","n1820938436","n1820939025","n1820938915","n1820938534","n1820937605","n1820939607","n1820939101","n1820939580","n1820939268","n1820939134","n1820938849","n1820938754","n1820938079","n1820937842","n1820938781","n1820938873","n1820938495","n1820938381","n1820938503","n1820939436","n1820938502","n1820939087","n1820938996","n1820938449","n1820938907","n1820937979","n1820937780","n1820937546","n1820939699","n1820937677","n1820938957","n1820938946","n1820937776","n1820937717","n1820938718","n1820937637","n1820938510","n1820937663","n1820938941","n1820939151","n1820937603","n1820938250","n1820937951","n1820938630","n1820938821","n1820938779","n1820938497","n1820938159","n1820939536","n1820938409","n1820938386","n1820939116","n1820938340","n1820939117","n1820938291","n1820938435","n1820937819","n1820938242","n1820939078","n1820938877","n1820939104","n1820939445","n1820938367","n1820938903","n1820939420","n1820938517","n1820939508","n1820939542","n1820939326","n1820938210","n1820939020","n1820938815","n1820937832","n1820939513","n1820937818","n1820939005","n1820938717","n1820939135","n1820938384","n1820937587","n1820939024","n1820939504","n1820939120","n1820939026","n1820938015","n1820938998","n1820937648","n1820939137","n1820937761","n1820938195","n1820938535","n1820939550","n1820938725","n1820938282","n1820937781","n1820937792","n1820939705","n1820937788","n1820939707","n1820937882","n1820939632","n1820938427","n1820938276","n1820939617","n1820939013","n1820939035","n1820937543","n1820939365","n1820937752","n1820937802","n1820939183","n1820939670","n1820938450","n1820939375","n1820937813","n1820937673","n1820937783","n1820939029","n1820939768","n1820939377","n1820937974","n1820939244","n1820939642","n1820937864","n1820938255","n1820938528","n1820939666","n1820938120","n1820937812","n1820938928","n1820939750","n1820939099","n1820938073","n1820938714","n1820939140","n1820938192","n1820937844","n1820938635","n1820938742","n1820939583","n1820937887","n1820938318","n1820938816","n1820939698","n1820938273","n1820939181","n1820937652","n1820938748","n1820937651","n1820938519","n1820938019","n1820938752","n1820938235","n1820939118","n1820938562","n1820939314","n1820939570","n1820938190","n1820938342","n1820938533","n1820937977","n1820939089","n1820939146","n1820938622","n1820938297","n1820938524","n1820939283","n1820938874","n1820938832","n1820937550","n1820937843","n1820938638","n1820938116","n1820938206","n1820938319","n1820939053","n1820937845","n1820938093","n1820939217","n1820938997","n1820939355","n1820938861","n1820938726","n1820938057","n1820939373","n1820937862","n1820938518","n1820939072","n1820939680","n1820938444","n1820938217","n1820938506","n1820938393","n1820938492","n1820938852","n1820938221","n1820938773","n1820937684","n1820939060","n1820938224","n1820938203","n1820938840","n1820937525","n1820938147","n1820938433","n1820938188","n1820939359","n1820938750","n1820938016","n1820938768","n1820937621","n1820937799","n1820938951","n1820938721","n1820939037","n1820937866","n1820939715","n1820938063","n1820938446","n1820937627","n1820939624","n1820938431","n1820939721","n1820939622","n1820939239","n1820939263","n1820939648","n1820939640","n1820938867","n1820938757","n1820938439","n1820939352","n1820937740","n1820939329","n1820938229","n1820937583","n1820938180","n1820938366","n1820937767","n1820937758","n1820939374","n1820938869","n1820938292","n1820938400","n1820938399","n1820939734","n1820939289","n1820938944","n1820937755","n1820938759","n1820938434","n1820937600","n1820937825","n1820937670","n1820937793","n1820938011","n1820938246","n1820938956","n1820937770","n1820937757","n1820938059","n1820937860","n1820937569","n1820939266","n1820939685","n1820939672","n1820938606","n1820938772","n1820939038","n1820938211","n1820938359","n1820939619","n1820938708","n1820939512","n1820938065","n1820939233","n1820939739","n1820938786","n1820938879","n1820939147","n1820938563","n1820939148","n1820937839","n1820937659","n1820937786","n1820938419","n1820939565","n1820939402","n1820937710","n1820938254","n1820938271","n1820938390","n1820937680","n1820938140","n1820937817","n1820938218","n1820937985","n1820939235","n1820938441","n1820938401","n1820938719","n1820937795","n1820938971","n1820938460","n1820939759","n1820937972","n1820937841","n1820938462","n1820939320","n1820938978","n1820938360","n1820939713","n1820937676","n1820939712","n1820937939","n1820938080","n1820937754","n1820937753","n1820938530","n1820937886","n1820939689","n1820939124","n1820938697","n1820938789","n1820939105","n1820938860","n1820938853","n1820939400","n1820937561","n1820938404","n1820938774","n1820939316","n1820937696","n1820938782","n1820938975","n1820937564","n1820939730","n1820938257","n1820937853","n1820938487","n1820938848","n1820938906","n1820939230","n1820938424","n1820938051","n1820937771","n1820939587","n1820939149","n1820938792","n1820939041","n1820938934","n1820939777","n1820937515","n1820939058","n1820938312","n1820939264","n1820939631","n1820939109","n1820939403","n1820939664","n1820938724","n1820938929","n1820939399","n1820939776","n1820939369","n1820939185","n1820937701","n1820938126","n1820938336","n1820938219","n1820939080","n1820938642","n1820938043","n1820937725","n1820938548","n1820938552","n1820938035","n1820938684","n1820937778","n1820938764","n1820939021","n1820939346","n1820937712","n1820939761","n1820938397","n1820937747","n1820938566","n1820939161","n1820939090","n1820939752","n1820939271","n1820938878","n1820938110","n1820938346","n1820938499","n1820938151","n1820939538","n1820938281","n1820939153","n1820938551","n1820939285","n1820938197","n1820938408","n1820938482","n1820939036","n1820939579","n1820938489","n1820938483","n1820938189","n1820938123","n1820938087","n1820937741","n1820938485","n1820937590","n1820938972","n1820937773","n1820937520","n1820938872","n1820938131","n1820938452","n1820938328","n1820939620","n1820937641","n1820938353","n1820939693","n1820938705","n1820937640","n1820939189","n1820938144","n1820939774","n1820938694","n1820938238","n1820939397","n1820937917","n1820938454","n1820938567","n1820938979","n1820938060","n1820938204","n1820937828","n1820939232","n1820938806","n1820938857","n1820938078","n1820938105","n1820939228","n1820938604","n1820937763","n1820937854","n1820938289","n1820939736","n1820937937","n1820937714","n1820938278","n1820938058","n1820938706","n1820938989","n1820938313","n1820938520","n1820938288","n1820937689","n1820939537","n1820939531","n1820939019","n1820937527","n1820938455","n1820938814","n1820938045","n1820939627","n1820938213","n1820938161","n1820938331","n1820938024","n1820938220","n1820938062","n1820938178","n1820937796","n1820937644","n1820938490","n1820937589","n1820937879","n1820939614","n1820938882","n1820938039","n1820938538","n1820937667","n1820937719","n1820938561","n1820939658","n1820938783","n1820938601","n1820938198","n1820938388","n1820938969","n1820937687","n1820939086","n1820939665","n1820939187","n1820938498","n1820938261","n1820937983","n1820938068","n1820938136","n1820939061","n1820938137","n1820938186","n1820939071","n1820937592","n1820939669","n1820937553","n1820939357","n1820938727","n1820939371","n1820939112","n1820939079","n1820938743","n1820938467","n1820938834","n1820938022","n1820938537","n1820938122","n1820938516","n1820937614","n1820937612","n1820939469","n1820939636","n1820939050","n1820939552","n1820938157","n1820938663","n1820938955","n1820939091","n1820938430","n1820938471","n1820937809","n1820938074","n1820938208","n1820938914","n1820938858","n1820938417","n1820937531","n1820938107","n1820939100","n1820938751","n1820937711","n1820938824","n1820939745","n1820937572","n1820938602","n1820938212","n1820938097","n1820937921","n1820938090","n1820938511","n1820938876","n1820939762","n1820938234","n1820938048","n1820937774","n1820937856","n1820937749","n1820937765","n1820938286","n1820939095","n1820938480","n1820939229","n1820938277","n1820937617","n1820938311","n1820937622","n1820939196","n1820937690","n1820939006","n1820939287","n1820939131","n1820938106","n1820938784","n1820938335","n1820938095","n1820938182","n1820937715","n1820937683","n1820938070","n1820939605","n1820938527","n1820938763","n1820938398","n1820937686","n1820939621","n1820937664","n1820939277","n1820938565","n1820939539","n1820938099","n1820939646","n1820938556","n1820937548","n1820938729","n1820939336","n1820938259","n1820938728","n1820938361","n1820937643","n1820938644","n1820939007","n1820939690","n1820939227","n1820937635","n1820937950","n1820938682","n1820939150","n1820939012","n1820939261","n1820939111","n1820937805","n1820939691","n1820939677","n1820937628","n1820937811","n1820938790","n1820938251","n1820938226","n1820938942","n1820937633","n1820937984","n1820937751","n1820939673","n1820938970","n1820938415","n1820938597","n1820938309","n1820938111","n1820938472","n1820938894","n1820938402","n1820937593","n1820938570","n1820939102","n1820939775","n1820937948","n1820939121","n1820937511","n1820938787","n1820939720","n1820939075","n1820937880","n1820937742","n1820937721","n1820939535","n1820938486","n1820938354","n1820937632","n1820939010","n1820938885","n1820938089","n1820937613","n1820938442","n1820938245","n1820938272","n1820937566","n1820938295","n1820938532","n1820938883","n1820937713","n1820937674","n1820939635","n1820938448","n1820938355","n1820938587","n1820938559","n1820937787","n1820939301","n1820937723","n1820939056","n1820937560","n1820938323","n1820938230","n1820938453","n1820938377","n1820938357","n1820939637","n1820938017","n1820939540","n1820939376","n1820937639","n1820937642","n1820938075","n1820938351","n1820938766","n1820937897","n1820938973","n1820938066","n1820939547","n1820939652","n1820937944","n1820937748","n1820939234","n1820939193","n1820937891","n1820938785","n1820939132","n1820938523","n1820938884","n1820938411","n1820939554","n1820938791","n1820937655","n1820938368","n1820939152","n1820938030","n1820938447","n1820937580","n1820939628","n1820937588","n1820937894","n1820939201","n1820938086","n1820937650","n1820938379","n1820939008","n1820938999","n1820937524","n1820937872","n1820938389","n1820939197","n1820938422","n1820938936","n1820939262","n1820937634","n1820938583","n1820939589","n1820937901","n1820939034","n1820939065","n1820938290","n1820939195","n1820938228","n1820937884","n1820938797","n1820938191","n1820939191","n1820939198","n1820937892","n1820939679","n1820938507","n1820937647","n1820937909","n1820938542","n1820939598","n1820937851","n1820939084","n1820939728","n1820937688","n1820938263","n1820938670","n1820937762","n1820939310","n1820938925","n1820938862","n1820938822","n1820938547","n1820937731","n1820938594","n1820938592","n1820938214","n1820938284","n1820937835","n1820938599","n1820939437","n1820937834","n1820937576","n1820937692","n1820939586","n1820939546","n1820938403","n1820937970","n1820939561","n1820938098","n1820938851","n1820938477","n1820938892","n1820939045","n1820939758","n1820939350","n1820938321","n1820938440","n1820938595","n1820938364","n1820938962","n1820938118","n1820939678","n1820938406","n1820938549","n1820937555","n1820938823","n1820937521","n1820939471","n1820939487","n1820938799","n1820938605","n1820937928","n1820938373","n1820939747","n1820939629","n1820937557","n1820937526","n1820938958","n1820938833","n1820937636","n1820938967","n1820938760","n1820938842","n1820938067","n1820939077","n1820939224","n1820938185","n1820939110","n1820938372","n1820939757","n1820939063","n1820939660","n1820938813","n1820937528","n1820938369","n1820938896","n1820939551","n1820939683","n1820937660","n1820937873","n1820938810","n1820938478","n1820939662","n1820937595","n1820939052","n1820938113","n1820939070","n1820938733","n1820937878","n1820938300","n1820939760","n1820939718","n1820937646","n1820939057","n1820939443","n1914861306","n1820938013","n1820937529","n1820939764","n1820938826","n1820937885","n1820939588","n1820937865","n1820937833","n1914861112","n1820938761","n1914861007","n1820937905","n1820938541","n1820939092","n1914861057","n1820938153","n1820938267","n1820939265","n1820938085","n1820939018","n1820939755","n1820938474","n1820939027","n1820938593","n1820938202","n1820939599","n1820939695","n1820938077","n1820938012","n1820939545","n1820939596","n1820939337","n1820938227","n1820937698","n1820938475","n1820939465","n1820938165","n1820938698","n1820938525","n1820938529","n1820938553","n1820938940","n1820939498","n1820938501","n1820939533","n1820938924","n1820939634","n1820939220","n1820939657","n1820938887","n1820938838","n1820938114","n1820937823","n1820938778","n1820938801","n1820939096","n1820938981","n1820937953","n1820938732","n1820938980","n1820938960","n1820937949","n1820938026","n1820939273","n1841425201","n1820938629","n1820938864","n1820938554","n1820938088","n1820937685","n1841425222","n1820939729","n1820937665","n1820937838","n1820937739","n1820938780","n1820937821","n1820938825","n1820939055","n1820939485","n1820938041","n1820938746","n1820939562","n1820938459","n1820939489","n1820938050","n1820937980","n1820937695","n1820938413","n1820938555","n1820937703","n1820938536","n1820938196","n1820938287","n1820938169","n1820939279","n1820938531","n1820938959","n1820939741","n1820938665","n1820938963","n1820939611","n1820937653","n1820939618","n1820939492","n1820938600","n1820938628","n1820939312","n1820939616","n1820937738","n1820939001","n1820939062","n1820938794","n1820938558","n1820937822","n1820937532","n1820939073","n1820938200","n1820938241","n1820938968","n1820938927","n1820938306","n1820937630","n1820938456","n1820937694","n1820938908","n1820939076","n1820937522","n1820939659","n1820938522","n1820939318","n1820938932","n1820938841","n1820937579","n1820937540","n1820938560","n1821139530","n1820938964","n1820937662","n1820939281","n1821139533","n1820937797","n1821139532","n1820939751","n1821139531","n1820939291","n1820938420","n1820939696","n1820938904","n1820938484","n1820939448","n1820939009","n1820938735","n1820938986","n1820938937","n1820939030","n1820938734","n1820938745","n1820939106","n1820938987","n1820937858","n1820938673","n1820938620","n1820937808","n1820937700","n1820939573","n1820938540","n1820937661","n1820937570","n1820938396","n1820937875","n1820939048","n1820938233","n1820938793","n1820939584","n1820938412","n1820938394","n1820937846","n1820938800","n1820938690","n1820939331","n1820939630","n1820938762","n1820938710","n1820939322","n1820938992","n1821137608","n1821137607","n1820937924","n1820939139","n1820939463","n1820939574","n1820938294","n1820938071","n1820938307","n1820938061","n1820939260","n1820937899","n1820938310","n1820938983","n1820937530","n1820938993","n1820938890","n1820937915","n1820938231","n1820938040","n1820938920","n1820939585","n1820938135","n1820939700","n1820937824","n1820939667","n1820937930","n1820938134","n1820937551","n1820939405","n1820938232","n1820937716","n1820937848","n1820939765","n1820939068","n1820939766","n1820937933","n1820937720","n1820939222","n1820939772","n1820939022","n1820939732","n1820937702","n1820937691","n1820938945","n1820937756","n1820938451","n1820938410","n1820938798","n1820937945","n1820937654","n1820938598","n1820938836","n1820937571","n1820937556","n1820938994","n1820938919","n1820938863","n1820939064","n1820938018","n1820937658","n1820937537","n1820938142","n1820938666","n1820937535","n1820939571","n1820938465","n1820939638","n1820937533","n1820939656","n1820939422","n1820938109","n1820938405","n1820938028","n1820937649","n1820938829","n1820939031","n1820939155","n1820938350","n1820938463","n1820938425","n1820939047","n1820938831","n1820938494","n1820937697","n1820938504","n1820938900","n1820937784","n1820938414","n1820938076","n1820938723","n1820937722","n1820938739","n1820937791","n1820938985","n1820938352","n1820938293","n1820938274","n1820939692","n1820937871","n1820939059","n1820938868","n1820937877","n1820937743","n1820938429","n1820937545","n1820937575","n1820938302","n1820938505","n1820938916","n1820938374","n1820938329","n1820937790","n1820939735","n1820938930","n1820937995","n1820938512","n1820938130","n1820938194","n1820938671","n1820938802","n1820937542","n1820937602","n1820939069","n1820938901","n1820939654","n1820937727","n1820939569","n1820938375","n1820939306","n1820938479","n1820938376","n1820938667","n1820937766","n1820939467","n1820939567","n1820937806","n1820938943","n1820938931","n1820937745","n1820939452","n1820938738","n1820938053","n1820939653","n1820938640","n1820937604","n1820937536","n1820938701","n1820939625","n1820939744","n1820939572","n1820937577","n1820937541","n1820938891","n1820937597","n1820938469","n1820939194","n1820937539","n1820938911","n1820939017","n1820939650","n1820939103","n1820939578","n1820938132","n1820937549","n1820938634","n1820939743","n1820937544","n1820937826","n1820937598","n1820937547","n1820938032","n1820939142"]},"w17963021":{"id":"w17963021","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:22:17Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331667","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185948706","n185948708","n185948710"]},"w203974069":{"id":"w203974069","version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:34Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139870431","n2139870432","n2139870433","n2139870434","n2139870431"]},"w209816575":{"id":"w209816575","version":"1","changeset":"15353718","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T16:29:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199856288","n2199856289","n2199856290","n2199856291","n2199856292","n2199856293","n2199856294","n2199856295","n2199856296","n2199856297","n2199856298","n2199856299","n2199856300","n2199856301","n2199856302","n2199856303","n2199856288"]},"w203841838":{"id":"w203841838","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","natural":"water"},"nodes":["n2138493826","n2138493827","n2138493828","n2138493829","n2138493830","n2138493831","n2138493833","n2138493832","n2138493826"]},"w203972937":{"id":"w203972937","version":"2","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:26Z","tags":{"highway":"path","name":"Riverwalk Trail","surface":"asphalt","width":"3"},"nodes":["n2139858882","n2139858883","n2139858884","n2139858885","n2139858886","n2139858887","n2139858882","n2139858888","n2139858889","n2139858890","n2139858891","n2139858892","n2139858893","n2139858894","n2139858895","n2139858896","n2139858897","n2139858898","n2139858899","n2139858900","n2139858901","n2139858902","n2139858903","n2139858986","n2139858904","n2139858995","n2139858905","n2139858906","n2139858907","n2139858908","n2139858909","n2139858910","n2139858911","n2139858912","n2139858913","n2139858914","n2139858915","n2139858916","n2139858917","n2139858918","n2139858919","n2139858920","n2139858921","n2139858922","n2139858923","n2139858924","n2139858925","n2139858926","n2139858927","n2139858982","n2139858928","n2139858929","n2139858930","n2139858931","n2139858932","n2139858981","n2139858933","n2139858934","n2139858935","n2139858936","n2139858937","n2139858938","n2139858939","n2139858940","n2139858941","n2139858942","n2139858943","n2140006437","n2139858964","n2139858944","n2139858966","n2139858945","n2139858946","n2139858947","n2139858948","n2139858949","n2139858950","n2139858951"]},"w17964015":{"id":"w17964015","version":"2","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326005:15326006","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185954680","n185954683","n185954685","n185954687","n185954689","n185954690","n185954691","n2139870379","n2139870456","n185954692","n185954693","n185954695"]},"w17967315":{"id":"w17967315","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"South Andrews Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Andrews","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981999","n185974477","n185964963"]},"w203974071":{"id":"w203974071","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870439","n2139870440","n2139870441","n2139870442","n2139870443","n2139870444","n2139870445","n2139870446","n2139870447","n2139870448","n2139870449"]},"w170848824":{"id":"w170848824","version":"3","changeset":"15276848","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:54:30Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819858503","n1819858531","n1819858526","n1819858518","n1819858505","n1819858508","n1819858512","n1819858514","n1819858528","n1819858509","n1819858511","n1819858507","n1819858521"]},"w203986458":{"id":"w203986458","version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139989357","n2139989359","n2139989360","n2139989362","n2139989357"]},"w170844917":{"id":"w170844917","version":"7","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"source":"Bing","waterway":"riverbank"},"nodes":["n1819805911","n1819805690","n1819805812","n1819805766","n1819805802","n1819805885","n1819805626","n1819805842","n1819805715","n1819805694","n1819805618","n1819805629","n1819805731","n1819805636","n1819805878","n1819805718","n1819805798","n1819849057","n1819805666","n1819805852","n1819805805","n1819805789","n1819805868","n1819805680","n1819805918","n1819848888","n1819805762","n2139989328","n1819805907","n2139989330","n1819805915","n1819858521","n1819805854","n1819805876","n1819805864","n1819805922","n2139859004","n1819805702","n2139859003","n1819805614","n1819805792","n1819805786","n1819805777","n1819805645","n1819805838","n1819805889","n1819805795","n1819805707","n1819805774","n1819805808","n1819805810","n1819805724","n1819805676","n1819805728","n1819805783","n1819805687","n1819805727","n2189123379","n1819805632","n1819805641","n1819805760","n1819805887","n1819805861","n1819805722","n1819805880","n2139982405","n2139982399","n2139982400","n1819805770","n2139982402","n2139982403","n2139982401","n1819805780","n1819805834","n2139982406","n1819805698","n1819805647","n1819805870","n1819805683","n1819805622","n1819805639","n1819805858","n1819805643","n1819805673","n1819805925","n1819805849","n1819805711","n1819805846","n1819805669","n1819805883","n1819805814","n1819805873","n1819805911"]},"w17967326":{"id":"w17967326","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"North Constantine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185985217","n185985219","n185985221","n185985222","n185985223","n185985225","n2140006431","n185985227","n185985229","n185985231","n185985233","n185985235","n185985238","n185985240","n2140018998","n185964965"]},"w134150789":{"id":"w134150789","version":"5","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964971","n2139870406","n185964972"]},"w17966400":{"id":"w17966400","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"tertiary","name":"South Constantine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958672","n185964965"]},"w203974066":{"id":"w203974066","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139870417","n2139870418","n2139870420","n2139870419"]},"w17965998":{"id":"w17965998","version":"5","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:53Z","tags":{"name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no"},"nodes":["n185972775","n185972777","n185972779","n185972781","n185972783","n185972785","n185972787","n185972788","n185972789","n185972790","n185972791","n185972793","n185972795","n185972797","n185972798","n185972800","n185972802","n185972805","n185972807","n185972809","n185972811","n185972813","n185972814","n185972815","n185972816","n185972817","n185972819","n185972821","n185972824","n185972826","n185972830","n185972832","n185972834","n185972835","n185972836","n185972839","n185990434","n2114807572","n2114807568","n185972845","n2114807583","n185972847","n185972849","n185972851","n2114807578","n1475293254","n2114807593","n1475293226","n185972862","n2114807565","n185951869","n1475293234","n1475293252","n185972868","n1475293264","n1475293222","n185972878","n1475293261","n185972882","n185972885","n1475293260","n1475293240","n185972891","n185972895","n185972897","n185972899","n2130304159","n1475284023","n185972903"]},"w134150795":{"id":"w134150795","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"bridge":"yes","highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964970","n185964971"]},"w203974067":{"id":"w203974067","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139870420","n2139870421"]},"w170995908":{"id":"w170995908","version":"3","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:15Z","tags":{"highway":"residential","name":"Thomas Street","source":"Bing"},"nodes":["n1821006702","n1821006700","n1821006698","n2139858990","n1821006716","n1821006725","n1821006712","n1821006704","n1821006708","n1821006710","n1821006706"]},"w17965834":{"id":"w17965834","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"Spring Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Spring","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185971361","n185971364","n185971366","n185971368","n185954695","n185964968"]},"w203974070":{"id":"w203974070","version":"2","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:34Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139870435","n2139870436","n2139870437","n2139870438","n2139870435"]},"w203989879":{"id":"w203989879","version":"1","changeset":"14895342","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:35:05Z","tags":{"highway":"service"},"nodes":["n2140018998","n2140018999","n2140019000"]},"w203974062":{"id":"w203974062","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870387","n2139870388","n2139870389","n2139870390","n2139870391","n2139870392","n2139870397","n2139870393","n2139870396","n2139870395","n2139870394","n2139870387"]},"w203974061":{"id":"w203974061","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"footway"},"nodes":["n2139870382","n2139870383"]},"w203049587":{"id":"w203049587","version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"area":"yes","name":"Scidmore Park Petting Zoo","tourism":"zoo","zoo":"petting_zoo"},"nodes":["n2130304133","n2130304136","n2130304138","n2130304140","n2130304142","n2130304144","n2130304146","n2130304147","n2130304148","n2130304149","n2130304150","n2130304151","n2130304133"]},"w203972941":{"id":"w203972941","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path"},"nodes":["n2139858982","n2139858983","n2139858984","n2139858985","n2139858927"]},"w203974065":{"id":"w203974065","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"service"},"nodes":["n2139870406","n2139870407","n2139870408","n2139870417","n2139870409","n2139870410","n2139870411","n2139870412","n2139870426","n2139870413","n2139870414","n2139870415","n2139870419","n2139870416","n2139870421","n2139870408"]},"w203972940":{"id":"w203972940","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858934","n2139858967","n2139858968","n2139858969","n2139858970","n2139858971","n2139858972","n2139858973","n2139858974","n2139858975","n2139858976","n2139858977","n2139858978","n2139858979","n2139858980","n2139858981"]},"w203974072":{"id":"w203974072","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139858925","n2139870450","n2139870453","n2139870451","n2139870452","n2139870441"]},"w203974074":{"id":"w203974074","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870454","n2139870456","n2139870429"]},"w203974060":{"id":"w203974060","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"footway"},"nodes":["n2139870383","n2139870384","n2139870422","n2139870385","n2139870386","n2139870388"]},"w203841837":{"id":"w203841837","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","natural":"water"},"nodes":["n2138493807","n2138493808","n2138493809","n2138493810","n2138493811","n2138493812","n2138493813","n2138493814","n2138493815","n2138493816","n2138493825","n2138493817","n2138493824","n2138493818","n2138493819","n2138493820","n2138493821","n2138493822","n2138493823","n2138493807"]},"w134150845":{"id":"w134150845","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{"bridge":"yes","name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15324560:15329061:15329062:15333515:15333516:15333517:15328802:15312982:15312984:15312980:15326010:15326011:15313203:15322169:15324562:15312971:15312973:15312977:15328799:15328907:15328908:15322175:15329059:15333626:15333627:15325105:15322549:15337756:153","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185972903","n185972905"]},"w203974059":{"id":"w203974059","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"footway"},"nodes":["n2139870430","n2139870439","n2139870429","n2139870428","n2139870379","n2139870455","n2139870380","n2139870381","n2139858925","n2139870382"]},"w203986457":{"id":"w203986457","version":"2","changeset":"15287771","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T21:56:30Z","tags":{"area":"yes","ele":"241","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417887","gnis:state_id":"26","leisure":"park","name":"Scidmore Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2139989333","n2139989335","n2139989337","n2139989339","n1819805762","n2139989328","n1819805907","n2139989330","n1819805915","n2139989341","n2139989344","n2139989346","n2139989348","n2139989350","n2139989351","n2139989353","n2139989355","n2139989333"]},"w170848331":{"id":"w170848331","version":"4","changeset":"15276848","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T22:54:29Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819848937","n1819849104","n1819849076","n1819849183","n1819848928","n1819848972","n1819848948","n1819848971","n1819848859","n1819849008","n1819848889","n1819849026","n1819849094","n1819849083","n1819849079","n1819849187","n1819848992","n1819849060","n1819849056","n1819849071","n1819849067","n1819849048","n1819849036","n1819849150","n1819849075","n1819849051","n1819849062","n1819848926","n1819849035","n1819848987","n1819849012","n1819848933","n1819848996","n1819848990","n1819849005","n1819849021","n1819848892","n1819849092","n1819848863","n1819848922","n1819848858","n1819848855","n1819848974","n1819848953","n1819849019","n1819849049","n1819848979","n1819849140","n1819849193","n1819849147","n1819849151","n1819849163","n1819849023","n1819848878","n1819849004","n1819848857","n1819848879","n1819849041","n1819849165","n1819849107","n1819849156","n1819848934","n1819848914","n1819848955","n1819848931","n1819848927","n1819849084","n1819849169","n1819849045","n1819848945","n1819849095","n1819848924","n1819849171","n1819849141","n1819849046","n1819849197","n1819849011","n1819849108","n1819849158","n1819849160","n1819848870","n1819849006","n1819849157","n1819848993","n1819848970","n1819849202","n1819848903","n1819848975","n1819848849","n1819849025","n1819849105","n1819849033","n1819849176","n1819849099","n1819849086","n1819848960","n1819848961","n1819849001","n1819848980","n1819849038","n1819848854","n1819849127","n1819849170","n1819849139","n1819848873","n1819848929","n1819849201","n1819849121","n1819849031","n1819849131","n1819848875","n1819849080","n1819849066","n1819849081","n1819849096","n1819849172","n1819849114","n1819849182","n1819848905","n1819849054","n1819848920","n1819848851","n1819848968","n1819848917","n1819849111","n1819849119","n1819849074","n1819848893","n1819849129","n1819848850","n1819848956","n1819849154","n1819848877","n1819848986","n1819849191","n1819848952","n1819848954","n1819848942","n1819849028","n1819849195","n1819848938","n1819848962","n1819849070","n1819849034","n1819849052","n1819849059","n1819848916","n1819849162","n1819849167","n1819849093","n1819849030","n1819849002","n1819849161","n1819848886","n1819848958","n1819849064","n1819849112","n1819849148","n1819848856","n1819848976","n1819848977","n1819849144","n1819848918","n1819849200","n1819848919","n1819849042","n1819849166","n1819849186","n1819849152","n1819849058","n1819849185","n1819849199","n1819849053","n1819849194","n1819849068","n1819849146","n1819849174","n1819848967","n1819848932","n1819849155","n1819849198","n1819848964","n1819848894","n1819848969","n1819849184","n1819849055","n1819849179","n1819848865","n1819848860","n1819849082","n1819848966","n1819849040","n1819849069","n1819849078","n1819849077","n1819848904","n1819848959","n1819849133","n1819849089","n1819849000","n1819849124","n1819849032","n1819849097","n1819848939","n1819849072","n1819848915","n1819849196","n1819848946","n1819849047","n1819849029","n1819849164","n1819848994","n1819849022","n1819858513","n1819849126","n1819849063","n1819848941","n1819849085","n1819848871","n1819848943","n1819849192","n1819858501","n1819849159","n1819858523","n1819848901","n1819849189","n1819858503","n1819849065","n2139877106","n1819848909","n1819848930","n1819848888"]},"w17967397":{"id":"w17967397","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:01Z","tags":{"highway":"residential","name":"North Andrews Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Andrews","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964963","n185985217"]},"w17964497":{"id":"w17964497","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:05Z","tags":{"highway":"tertiary","name":"Constantine St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Constantine","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958643","n185958645","n2139795852","n185958647","n185958649","n185958651","n185958653","n185958656","n185958658","n185958660","n185958662","n185958664","n185958666","n185958668","n185958670","n185948710","n185958672"]},"w203974068":{"id":"w203974068","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870422","n2139870423","n2139870424","n2139870425","n2139870426","n2139870427"]},"w203974063":{"id":"w203974063","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870398","n2139870399","n2139870400","n2139870401","n2139870398"]},"w203986459":{"id":"w203986459","version":"1","changeset":"14894902","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:02:33Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139989364","n2139989366","n2139989368","n2139989370","n2139989364"]},"w203988286":{"id":"w203988286","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"area":"yes","leisure":"park","name":"Memory Isle Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2140006331","n2140006334","n2140006336","n2140006338","n2140006340","n2140006342","n2140006344","n2140006346","n2140006348","n2140006351","n2140006353","n2140006355","n2140006357","n2140006359","n2140006361","n2140006363","n2140006364","n2140006365","n2140006395","n2140006366","n2140006401","n2140006397","n2140006399","n2140006331"]},"w203974073":{"id":"w203974073","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"footway"},"nodes":["n2139870453","n2139870454","n2139870455"]},"w203974064":{"id":"w203974064","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139870402","n2139870403","n2139870404","n2139870405","n2139870402"]},"n185966959":{"id":"n185966959","loc":[-85.642185,41.946411],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n1475283980":{"id":"n1475283980","loc":[-85.6398249,41.9451425],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284013":{"id":"n1475284013","loc":[-85.6396448,41.9451666],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284042":{"id":"n1475284042","loc":[-85.6386382,41.9454789],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n185975925":{"id":"n185975925","loc":[-85.6393332,41.9452388],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975919":{"id":"n185975919","loc":[-85.6391279,41.9453044],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975917":{"id":"n185975917","loc":[-85.6389034,41.9453872],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n2140006369":{"id":"n2140006369","loc":[-85.6386163,41.9451631],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006370":{"id":"n2140006370","loc":[-85.6385144,41.9449357],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006417":{"id":"n2140006417","loc":[-85.6385785,41.9450299],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006419":{"id":"n2140006419","loc":[-85.6385781,41.9452152],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2189123361":{"id":"n2189123361","loc":[-85.6404948,41.947015],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123363":{"id":"n2189123363","loc":[-85.6395765,41.946495],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123365":{"id":"n2189123365","loc":[-85.6389347,41.9460875],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n185966962":{"id":"n185966962","loc":[-85.644417,41.946364],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:51Z","tags":{}},"n185975911":{"id":"n185975911","loc":[-85.637532,41.9458276],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975913":{"id":"n185975913","loc":[-85.6376323,41.9457936],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185975915":{"id":"n185975915","loc":[-85.6383596,41.9455425],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185975932":{"id":"n185975932","loc":[-85.644403,41.945088],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185975934":{"id":"n185975934","loc":[-85.645486,41.945084],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:13Z","tags":{}},"n185979974":{"id":"n185979974","loc":[-85.644381,41.943831],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:24Z","tags":{}},"n2139795809":{"id":"n2139795809","loc":[-85.6464756,41.9450813],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795810":{"id":"n2139795810","loc":[-85.6466646,41.945174],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139858952":{"id":"n2139858952","loc":[-85.6383567,41.9454039],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:12Z","tags":{}},"n2139858953":{"id":"n2139858953","loc":[-85.6380506,41.9455301],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858954":{"id":"n2139858954","loc":[-85.6377321,41.9455546],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858955":{"id":"n2139858955","loc":[-85.6376571,41.9455245],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858956":{"id":"n2139858956","loc":[-85.6375859,41.9454544],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858957":{"id":"n2139858957","loc":[-85.6376686,41.9453185],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858958":{"id":"n2139858958","loc":[-85.6378936,41.9451712],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858959":{"id":"n2139858959","loc":[-85.6379225,41.9450825],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858960":{"id":"n2139858960","loc":[-85.6379302,41.9447564],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858961":{"id":"n2139858961","loc":[-85.6379763,41.9446963],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858962":{"id":"n2139858962","loc":[-85.6380436,41.9446706],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858963":{"id":"n2139858963","loc":[-85.6381286,41.9445969],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2139858965":{"id":"n2139858965","loc":[-85.6382523,41.9444134],"version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:13Z","tags":{}},"n2140006367":{"id":"n2140006367","loc":[-85.6380923,41.9454418],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006368":{"id":"n2140006368","loc":[-85.6384089,41.9453146],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006372":{"id":"n2140006372","loc":[-85.6383252,41.9447706],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006374":{"id":"n2140006374","loc":[-85.6381033,41.9447436],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006376":{"id":"n2140006376","loc":[-85.6379759,41.9447815],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006378":{"id":"n2140006378","loc":[-85.6379832,41.9448654],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006380":{"id":"n2140006380","loc":[-85.6380632,41.9450738],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006382":{"id":"n2140006382","loc":[-85.6380414,41.9452064],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006389":{"id":"n2140006389","loc":[-85.6379068,41.9453092],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006391":{"id":"n2140006391","loc":[-85.637925,41.9453904],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006393":{"id":"n2140006393","loc":[-85.6379977,41.94545],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2189123275":{"id":"n2189123275","loc":[-85.6371346,41.9462544],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123278":{"id":"n2189123278","loc":[-85.6368371,41.9466153],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123280":{"id":"n2189123280","loc":[-85.6379537,41.9489088],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123282":{"id":"n2189123282","loc":[-85.6383816,41.9497858],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123285":{"id":"n2189123285","loc":[-85.6393673,41.9512417],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123287":{"id":"n2189123287","loc":[-85.640554,41.9517766],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123289":{"id":"n2189123289","loc":[-85.6411,41.9522344],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123291":{"id":"n2189123291","loc":[-85.6417418,41.9526574],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123293":{"id":"n2189123293","loc":[-85.642321,41.9529407],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123295":{"id":"n2189123295","loc":[-85.6427697,41.9532278],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123297":{"id":"n2189123297","loc":[-85.6433332,41.9538254],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123300":{"id":"n2189123300","loc":[-85.6435785,41.9543648],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123301":{"id":"n2189123301","loc":[-85.6444394,41.9541048],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123303":{"id":"n2189123303","loc":[-85.6450603,41.954],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123312":{"id":"n2189123312","loc":[-85.6454829,41.9539108],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123314":{"id":"n2189123314","loc":[-85.6460464,41.9538526],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123315":{"id":"n2189123315","loc":[-85.6463178,41.9537167],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123316":{"id":"n2189123316","loc":[-85.646276,41.9534141],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123317":{"id":"n2189123317","loc":[-85.6459995,41.9531541],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123318":{"id":"n2189123318","loc":[-85.645222,41.9531929],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123319":{"id":"n2189123319","loc":[-85.6447316,41.9531813],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:20Z","tags":{}},"n2189123320":{"id":"n2189123320","loc":[-85.6440637,41.9532977],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123321":{"id":"n2189123321","loc":[-85.6438185,41.9531774],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123322":{"id":"n2189123322","loc":[-85.6440011,41.9528398],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123323":{"id":"n2189123323","loc":[-85.6442672,41.9525914],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123324":{"id":"n2189123324","loc":[-85.6442881,41.9523276],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123326":{"id":"n2189123326","loc":[-85.644262,41.952153],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123328":{"id":"n2189123328","loc":[-85.6441681,41.9520404],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123330":{"id":"n2189123330","loc":[-85.6442098,41.9517494],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123333":{"id":"n2189123333","loc":[-85.6438498,41.9515864],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123336":{"id":"n2189123336","loc":[-85.6435889,41.9513225],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123339":{"id":"n2189123339","loc":[-85.6425349,41.9510315],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123342":{"id":"n2189123342","loc":[-85.6422688,41.9508802],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123345":{"id":"n2189123345","loc":[-85.6418775,41.9508142],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123348":{"id":"n2189123348","loc":[-85.6415488,41.9508064],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123351":{"id":"n2189123351","loc":[-85.6411027,41.9505488],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123353":{"id":"n2189123353","loc":[-85.6410374,41.9498208],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123355":{"id":"n2189123355","loc":[-85.6410061,41.9494327],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123357":{"id":"n2189123357","loc":[-85.6411522,41.9482569],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123359":{"id":"n2189123359","loc":[-85.6410548,41.9473036],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123368":{"id":"n2189123368","loc":[-85.6380216,41.9458974],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123370":{"id":"n2189123370","loc":[-85.6386721,41.9507782],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"w17968193":{"id":"w17968193","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:56:35Z","tags":{"highway":"residential","name":"French St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"French","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312389:15312396","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185970906","n185982877","n185967774","n185985823","n185979974"]},"w203972939":{"id":"w203972939","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path"},"nodes":["n2139858965","n2139858966"]},"w203988289":{"id":"w203988289","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"area":"yes","natural":"water"},"nodes":["n2140006367","n2140006368","n2140006419","n2140006369","n2140006417","n2140006370","n2140006372","n2140006374","n2140006376","n2140006378","n2140006380","n2140006382","n2140006389","n2140006391","n2140006393","n2140006367"]},"w208640157":{"id":"w208640157","version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"area":"yes","natural":"wetland"},"nodes":["n1819849029","n2189123275","n2189123278","n2189123280","n2189123282","n2189123370","n2189123285","n2189123287","n2189123289","n2189123291","n2189123293","n2189123295","n2189123297","n2189123300","n2189123301","n2189123303","n2189123312","n2189123314","n2189123315","n2189123316","n2189123317","n2189123318","n2189123319","n2189123320","n2189123321","n2189123322","n2189123323","n2189123324","n2189123326","n2189123328","n2189123330","n2189123333","n2189123336","n2189123339","n2189123342","n2189123345","n2189123348","n2189123351","n2189123353","n2189123355","n2189123357","n2189123359","n2189123361","n2189123363","n2189123365","n2189123368","n1819849029"]},"w17966281":{"id":"w17966281","version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:03Z","tags":{"highway":"residential","name":"Pealer St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pealer","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312363:15312366:15312367:15312368:15325990:15325991:15324554","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975911","n185975913","n185975915","n1475284042","n185975917","n185975919","n185975925","n185970909","n1475284013","n1475283980","n185975928","n185967775","n185975930","n185975932","n185975934","n2139795809","n2139795810"]},"w17965353":{"id":"w17965353","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:36:24Z","tags":{"highway":"residential","name":"Yauney St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Yauney","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312346:15312347","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185966958","n185966959","n185966960","n185966962"]},"w203972938":{"id":"w203972938","version":"1","changeset":"14893110","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:29:14Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858964","n2139858965","n2139858963","n2139858962","n2139858961","n2139858960","n2139858959","n2139858958","n2139858957","n2139858956","n2139858955","n2139858954","n2139858953","n2139858952","n2139858951"]},"n354002665":{"id":"n354002665","loc":[-85.6366599,41.9444923],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T21:20:26Z","tags":{"ele":"244","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624726","gnis:state_id":"26","name":"Memory Isle","place":"island"}},"n354031301":{"id":"n354031301","loc":[-85.635,41.9463889],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T22:12:53Z","tags":{"amenity":"post_office","ele":"248","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2418163","gnis:state_id":"26","name":"Three Rivers Post Office"}},"n185963454":{"id":"n185963454","loc":[-85.633686,41.946072],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185963455":{"id":"n185963455","loc":[-85.633815,41.946131],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185963456":{"id":"n185963456","loc":[-85.633951,41.946174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:55Z","tags":{}},"n185978375":{"id":"n185978375","loc":[-85.634385,41.94559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978377":{"id":"n185978377","loc":[-85.634544,41.945725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978379":{"id":"n185978379","loc":[-85.634573,41.945764],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978381":{"id":"n185978381","loc":[-85.634616,41.945849],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:23Z","tags":{}},"n185978383":{"id":"n185978383","loc":[-85.634629,41.945893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185984011":{"id":"n185984011","loc":[-85.636058,41.946201],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984013":{"id":"n185984013","loc":[-85.636112,41.946366],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984015":{"id":"n185984015","loc":[-85.636143,41.946551],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185988237":{"id":"n185988237","loc":[-85.6354162,41.946044],"version":"3","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{}},"n185988969":{"id":"n185988969","loc":[-85.635374,41.945325],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185988971":{"id":"n185988971","loc":[-85.635643,41.945585],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185988972":{"id":"n185988972","loc":[-85.635853,41.94586],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n1475283992":{"id":"n1475283992","loc":[-85.6372968,41.9459007],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284011":{"id":"n1475284011","loc":[-85.6359415,41.9459797],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284019":{"id":"n1475284019","loc":[-85.6364433,41.9460423],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n185984009":{"id":"n185984009","loc":[-85.6360524,41.9460485],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988239":{"id":"n185988239","loc":[-85.6358187,41.9460423],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988243":{"id":"n185988243","loc":[-85.6366156,41.9460282],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988244":{"id":"n185988244","loc":[-85.6368316,41.9460046],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988245":{"id":"n185988245","loc":[-85.6370133,41.9459704],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185988241":{"id":"n185988241","loc":[-85.636291,41.9460461],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185964976":{"id":"n185964976","loc":[-85.633923,41.9434157],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185964980":{"id":"n185964980","loc":[-85.6333656,41.9437293],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185978388":{"id":"n185978388","loc":[-85.6346449,41.9460571],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819858504":{"id":"n1819858504","loc":[-85.6365343,41.9447926],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858506":{"id":"n1819858506","loc":[-85.6370546,41.9451882],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858516":{"id":"n1819858516","loc":[-85.6358369,41.9444654],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858519":{"id":"n1819858519","loc":[-85.6361534,41.9446176],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858525":{"id":"n1819858525","loc":[-85.6368025,41.9449442],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858527":{"id":"n1819858527","loc":[-85.6334199,41.9457495],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n185963452":{"id":"n185963452","loc":[-85.633564,41.9458519],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185963453":{"id":"n185963453","loc":[-85.6336152,41.9459804],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:56Z","tags":{}},"n185963451":{"id":"n185963451","loc":[-85.6332888,41.9456871],"version":"3","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:57Z","tags":{}},"n2130304152":{"id":"n2130304152","loc":[-85.6359466,41.9454599],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304153":{"id":"n2130304153","loc":[-85.6362773,41.9452683],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304154":{"id":"n2130304154","loc":[-85.6352028,41.9442868],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304155":{"id":"n2130304155","loc":[-85.6348756,41.9444769],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304156":{"id":"n2130304156","loc":[-85.6349723,41.9444207],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304157":{"id":"n2130304157","loc":[-85.6338698,41.9434443],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304158":{"id":"n2130304158","loc":[-85.635094,41.9451026],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304160":{"id":"n2130304160","loc":[-85.6353716,41.9449322],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304162":{"id":"n2130304162","loc":[-85.6365942,41.9459352],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304163":{"id":"n2130304163","loc":[-85.6369006,41.9457469],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304164":{"id":"n2130304164","loc":[-85.6363292,41.9452278],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2130304165":{"id":"n2130304165","loc":[-85.6360248,41.9454175],"version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{}},"n2139824683":{"id":"n2139824683","loc":[-85.6339825,41.9446441],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:01Z","tags":{}},"n2139824689":{"id":"n2139824689","loc":[-85.6340437,41.9446925],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:01Z","tags":{}},"n2139824702":{"id":"n2139824702","loc":[-85.6340961,41.9447551],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824705":{"id":"n2139824705","loc":[-85.6337467,41.944809],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824707":{"id":"n2139824707","loc":[-85.6341598,41.9448129],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824710":{"id":"n2139824710","loc":[-85.6342771,41.9448223],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824712":{"id":"n2139824712","loc":[-85.6346058,41.944841],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824713":{"id":"n2139824713","loc":[-85.633808,41.9448574],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824714":{"id":"n2139824714","loc":[-85.6340889,41.9448589],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824716":{"id":"n2139824716","loc":[-85.6343335,41.944871],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824717":{"id":"n2139824717","loc":[-85.6343341,41.9448717],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824720":{"id":"n2139824720","loc":[-85.6338757,41.9449069],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824721":{"id":"n2139824721","loc":[-85.6341445,41.9449071],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824724":{"id":"n2139824724","loc":[-85.6334787,41.9449262],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824726":{"id":"n2139824726","loc":[-85.6347119,41.9449332],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824727":{"id":"n2139824727","loc":[-85.6347175,41.9449418],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824728":{"id":"n2139824728","loc":[-85.6344284,41.9449538],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824729":{"id":"n2139824729","loc":[-85.6339339,41.9449573],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824730":{"id":"n2139824730","loc":[-85.6339179,41.9449682],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824732":{"id":"n2139824732","loc":[-85.6335472,41.9449895],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824733":{"id":"n2139824733","loc":[-85.6339736,41.9450164],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824735":{"id":"n2139824735","loc":[-85.6336034,41.9450415],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824736":{"id":"n2139824736","loc":[-85.6348317,41.945043],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824737":{"id":"n2139824737","loc":[-85.63403,41.9450651],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824738":{"id":"n2139824738","loc":[-85.6336611,41.9450949],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824740":{"id":"n2139824740","loc":[-85.6336582,41.9450966],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824744":{"id":"n2139824744","loc":[-85.6331702,41.9451107],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824745":{"id":"n2139824745","loc":[-85.6333388,41.9451142],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824746":{"id":"n2139824746","loc":[-85.6337131,41.9451341],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824747":{"id":"n2139824747","loc":[-85.6337021,41.9451372],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824748":{"id":"n2139824748","loc":[-85.6341244,41.9451472],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824749":{"id":"n2139824749","loc":[-85.6333952,41.945166],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:02Z","tags":{}},"n2139824750":{"id":"n2139824750","loc":[-85.633395,41.9451661],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824751":{"id":"n2139824751","loc":[-85.6346258,41.9451725],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824752":{"id":"n2139824752","loc":[-85.6332387,41.9451741],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824753":{"id":"n2139824753","loc":[-85.6346901,41.9451853],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824754":{"id":"n2139824754","loc":[-85.6346611,41.9452035],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824755":{"id":"n2139824755","loc":[-85.6346574,41.9452059],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824756":{"id":"n2139824756","loc":[-85.6345611,41.9452133],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824757":{"id":"n2139824757","loc":[-85.633453,41.9452194],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824758":{"id":"n2139824758","loc":[-85.6335508,41.9452283],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824759":{"id":"n2139824759","loc":[-85.6347424,41.9452312],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824760":{"id":"n2139824760","loc":[-85.6342305,41.9452395],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824761":{"id":"n2139824761","loc":[-85.6342319,41.9452449],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824762":{"id":"n2139824762","loc":[-85.6334969,41.94526],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824763":{"id":"n2139824763","loc":[-85.63468,41.9452706],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824764":{"id":"n2139824764","loc":[-85.6346772,41.9452724],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824765":{"id":"n2139824765","loc":[-85.6338611,41.9452763],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824766":{"id":"n2139824766","loc":[-85.6347811,41.9452939],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824767":{"id":"n2139824767","loc":[-85.6347375,41.9453211],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824768":{"id":"n2139824768","loc":[-85.6339171,41.9453301],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824769":{"id":"n2139824769","loc":[-85.6348307,41.9453377],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824770":{"id":"n2139824770","loc":[-85.6347067,41.9453405],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824771":{"id":"n2139824771","loc":[-85.6343461,41.9453461],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824772":{"id":"n2139824772","loc":[-85.6343481,41.9453475],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824773":{"id":"n2139824773","loc":[-85.634805,41.9453538],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824774":{"id":"n2139824774","loc":[-85.6336997,41.9453692],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824775":{"id":"n2139824775","loc":[-85.6339709,41.9453818],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824776":{"id":"n2139824776","loc":[-85.6336229,41.9454134],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824777":{"id":"n2139824777","loc":[-85.6349022,41.9454141],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824778":{"id":"n2139824778","loc":[-85.6348854,41.9454246],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824779":{"id":"n2139824779","loc":[-85.6340286,41.9454373],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824780":{"id":"n2139824780","loc":[-85.6336963,41.9454572],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824781":{"id":"n2139824781","loc":[-85.6336789,41.9454672],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824782":{"id":"n2139824782","loc":[-85.6344933,41.945475],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824783":{"id":"n2139824783","loc":[-85.6340854,41.9454918],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824784":{"id":"n2139824784","loc":[-85.6350036,41.9455034],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824785":{"id":"n2139824785","loc":[-85.6337501,41.9455089],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824786":{"id":"n2139824786","loc":[-85.6337497,41.9455091],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824787":{"id":"n2139824787","loc":[-85.6345425,41.9455186],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824788":{"id":"n2139824788","loc":[-85.6341459,41.9455372],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824789":{"id":"n2139824789","loc":[-85.6341376,41.945542],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824790":{"id":"n2139824790","loc":[-85.6338394,41.9455462],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824791":{"id":"n2139824791","loc":[-85.6349171,41.9455588],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824792":{"id":"n2139824792","loc":[-85.6338074,41.9455646],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824793":{"id":"n2139824793","loc":[-85.6346229,41.9455894],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824794":{"id":"n2139824794","loc":[-85.6338983,41.9455995],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824795":{"id":"n2139824795","loc":[-85.6338962,41.9456007],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824796":{"id":"n2139824796","loc":[-85.6342475,41.9456348],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824797":{"id":"n2139824797","loc":[-85.6339505,41.9456497],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824798":{"id":"n2139824798","loc":[-85.6347243,41.9456788],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824799":{"id":"n2139824799","loc":[-85.635057,41.9456831],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824800":{"id":"n2139824800","loc":[-85.635287,41.9457056],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824801":{"id":"n2139824801","loc":[-85.6350753,41.9457068],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:03Z","tags":{}},"n2139824802":{"id":"n2139824802","loc":[-85.6347753,41.9457252],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824803":{"id":"n2139824803","loc":[-85.6340521,41.9457473],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824804":{"id":"n2139824804","loc":[-85.6352875,41.9457611],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824805":{"id":"n2139824805","loc":[-85.6352941,41.9457611],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824806":{"id":"n2139824806","loc":[-85.6350758,41.9457623],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824807":{"id":"n2139824807","loc":[-85.6348194,41.9457638],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824808":{"id":"n2139824808","loc":[-85.635296,41.9459428],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139824809":{"id":"n2139824809","loc":[-85.6348212,41.9459455],"version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{}},"n2139832635":{"id":"n2139832635","loc":[-85.6354612,41.9448791],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832636":{"id":"n2139832636","loc":[-85.6360241,41.9453844],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832637":{"id":"n2139832637","loc":[-85.6361452,41.9453121],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832639":{"id":"n2139832639","loc":[-85.6355997,41.944797],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832641":{"id":"n2139832641","loc":[-85.6351346,41.9443541],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832647":{"id":"n2139832647","loc":[-85.6329883,41.9453692],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832653":{"id":"n2139832653","loc":[-85.6333643,41.9456293],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832663":{"id":"n2139832663","loc":[-85.6335394,41.9455339],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832665":{"id":"n2139832665","loc":[-85.6332375,41.9452476],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832667":{"id":"n2139832667","loc":[-85.6331664,41.9452161],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832669":{"id":"n2139832669","loc":[-85.6331144,41.9451875],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832671":{"id":"n2139832671","loc":[-85.6330779,41.9451274],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832673":{"id":"n2139832673","loc":[-85.6330664,41.9450802],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832678":{"id":"n2139832678","loc":[-85.6332218,41.9453585],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832686":{"id":"n2139832686","loc":[-85.6334246,41.945541],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832691":{"id":"n2139832691","loc":[-85.6329898,41.9454997],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832693":{"id":"n2139832693","loc":[-85.6343554,41.9443274],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832694":{"id":"n2139832694","loc":[-85.6336339,41.9437089],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832696":{"id":"n2139832696","loc":[-85.633532,41.9437708],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832697":{"id":"n2139832697","loc":[-85.6338316,41.9440868],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832698":{"id":"n2139832698","loc":[-85.6342258,41.9444141],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832699":{"id":"n2139832699","loc":[-85.6339164,41.9442166],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832700":{"id":"n2139832700","loc":[-85.6341389,41.944384],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832701":{"id":"n2139832701","loc":[-85.634235,41.9443259],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832702":{"id":"n2139832702","loc":[-85.633613,41.9437875],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832703":{"id":"n2139832703","loc":[-85.633915,41.9436132],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832704":{"id":"n2139832704","loc":[-85.6340019,41.9435613],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832706":{"id":"n2139832706","loc":[-85.6343197,41.9438427],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832708":{"id":"n2139832708","loc":[-85.6342361,41.9438936],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832709":{"id":"n2139832709","loc":[-85.6353839,41.9460401],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832710":{"id":"n2139832710","loc":[-85.6354032,41.9456763],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832711":{"id":"n2139832711","loc":[-85.6356839,41.9459252],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832712":{"id":"n2139832712","loc":[-85.6356109,41.945735],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832713":{"id":"n2139832713","loc":[-85.6353997,41.9457421],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832714":{"id":"n2139832714","loc":[-85.6353895,41.9459347],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832715":{"id":"n2139832715","loc":[-85.6334777,41.9436628],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832716":{"id":"n2139832716","loc":[-85.6333137,41.9435382],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832717":{"id":"n2139832717","loc":[-85.6330938,41.9435406],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832721":{"id":"n2139832721","loc":[-85.6333023,41.9434922],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832722":{"id":"n2139832722","loc":[-85.6330466,41.943623],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832723":{"id":"n2139832723","loc":[-85.6332746,41.9435624],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832724":{"id":"n2139832724","loc":[-85.6333511,41.9435176],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832725":{"id":"n2139832725","loc":[-85.6332241,41.9434001],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832726":{"id":"n2139832726","loc":[-85.6332355,41.9433686],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139870373":{"id":"n2139870373","loc":[-85.6351783,41.9439117],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870374":{"id":"n2139870374","loc":[-85.6351431,41.9439217],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870375":{"id":"n2139870375","loc":[-85.6348853,41.9439117],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870376":{"id":"n2139870376","loc":[-85.6348317,41.9439105],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870377":{"id":"n2139870377","loc":[-85.6346384,41.944007],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2139870378":{"id":"n2139870378","loc":[-85.6345563,41.9440523],"version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:00Z","tags":{}},"n2140006403":{"id":"n2140006403","loc":[-85.6359942,41.9450097],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006405":{"id":"n2140006405","loc":[-85.6363884,41.9446079],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006407":{"id":"n2140006407","loc":[-85.6362148,41.9447874],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006409":{"id":"n2140006409","loc":[-85.6379476,41.9445869],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006411":{"id":"n2140006411","loc":[-85.6378485,41.9445674],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006413":{"id":"n2140006413","loc":[-85.6378952,41.9444547],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006415":{"id":"n2140006415","loc":[-85.6379962,41.944477],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006421":{"id":"n2140006421","loc":[-85.6355248,41.9433702],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:24Z","tags":{}},"n2140006423":{"id":"n2140006423","loc":[-85.6378471,41.9439233],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006425":{"id":"n2140006425","loc":[-85.6378913,41.9441238],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006426":{"id":"n2140006426","loc":[-85.6381674,41.9442289],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006427":{"id":"n2140006427","loc":[-85.6382359,41.9440975],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006428":{"id":"n2140006428","loc":[-85.6382071,41.9440252],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006429":{"id":"n2140006429","loc":[-85.6381409,41.9439973],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006430":{"id":"n2140006430","loc":[-85.6380569,41.9440153],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006433":{"id":"n2140006433","loc":[-85.6379071,41.9442467],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006435":{"id":"n2140006435","loc":[-85.6381634,41.9443125],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006436":{"id":"n2140006436","loc":[-85.6382407,41.944301],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006438":{"id":"n2140006438","loc":[-85.6382761,41.9442188],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006439":{"id":"n2140006439","loc":[-85.6382429,41.9441761],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006440":{"id":"n2140006440","loc":[-85.6382016,41.9441632],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2140006441":{"id":"n2140006441","loc":[-85.6378185,41.9439835],"version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{}},"n2166205688":{"id":"n2166205688","loc":[-85.6349963,41.9444392],"version":"1","changeset":"15117845","user":"rolandg","uid":"8703","visible":"true","timestamp":"2013-02-21T23:02:38Z","tags":{}},"n2168544780":{"id":"n2168544780","loc":[-85.633944,41.945807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544781":{"id":"n2168544781","loc":[-85.6340783,41.9458621],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544782":{"id":"n2168544782","loc":[-85.6338184,41.9457548],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544783":{"id":"n2168544783","loc":[-85.6339925,41.9459777],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544784":{"id":"n2168544784","loc":[-85.6337317,41.9458698],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544785":{"id":"n2168544785","loc":[-85.6337297,41.9460042],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544786":{"id":"n2168544786","loc":[-85.633919,41.9460797],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544787":{"id":"n2168544787","loc":[-85.6338672,41.9459263],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544788":{"id":"n2168544788","loc":[-85.6338246,41.9459853],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544789":{"id":"n2168544789","loc":[-85.6337615,41.9459601],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544790":{"id":"n2168544790","loc":[-85.6342079,41.9460399],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544791":{"id":"n2168544791","loc":[-85.6343346,41.9458503],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544792":{"id":"n2168544792","loc":[-85.6343759,41.9458116],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544793":{"id":"n2168544793","loc":[-85.6344394,41.9458109],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544795":{"id":"n2168544795","loc":[-85.6344827,41.945851],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544797":{"id":"n2168544797","loc":[-85.6344807,41.945969],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544798":{"id":"n2168544798","loc":[-85.6344404,41.9459697],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544799":{"id":"n2168544799","loc":[-85.6344413,41.9460333],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544800":{"id":"n2168544800","loc":[-85.6342173,41.9460705],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544801":{"id":"n2168544801","loc":[-85.6342162,41.9460392],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544802":{"id":"n2168544802","loc":[-85.6344251,41.9460351],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544805":{"id":"n2168544805","loc":[-85.6344257,41.9460507],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544807":{"id":"n2168544807","loc":[-85.6344721,41.9460498],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544809":{"id":"n2168544809","loc":[-85.6344754,41.9461427],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544811":{"id":"n2168544811","loc":[-85.6344311,41.9461435],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544813":{"id":"n2168544813","loc":[-85.6344317,41.9461592],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544815":{"id":"n2168544815","loc":[-85.6343708,41.9461604],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544817":{"id":"n2168544817","loc":[-85.6343715,41.9461786],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544819":{"id":"n2168544819","loc":[-85.6343229,41.9461795],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544821":{"id":"n2168544821","loc":[-85.6343222,41.9461606],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544823":{"id":"n2168544823","loc":[-85.6342476,41.9461621],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544825":{"id":"n2168544825","loc":[-85.6342444,41.94607],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544827":{"id":"n2168544827","loc":[-85.634138,41.9461632],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544829":{"id":"n2168544829","loc":[-85.6342016,41.9460703],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544830":{"id":"n2168544830","loc":[-85.6332929,41.9463092],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544831":{"id":"n2168544831","loc":[-85.633122,41.946239],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544832":{"id":"n2168544832","loc":[-85.6332954,41.9460055],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544833":{"id":"n2168544833","loc":[-85.6333954,41.9460466],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544834":{"id":"n2168544834","loc":[-85.6334044,41.9460345],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544835":{"id":"n2168544835","loc":[-85.6334594,41.9460571],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544836":{"id":"n2168544836","loc":[-85.6333871,41.9461544],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544837":{"id":"n2168544837","loc":[-85.633403,41.9461609],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544838":{"id":"n2168544838","loc":[-85.6341683,41.9464167],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544839":{"id":"n2168544839","loc":[-85.6341711,41.9463411],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544840":{"id":"n2168544840","loc":[-85.6344471,41.9463469],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544841":{"id":"n2168544841","loc":[-85.6344441,41.9464243],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544842":{"id":"n2168544842","loc":[-85.6343622,41.9464226],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544843":{"id":"n2168544843","loc":[-85.6343593,41.9464989],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544844":{"id":"n2168544844","loc":[-85.6342812,41.9464973],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544845":{"id":"n2168544845","loc":[-85.634283,41.9464504],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544846":{"id":"n2168544846","loc":[-85.6342609,41.9464499],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544847":{"id":"n2168544847","loc":[-85.6342621,41.9464187],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544848":{"id":"n2168544848","loc":[-85.6348414,41.9463396],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544849":{"id":"n2168544849","loc":[-85.6348387,41.9461872],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544850":{"id":"n2168544850","loc":[-85.6351186,41.9461844],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544851":{"id":"n2168544851","loc":[-85.635119,41.9462112],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544852":{"id":"n2168544852","loc":[-85.6351918,41.9462104],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544853":{"id":"n2168544853","loc":[-85.6351944,41.9463515],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544854":{"id":"n2168544854","loc":[-85.6351049,41.9463524],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2168544855":{"id":"n2168544855","loc":[-85.6351046,41.946337],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{}},"n2189153180":{"id":"n2189153180","loc":[-85.6340369,41.9469572],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153181":{"id":"n2189153181","loc":[-85.6342531,41.946953],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153183":{"id":"n2189153183","loc":[-85.6348115,41.9465468],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153184":{"id":"n2189153184","loc":[-85.6348105,41.9464569],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153185":{"id":"n2189153185","loc":[-85.6351431,41.9464549],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153186":{"id":"n2189153186","loc":[-85.6351441,41.9465448],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153187":{"id":"n2189153187","loc":[-85.6350077,41.9465456],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153188":{"id":"n2189153188","loc":[-85.635008,41.9465721],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153189":{"id":"n2189153189","loc":[-85.6348965,41.9465727],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153190":{"id":"n2189153190","loc":[-85.6348962,41.9465463],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153191":{"id":"n2189153191","loc":[-85.6348963,41.9471586],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153192":{"id":"n2189153192","loc":[-85.6348944,41.947032],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153193":{"id":"n2189153193","loc":[-85.6350241,41.947031],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153194":{"id":"n2189153194","loc":[-85.635026,41.9471575],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153195":{"id":"n2189153195","loc":[-85.6352328,41.9471053],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153196":{"id":"n2189153196","loc":[-85.6352359,41.9469906],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153197":{"id":"n2189153197","loc":[-85.6353694,41.9469925],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153198":{"id":"n2189153198","loc":[-85.6353664,41.9471072],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153199":{"id":"n2189153199","loc":[-85.6348241,41.9469287],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153200":{"id":"n2189153200","loc":[-85.6348248,41.9468185],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153201":{"id":"n2189153201","loc":[-85.6351199,41.9468195],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153202":{"id":"n2189153202","loc":[-85.6351192,41.9469298],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153203":{"id":"n2189153203","loc":[-85.6347965,41.9468057],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153204":{"id":"n2189153204","loc":[-85.634792,41.9466044],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153205":{"id":"n2189153205","loc":[-85.6349483,41.9466025],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153206":{"id":"n2189153206","loc":[-85.6349493,41.9466448],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153207":{"id":"n2189153207","loc":[-85.6349753,41.9466445],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153208":{"id":"n2189153208","loc":[-85.6349743,41.9465995],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153209":{"id":"n2189153209","loc":[-85.6351173,41.9465977],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153210":{"id":"n2189153210","loc":[-85.6351219,41.9468015],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153211":{"id":"n2189153211","loc":[-85.6349806,41.9468032],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153212":{"id":"n2189153212","loc":[-85.6349794,41.9467519],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153213":{"id":"n2189153213","loc":[-85.6349521,41.9467523],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153214":{"id":"n2189153214","loc":[-85.6349532,41.9468037],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153215":{"id":"n2189153215","loc":[-85.6346302,41.9468381],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153216":{"id":"n2189153216","loc":[-85.6343028,41.9468449],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153217":{"id":"n2189153217","loc":[-85.6342006,41.9468297],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153218":{"id":"n2189153218","loc":[-85.6336698,41.9465918],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153219":{"id":"n2189153219","loc":[-85.6344663,41.9466639],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153220":{"id":"n2189153220","loc":[-85.6344639,41.9466015],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153221":{"id":"n2189153221","loc":[-85.6342283,41.9466065],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153222":{"id":"n2189153222","loc":[-85.6342303,41.9466587],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153223":{"id":"n2189153223","loc":[-85.6342843,41.9466575],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153224":{"id":"n2189153224","loc":[-85.6342851,41.9466794],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153225":{"id":"n2189153225","loc":[-85.6343475,41.9466781],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153226":{"id":"n2189153226","loc":[-85.634347,41.9466664],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153227":{"id":"n2189153227","loc":[-85.6354428,41.9470148],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153228":{"id":"n2189153228","loc":[-85.6354432,41.9468005],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153229":{"id":"n2189153229","loc":[-85.6360277,41.9468011],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153230":{"id":"n2189153230","loc":[-85.6360273,41.9470154],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153231":{"id":"n2189153231","loc":[-85.6354565,41.9465823],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153232":{"id":"n2189153232","loc":[-85.6354496,41.946218],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153233":{"id":"n2189153233","loc":[-85.6356355,41.9465788],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153234":{"id":"n2189153234","loc":[-85.6357155,41.9468008],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153235":{"id":"n2189153235","loc":[-85.6359539,41.9467969],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153236":{"id":"n2189153236","loc":[-85.6359561,41.9463036],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153237":{"id":"n2189153237","loc":[-85.6360129,41.9464793],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153238":{"id":"n2189153238","loc":[-85.6360152,41.9463898],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153239":{"id":"n2189153239","loc":[-85.6359607,41.9464928],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153240":{"id":"n2189153240","loc":[-85.6356903,41.9462227],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153242":{"id":"n2189153242","loc":[-85.6354163,41.946142],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153243":{"id":"n2189153243","loc":[-85.6357546,41.9462214],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153244":{"id":"n2189153244","loc":[-85.6357937,41.9462542],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153245":{"id":"n2189153245","loc":[-85.6358723,41.9467048],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153246":{"id":"n2189153246","loc":[-85.6361494,41.946757],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153247":{"id":"n2189153247","loc":[-85.6354173,41.9469082],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153248":{"id":"n2189153248","loc":[-85.635443,41.9469079],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153249":{"id":"n2189153249","loc":[-85.6360275,41.9469093],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153250":{"id":"n2189153250","loc":[-85.6361542,41.946915],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153251":{"id":"n2189153251","loc":[-85.6358654,41.9464843],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153252":{"id":"n2189153252","loc":[-85.6359549,41.9467499],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153253":{"id":"n2189153253","loc":[-85.6357172,41.9466335],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153254":{"id":"n2189153254","loc":[-85.6355644,41.9461768],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153255":{"id":"n2189153255","loc":[-85.6355655,41.946528],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153256":{"id":"n2189153256","loc":[-85.6357055,41.9465971],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153257":{"id":"n2189153257","loc":[-85.635869,41.9465971],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153259":{"id":"n2189153259","loc":[-85.6354561,41.9470278],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153260":{"id":"n2189153260","loc":[-85.6357961,41.9470233],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153261":{"id":"n2189153261","loc":[-85.6357977,41.9470907],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153262":{"id":"n2189153262","loc":[-85.6357297,41.9470916],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153263":{"id":"n2189153263","loc":[-85.635733,41.947233],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153264":{"id":"n2189153264","loc":[-85.6362674,41.9468637],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153265":{"id":"n2189153265","loc":[-85.6362646,41.9467047],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153266":{"id":"n2189153266","loc":[-85.6363267,41.9467047],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153267":{"id":"n2189153267","loc":[-85.6362633,41.9465848],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153268":{"id":"n2189153268","loc":[-85.6363805,41.9465468],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153269":{"id":"n2189153269","loc":[-85.6364604,41.9466842],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153270":{"id":"n2189153270","loc":[-85.6364604,41.9468647],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2199109756":{"id":"n2199109756","loc":[-85.6337134,41.9471841],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109757":{"id":"n2199109757","loc":[-85.6336514,41.94716],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109758":{"id":"n2199109758","loc":[-85.6337043,41.9470847],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109759":{"id":"n2199109759","loc":[-85.6335997,41.9470441],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109760":{"id":"n2199109760","loc":[-85.6335064,41.9471771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n185960195":{"id":"n185960195","loc":[-85.6295992,41.9524346],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185960796":{"id":"n185960796","loc":[-85.634723,41.953681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185961396":{"id":"n185961396","loc":[-85.634767,41.959009],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185962625":{"id":"n185962625","loc":[-85.635175,41.97201],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:29Z","tags":{}},"n185964982":{"id":"n185964982","loc":[-85.632799,41.9440543],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185965289":{"id":"n185965289","loc":[-85.634621,41.947323],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:49Z","tags":{}},"n185965291":{"id":"n185965291","loc":[-85.636166,41.947296],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:49Z","tags":{}},"n185965399":{"id":"n185965399","loc":[-85.634776,41.959834],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"n185966937":{"id":"n185966937","loc":[-85.633183,41.947315],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185966948":{"id":"n185966948","loc":[-85.626406,41.957188],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185967422":{"id":"n185967422","loc":[-85.6320229,41.9490123],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185967917":{"id":"n185967917","loc":[-85.634763,41.958292],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:17Z","tags":{}},"n185967918":{"id":"n185967918","loc":[-85.636271,41.958311],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:17Z","tags":{}},"n185968100":{"id":"n185968100","loc":[-85.630835,41.950656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185970515":{"id":"n185970515","loc":[-85.634832,41.963866],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:41Z","tags":{}},"n185971578":{"id":"n185971578","loc":[-85.634641,41.948627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:05Z","tags":{}},"n185971580":{"id":"n185971580","loc":[-85.6361818,41.9486135],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971631":{"id":"n185971631","loc":[-85.634729,41.954667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185971632":{"id":"n185971632","loc":[-85.636236,41.954656],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185972155":{"id":"n185972155","loc":[-85.623333,41.961987],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185974583":{"id":"n185974583","loc":[-85.634686,41.951158],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:21Z","tags":{}},"n185974585":{"id":"n185974585","loc":[-85.6362059,41.9511457],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185975064":{"id":"n185975064","loc":[-85.636218,41.953667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185975735":{"id":"n185975735","loc":[-85.634923,41.969269],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:09Z","tags":{}},"n185978390":{"id":"n185978390","loc":[-85.634668,41.949875],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978392":{"id":"n185978392","loc":[-85.634686,41.952415],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978394":{"id":"n185978394","loc":[-85.634726,41.955921],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978399":{"id":"n185978399","loc":[-85.6347861,41.9606613],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978402":{"id":"n185978402","loc":[-85.634806,41.961485],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:24Z","tags":{}},"n185978406":{"id":"n185978406","loc":[-85.6348298,41.964783],"version":"3","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:48:00Z","tags":{}},"n185978410":{"id":"n185978410","loc":[-85.6348766,41.9677088],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978414":{"id":"n185978414","loc":[-85.634938,41.971566],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978415":{"id":"n185978415","loc":[-85.634942,41.971611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978417":{"id":"n185978417","loc":[-85.634952,41.971655],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978419":{"id":"n185978419","loc":[-85.634989,41.971741],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978420":{"id":"n185978420","loc":[-85.635063,41.971864],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:25Z","tags":{}},"n185978787":{"id":"n185978787","loc":[-85.627936,41.954693],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978790":{"id":"n185978790","loc":[-85.626832,41.954677],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978967":{"id":"n185978967","loc":[-85.632278,41.948613],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:39Z","tags":{}},"n185980735":{"id":"n185980735","loc":[-85.628639,41.953725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:47Z","tags":{}},"n185982163":{"id":"n185982163","loc":[-85.636233,41.952398],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:31Z","tags":{}},"n185982193":{"id":"n185982193","loc":[-85.6313855,41.9499125],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185982195":{"id":"n185982195","loc":[-85.6304857,41.9511945],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185982196":{"id":"n185982196","loc":[-85.626336,41.957291],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982197":{"id":"n185982197","loc":[-85.625578,41.958664],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982198":{"id":"n185982198","loc":[-85.624619,41.960145],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185982200":{"id":"n185982200","loc":[-85.624494,41.960338],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:32Z","tags":{}},"n185984017":{"id":"n185984017","loc":[-85.636163,41.947382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:46Z","tags":{}},"n185984020":{"id":"n185984020","loc":[-85.636188,41.9498803],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185984022":{"id":"n185984022","loc":[-85.636276,41.955919],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:47Z","tags":{}},"n185984024":{"id":"n185984024","loc":[-85.636279,41.956901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:47Z","tags":{}},"n185988036":{"id":"n185988036","loc":[-85.631422,41.948294],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:30Z","tags":{}},"n185988867":{"id":"n185988867","loc":[-85.63102,41.948805],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988869":{"id":"n185988869","loc":[-85.630773,41.949209],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988871":{"id":"n185988871","loc":[-85.63005,41.95016],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988872":{"id":"n185988872","loc":[-85.629423,41.951016],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988873":{"id":"n185988873","loc":[-85.629252,41.951256],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988875":{"id":"n185988875","loc":[-85.629126,41.951489],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988877":{"id":"n185988877","loc":[-85.628991,41.951704],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988878":{"id":"n185988878","loc":[-85.628689,41.952112],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988879":{"id":"n185988879","loc":[-85.628313,41.952666],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988880":{"id":"n185988880","loc":[-85.627687,41.953529],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988882":{"id":"n185988882","loc":[-85.627394,41.953947],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:13Z","tags":{}},"n185988884":{"id":"n185988884","loc":[-85.627287,41.954128],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:14Z","tags":{}},"n1819858502":{"id":"n1819858502","loc":[-85.6328435,41.9455473],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858510":{"id":"n1819858510","loc":[-85.6324841,41.9453438],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858515":{"id":"n1819858515","loc":[-85.6318511,41.9446409],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858520":{"id":"n1819858520","loc":[-85.6326558,41.9454708],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:54Z","tags":{}},"n1819858522":{"id":"n1819858522","loc":[-85.6319048,41.9447407],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858524":{"id":"n1819858524","loc":[-85.6317718,41.9443666],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n1819858530":{"id":"n1819858530","loc":[-85.632055,41.9449128],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n2139795768":{"id":"n2139795768","loc":[-85.6243023,41.9606102],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139832645":{"id":"n2139832645","loc":[-85.6324455,41.9448607],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832649":{"id":"n2139832649","loc":[-85.6328043,41.9454773],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832651":{"id":"n2139832651","loc":[-85.6322547,41.9449621],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832675":{"id":"n2139832675","loc":[-85.6327356,41.944757],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832677":{"id":"n2139832677","loc":[-85.6325433,41.9448599],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832680":{"id":"n2139832680","loc":[-85.6328885,41.9455614],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832682":{"id":"n2139832682","loc":[-85.6320913,41.9449492],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832684":{"id":"n2139832684","loc":[-85.6325366,41.9447133],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832688":{"id":"n2139832688","loc":[-85.6322786,41.94485],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:49Z","tags":{}},"n2139832718":{"id":"n2139832718","loc":[-85.6327486,41.9432475],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832719":{"id":"n2139832719","loc":[-85.6327926,41.9431773],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832720":{"id":"n2139832720","loc":[-85.6329033,41.943153],"version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{}},"n2139832727":{"id":"n2139832727","loc":[-85.6328975,41.9430783],"version":"2","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{}},"n2139844839":{"id":"n2139844839","loc":[-85.6326261,41.9432308],"version":"1","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{}},"n2189015992":{"id":"n2189015992","loc":[-85.6347706,41.9593383],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189153179":{"id":"n2189153179","loc":[-85.6340476,41.9472565],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153182":{"id":"n2189153182","loc":[-85.6342638,41.9472522],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:10Z","tags":{}},"n2189153241":{"id":"n2189153241","loc":[-85.6354184,41.9473091],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153258":{"id":"n2189153258","loc":[-85.6354611,41.9472366],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153277":{"id":"n2189153277","loc":[-85.6328948,41.9462374],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2199109755":{"id":"n2199109755","loc":[-85.6336729,41.9472417],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"w203970139":{"id":"w203970139","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824793","n2139824787","n2139824773","n2139824778","n2139824793"]},"w203970098":{"id":"w203970098","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824748","n2139824712","n2139824726","n2139824760","n2139824748"]},"w208643132":{"id":"w208643132","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153195","n2189153196","n2189153197","n2189153198","n2189153195"]},"w203970094":{"id":"w203970094","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824755","n2139824753","n2139824759","n2139824764","n2139824763","n2139824767","n2139824770","n2139824782","n2139824772","n2139824756","n2139824751","n2139824754","n2139824755"]},"w208643138":{"id":"w208643138","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153231","n2189153232","n2189153240","n2189153244","n2189153236","n2189153238","n2189153237","n2189153239","n2189153252","n2189153235","n2189153234","n2189153253","n2189153233","n2189153231"]},"w203970125":{"id":"w203970125","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824735","n2139824738","n2139824757","n2139824749","n2139824735"]},"w170848823":{"id":"w170848823","version":"2","changeset":"14893390","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:53:39Z","tags":{"name":"Rocky River","source":"Bing","waterway":"river"},"nodes":["n1819849189","n1819858516","n1819858519","n1819858504","n1819858525","n1819858506","n1819858513"]},"w203970898":{"id":"w203970898","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832645","n2139832647","n2139832649","n2139832651","n2139832645"]},"w203970134":{"id":"w203970134","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824796","n2139824803","n2139824797","n2139824788","n2139824796"]},"w203970104":{"id":"w203970104","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824733","n2139824730","n2139824714","n2139824721","n2139824733"]},"w206805245":{"id":"w206805245","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544780","n2168544781","n2139824796","n2139824803","n2168544780"]},"w206805252":{"id":"w206805252","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544838","n2168544839","n2168544840","n2168544841","n2168544842","n2168544843","n2168544844","n2168544845","n2168544846","n2168544847","n2168544838"]},"w203970099":{"id":"w203970099","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824783","n2139824795","n2139824790","n2139824779","n2139824783"]},"w17967730":{"id":"w17967730","version":"2","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:18Z","tags":{"highway":"residential","name":"Water St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Water","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185963451","n2189153277","n185988036","n185988867","n185988869","n185988871","n185988872","n185988873","n185988875","n185988877","n185988878","n185988879","n185988880","n185988882","n185988884","n185978790"]},"w208643133":{"id":"w208643133","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153199","n2189153200","n2189153201","n2189153202","n2189153199"]},"w203970127":{"id":"w203970127","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824794","n2139824783","n2139824789","n2139824797","n2139824794"]},"w208643139":{"id":"w208643139","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service"},"nodes":["n185988237","n2189153242","n2189153247","n2189153241"]},"w203988297":{"id":"w203988297","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2140006423","n2140006441","n2140006425","n2140006426","n2140006440","n2140006427","n2140006428","n2140006429","n2140006430","n2140006423"]},"w206805250":{"id":"w206805250","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544827","n2168544823","n2168544825","n2168544800","n2168544829","n2168544827"]},"w208643140":{"id":"w208643140","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153242","n2189153254","n2189153243","n2189153244","n2189153251","n2189153257","n2189153245","n2189153252","n2189153246"]},"w203974055":{"id":"w203974055","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870376","n2139870377"]},"w206805247":{"id":"w206805247","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544785","n2168544786","n2168544783","n2168544787","n2168544788","n2168544789","n2168544785"]},"w17964996":{"id":"w17964996","version":"3","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"residential","name":"Foster St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Foster","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312360","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1819858524","n1819858515","n1819858522","n1819858530","n2139832682","n1819858510","n1819858520","n1819858502","n2139832680","n185963451","n1819858527","n185963452","n185963453","n185963454","n185963455","n185963456"]},"w208643144":{"id":"w208643144","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153264","n2189153265","n2189153266","n2189153267","n2189153268","n2189153269","n2189153270","n2189153264"]},"w203970914":{"id":"w203970914","version":"2","changeset":"14892929","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:11:47Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832722","n2139832723","n2139832724","n2139832725","n2139832726","n2139832727","n2139844839","n2139832722"]},"w208643143":{"id":"w208643143","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153258","n2189153259","n2189153260","n2189153261","n2189153262","n2189153263","n2189153258"]},"w203049590":{"id":"w203049590","version":"3","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2130304152","n2130304153","n2140006403","n2130304154","n2130304156","n2130304155","n2130304160","n2130304152"]},"w203974054":{"id":"w203974054","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139858971","n2139870373","n2139870374"]},"w203049595":{"id":"w203049595","version":"2","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"service"},"nodes":["n2130304158","n2130304159","n2130304160","n2139832635","n2139832639"]},"w203970913":{"id":"w203970913","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832715","n2139832716","n2139832717","n2139832718","n2139832719","n2139832720","n2139832721","n2139832716"]},"w208643134":{"id":"w208643134","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153203","n2189153204","n2189153205","n2189153206","n2189153207","n2189153208","n2189153209","n2189153210","n2189153211","n2189153212","n2189153213","n2189153214","n2189153203"]},"w134150808":{"id":"w134150808","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:53Z","tags":{"bridge":"yes","highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988239","n185984009","n185988241","n1475284019"]},"w203970115":{"id":"w203970115","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824761","n2139824727","n2139824736","n2139824771","n2139824761"]},"w208643130":{"id":"w208643130","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153183","n2189153184","n2189153185","n2189153186","n2189153187","n2189153188","n2189153189","n2189153190","n2189153183"]},"w206805246":{"id":"w206805246","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544782","n2168544780","n2168544781","n2168544783","n2168544787","n2168544784","n2168544782"]},"w203970138":{"id":"w203970138","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824729","n2139824720","n2139824702","n2139824707","n2139824729"]},"w203970133":{"id":"w203970133","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824748","n2139824737","n2139824717","n2139824728","n2139824748"]},"w203970907":{"id":"w203970907","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832700","n2139832701","n2139832702"]},"w203974056":{"id":"w203974056","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870377","n2139870378"]},"w203970897":{"id":"w203970897","version":"2","changeset":"15117845","user":"rolandg","uid":"8703","visible":"true","timestamp":"2013-02-21T23:02:38Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2130304156","n2166205688","n2139832635","n2139832636","n2139832637","n2139832639","n2139832641","n2166205688"]},"w203974057":{"id":"w203974057","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870375","n2139870376"]},"w203049594":{"id":"w203049594","version":"3","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:03Z","tags":{"highway":"service"},"nodes":["n2130304156","n2139870378","n2139832706","n2139832704","n2130304157"]},"w203970122":{"id":"w203970122","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824757","n2139824740","n2139824747","n2139824762","n2139824757"]},"w208643136":{"id":"w208643136","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153219","n2189153220","n2189153221","n2189153222","n2189153223","n2189153224","n2189153225","n2189153226","n2189153219"]},"w203970128":{"id":"w203970128","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824732","n2139824752","n2139824744","n2139824724","n2139824732"]},"w203970097":{"id":"w203970097","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824737","n2139824733","n2139824710","n2139824716","n2139824737"]},"w203970137":{"id":"w203970137","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824765","n2139824774","n2139824758","n2139824746","n2139824765"]},"w134150840":{"id":"w134150840","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:56Z","tags":{"highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1475284019","n185988243","n185988244","n185988245"]},"w17967628":{"id":"w17967628","version":"3","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:51Z","tags":{"highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978388","n2139832709","n185988237","n185988239"]},"w203988292":{"id":"w203988292","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"bridge":"yes","highway":"footway"},"nodes":["n2140006407","n2140006405"]},"w203970118":{"id":"w203970118","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824775","n2139824785","n2139824780","n2139824768","n2139824775"]},"w203970121":{"id":"w203970121","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824768","n2139824781","n2139824776","n2139824765","n2139824768"]},"w17967752":{"id":"w17967752","version":"5","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"residential","name":"Railroad Drive","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Railroad","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185964980","n2139832699","n2139832700","n2130304158","n185988969","n185988971","n185988972","n1475284011"]},"w203970136":{"id":"w203970136","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824798","n2139824793","n2139824777","n2139824784","n2139824798"]},"w203970142":{"id":"w203970142","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824808","n2139824809","n2139824807","n2139824806","n2139824801","n2139824800","n2139824804","n2139824805","n2139824808"]},"w208643137":{"id":"w208643137","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153227","n2189153248","n2189153228","n2189153234","n2189153235","n2189153229","n2189153249","n2189153230","n2189153227"]},"w208643129":{"id":"w208643129","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153179","n2189153180","n2189153181","n2189153182","n2189153179"]},"w203970909":{"id":"w203970909","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832703","n2139832704","n2139832706","n2139832708","n2139832703"]},"w203970905":{"id":"w203970905","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832688","n2139832691"]},"w203988298":{"id":"w203988298","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"service"},"nodes":["n2140006431","n2140006433","n2140006435","n2140006436","n2140006437","n2140006438","n2140006439","n2140006440"]},"w203970106":{"id":"w203970106","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824798","n2139824791","n2139824799","n2139824802","n2139824798"]},"w203970129":{"id":"w203970129","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:06Z","tags":{"building":"yes"},"nodes":["n2139824787","n2139824782","n2139824766","n2139824769","n2139824787"]},"w208643131":{"id":"w208643131","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:14Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189153191","n2189153192","n2189153193","n2189153194","n2189153191"]},"w206805249":{"id":"w206805249","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544800","n2168544801","n2168544802","n2168544805","n2168544807","n2168544809","n2168544811","n2168544813","n2168544815","n2168544817","n2168544819","n2168544821","n2168544823","n2168544825","n2168544800"]},"w134150800":{"id":"w134150800","version":"3","changeset":"13675000","user":"NE2","uid":"207745","visible":"true","timestamp":"2012-10-29T15:08:54Z","tags":{"bridge":"yes","highway":"primary","name":"W Michigan Ave","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964972","n185964976"]},"w17966984":{"id":"w17966984","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Portage Avenue","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Portage","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978375","n185963456","n2189153218","n185966937","n185978967","n185967422","n185982193","n185968100","n185982195","n185960195","n185980735","n185978787","n185966948","n185982196","n185982197","n185982198","n185982200","n2139795768","n185972155"]},"w203988294":{"id":"w203988294","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"amenity":"shelter","area":"yes","building":"yes","shelter_type":"picnic_shelter"},"nodes":["n2140006409","n2140006411","n2140006413","n2140006415","n2140006409"]},"w203970912":{"id":"w203970912","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832711","n2139832712","n2139832713","n2139832714","n2139832711"]},"w203970119":{"id":"w203970119","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824713","n2139824705","n2139824683","n2139824689","n2139824713"]},"w203970114":{"id":"w203970114","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:05Z","tags":{"building":"yes"},"nodes":["n2139824735","n2139824750","n2139824745","n2139824732","n2139824735"]},"w208643142":{"id":"w208643142","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153254","n2189153255","n2189153256","n2189153257"]},"w206805253":{"id":"w206805253","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544848","n2168544849","n2168544850","n2168544851","n2168544852","n2168544853","n2168544854","n2168544855","n2168544848"]},"w143497377":{"id":"w143497377","version":"7","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:59Z","tags":{"highway":"primary","name":"North Main Street","old_ref":"US 131","ref":"US 131 Business","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"N","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_left_1":"49093","tiger:zip_right":"49093","tiger:zip_right_1":"49093"},"nodes":["n185962625","n185978420","n185978419","n185978417","n185978415","n185978414","n185975735","n1475293254","n185978410","n185978406","n185970515","n185978402","n185978399","n185965399","n2189015992","n185961396","n185967917","n185978394","n185971631","n185960796","n185978392","n185974583","n185978390","n185971578","n185965289","n2189153215","n185978388","n185978383","n185978381","n185978379","n185978377","n185978375","n185964982"]},"w134150811":{"id":"w134150811","version":"6","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"primary","name":"West Michigan Avenue","old_ref":"US 131","ref":"US 131 Business;M 60","tiger:cfcc":"A21","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_base_2":"US Hwy 131 (Bus)","tiger:name_direction_prefix":"W","tiger:name_type":"Ave","tiger:reviewed":"no"},"nodes":["n185964976","n2130304157","n1475284023","n2139832715","n185964980","n185964982"]},"w208643135":{"id":"w208643135","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153215","n2189153216","n2189153217","n2189153218"]},"w17967183":{"id":"w17967183","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"West","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n1475284011","n185984011","n185984013","n185984015","n2189153246","n2189153250","n185965291","n185984017","n185971580","n185984020","n185974585","n185982163","n185975064","n185971632","n185984022","n185984024","n185967918"]},"w134150778":{"id":"w134150778","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{"bridge":"yes","highway":"residential","name":"Moore St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Moore","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15328392:15312870:15312967","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988245","n1475283992","n185975911"]},"w206805248":{"id":"w206805248","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544790","n2168544791","n2168544792","n2168544793","n2168544795","n2168544797","n2168544798","n2168544799","n2168544802","n2168544801","n2168544790"]},"w203974058":{"id":"w203974058","version":"1","changeset":"14893310","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T09:47:02Z","tags":{"bridge":"yes","highway":"path","name":"Riverwalk Trail"},"nodes":["n2139870374","n2139870375"]},"w203970902":{"id":"w203970902","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service"},"nodes":["n2139832678","n2139832691","n2139832680"]},"w203988296":{"id":"w203988296","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"path"},"nodes":["n2139858967","n2140006421","n2139858935"]},"w206805251":{"id":"w206805251","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:04Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544830","n2168544831","n2168544832","n2168544833","n2168544834","n2168544835","n2168544836","n2168544837","n2168544830"]},"w203970906":{"id":"w203970906","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832693","n2139832694","n2139832696","n2139832697","n2139832698","n2139832693"]},"w203049598":{"id":"w203049598","version":"1","changeset":"14802606","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-01-27T04:50:52Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2130304162","n2130304163","n2130304164","n2130304165","n2130304162"]},"w203970911":{"id":"w203970911","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service"},"nodes":["n2139832709","n2139832714","n2139832713","n2139832710","n185988971"]},"w203970105":{"id":"w203970105","version":"1","changeset":"14892598","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:37:04Z","tags":{"building":"yes"},"nodes":["n2139824779","n2139824792","n2139824786","n2139824775","n2139824779"]},"w203988290":{"id":"w203988290","version":"1","changeset":"14895132","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T12:19:25Z","tags":{"highway":"footway"},"nodes":["n2140006403","n2140006407"]},"w203970900":{"id":"w203970900","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139832653","n2139832663","n2139832665","n2139832667","n2139832669","n2139832671","n2139832673","n2139832675","n2139832677","n2139832653"]},"w209717048":{"id":"w209717048","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109755","n2199109756","n2199109757","n2199109758","n2199109759","n2199109760","n2199109755"]},"w208643141":{"id":"w208643141","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153247","n2189153248","n2189153249","n2189153250"]},"w203970903":{"id":"w203970903","version":"1","changeset":"14892737","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T08:51:50Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2139832682","n2139832688","n2139832684","n2139832678","n2139832686"]},"n354002527":{"id":"n354002527","loc":[-85.6236039,41.9458813],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T21:20:07Z","tags":{"amenity":"school","ele":"246","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:edited":"02/21/2008","gnis:feature_id":"1624371","gnis:state_id":"26","name":"Barrows School"}},"n185963396":{"id":"n185963396","loc":[-85.627401,41.943496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185963397":{"id":"n185963397","loc":[-85.627403,41.943625],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185965101":{"id":"n185965101","loc":[-85.626409,41.943215],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185971474":{"id":"n185971474","loc":[-85.624884,41.943508],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971475":{"id":"n185971475","loc":[-85.625191,41.943509],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971482":{"id":"n185971482","loc":[-85.624882,41.94382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185983135":{"id":"n185983135","loc":[-85.624893,41.945616],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983137":{"id":"n185983137","loc":[-85.624912,41.946524],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185988027":{"id":"n185988027","loc":[-85.622721,41.946535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:30Z","tags":{}},"n185963398":{"id":"n185963398","loc":[-85.6273993,41.9446899],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185983238":{"id":"n185983238","loc":[-85.6227157,41.9456321],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185980374":{"id":"n185980374","loc":[-85.6248856,41.9447242],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185980373":{"id":"n185980373","loc":[-85.6226744,41.9447371],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n2196831342":{"id":"n2196831342","loc":[-85.6250924,41.945063],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831343":{"id":"n2196831343","loc":[-85.6252335,41.9450636],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831344":{"id":"n2196831344","loc":[-85.6252286,41.9448707],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831345":{"id":"n2196831345","loc":[-85.6250661,41.9448707],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831346":{"id":"n2196831346","loc":[-85.6250243,41.9449012],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831347":{"id":"n2196831347","loc":[-85.6250251,41.9449244],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831348":{"id":"n2196831348","loc":[-85.6250867,41.9449257],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831349":{"id":"n2196831349","loc":[-85.625349,41.9445058],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831350":{"id":"n2196831350","loc":[-85.6253471,41.9443882],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831351":{"id":"n2196831351","loc":[-85.6251516,41.94439],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831352":{"id":"n2196831352","loc":[-85.6251522,41.9444308],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831353":{"id":"n2196831353","loc":[-85.6251344,41.9444309],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831354":{"id":"n2196831354","loc":[-85.6251356,41.9445077],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831355":{"id":"n2196831355","loc":[-85.6232357,41.9463406],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:39Z","tags":{}},"n2196831356":{"id":"n2196831356","loc":[-85.6232409,41.9460668],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831357":{"id":"n2196831357","loc":[-85.6232072,41.9460665],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831358":{"id":"n2196831358","loc":[-85.6232117,41.9458272],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831359":{"id":"n2196831359","loc":[-85.6229808,41.9458248],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831360":{"id":"n2196831360","loc":[-85.6229763,41.9460627],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831361":{"id":"n2196831361","loc":[-85.623006,41.946063],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831362":{"id":"n2196831362","loc":[-85.6230023,41.9462557],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831363":{"id":"n2196831363","loc":[-85.6230755,41.9462565],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831364":{"id":"n2196831364","loc":[-85.6230739,41.9463389],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n185947349":{"id":"n185947349","loc":[-85.618327,41.945607],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947359":{"id":"n185947359","loc":[-85.615453,41.945597],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947378":{"id":"n185947378","loc":[-85.617231,41.945603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947474":{"id":"n185947474","loc":[-85.616136,41.945602],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185948972":{"id":"n185948972","loc":[-85.615273,41.945637],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:02Z","tags":{}},"n185955019":{"id":"n185955019","loc":[-85.620172,41.945627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185960682":{"id":"n185960682","loc":[-85.622759,41.951845],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185961369":{"id":"n185961369","loc":[-85.622758,41.947444],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961371":{"id":"n185961371","loc":[-85.624908,41.947416],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185963392":{"id":"n185963392","loc":[-85.6270462,41.9409953],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185963393":{"id":"n185963393","loc":[-85.627295,41.941304],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:51Z","tags":{}},"n185963394":{"id":"n185963394","loc":[-85.627352,41.94148],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185963395":{"id":"n185963395","loc":[-85.62737,41.942261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:52Z","tags":{}},"n185965099":{"id":"n185965099","loc":[-85.6264,41.942263],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185965108":{"id":"n185965108","loc":[-85.622769,41.949224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185965110":{"id":"n185965110","loc":[-85.624937,41.949237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185966295":{"id":"n185966295","loc":[-85.6299942,41.9446689],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n185966342":{"id":"n185966342","loc":[-85.624873,41.942022],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185970222":{"id":"n185970222","loc":[-85.622761,41.948357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:17Z","tags":{}},"n185970224":{"id":"n185970224","loc":[-85.624924,41.9483338],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185971477":{"id":"n185971477","loc":[-85.620051,41.94383],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971478":{"id":"n185971478","loc":[-85.621219,41.943801],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185971481":{"id":"n185971481","loc":[-85.621812,41.943807],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:03Z","tags":{}},"n185973866":{"id":"n185973866","loc":[-85.627629,41.946498],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185974699":{"id":"n185974699","loc":[-85.6227688,41.950119],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185978800":{"id":"n185978800","loc":[-85.623953,41.954684],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185980372":{"id":"n185980372","loc":[-85.621459,41.944756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:37Z","tags":{}},"n185980378":{"id":"n185980378","loc":[-85.6286375,41.9446764],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980380":{"id":"n185980380","loc":[-85.630139,41.944661],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980382":{"id":"n185980382","loc":[-85.630298,41.944635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980384":{"id":"n185980384","loc":[-85.630759,41.94454],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980386":{"id":"n185980386","loc":[-85.6312369,41.9444548],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185983133":{"id":"n185983133","loc":[-85.6248672,41.9415903],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185983139":{"id":"n185983139","loc":[-85.624951,41.950239],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983140":{"id":"n185983140","loc":[-85.624934,41.950681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:01Z","tags":{}},"n185983141":{"id":"n185983141","loc":[-85.624813,41.950983],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:02Z","tags":{}},"n185983143":{"id":"n185983143","loc":[-85.6246225,41.951591],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983144":{"id":"n185983144","loc":[-85.623908,41.9539165],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983145":{"id":"n185983145","loc":[-85.6238903,41.9540956],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{}},"n185983146":{"id":"n185983146","loc":[-85.623898,41.95431],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:02Z","tags":{}},"n185983236":{"id":"n185983236","loc":[-85.628481,41.945611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:05Z","tags":{}},"n185985914":{"id":"n185985914","loc":[-85.620072,41.946538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185986812":{"id":"n185986812","loc":[-85.6227785,41.9510005],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n185988028":{"id":"n185988028","loc":[-85.6281401,41.9469632],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988030":{"id":"n185988030","loc":[-85.6282451,41.9470314],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988032":{"id":"n185988032","loc":[-85.6283312,41.9470656],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"w17964989":{"id":"w17964989","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:33:37Z","tags":{"highway":"residential","name":"Middle St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Middle","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312433:15328741:15312403:15312465","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185963392","n185963393","n185963394","n185963395","n185963396","n185963397","n185963398"]},"w17965158":{"id":"w17965158","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:55Z","tags":{"access":"private","highway":"service","name":"Battle St","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Battle","tiger:name_type":"St","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313281","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965099","n185965101"]},"w41074896":{"id":"w41074896","version":"4","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980372","n185980373","n185980374","n185963398","n185980378","n185966295","n185980380","n185980382","n185980384","n185980386"]},"w17965846":{"id":"w17965846","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:12Z","tags":{"highway":"residential","name":"2nd Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"2nd","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313726","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971477","n185971478","n185971481","n185971482"]},"w209470306":{"id":"w209470306","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831349","n2196831350","n2196831351","n2196831352","n2196831353","n2196831354","n2196831349"]},"w17965845":{"id":"w17965845","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:12Z","tags":{"highway":"residential","name":"2nd Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"2nd","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335065","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971474","n185971475","n185963396"]},"w209470307":{"id":"w209470307","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831355","n2196831356","n2196831357","n2196831358","n2196831359","n2196831360","n2196831361","n2196831362","n2196831363","n2196831364","n2196831355"]},"w17968192":{"id":"w17968192","version":"2","changeset":"15473162","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:43:17Z","tags":{"highway":"residential","name":"Washington St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Washington","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980373","n185983238","n185988027","n185961369","n185970222","n185965108","n185974699","n185986812","n185960682"]},"w17967603":{"id":"w17967603","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:23Z","tags":{"highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185985914","n185988027","n185983137","n185973866","n185988028","n185988030","n185988032"]},"w209470305":{"id":"w209470305","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831342","n2196831343","n2196831344","n2196831345","n2196831346","n2196831347","n2196831348","n2196831342"]},"w17967092":{"id":"w17967092","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:18Z","tags":{"highway":"residential","name":"Wood St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wood","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313653:15313659:15313679:15314060","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185983133","n185966342","n185971474","n185971482","n185980374","n185983135","n185983137","n185961371","n185970224","n185965110","n185983139","n185983140","n185983141","n185983143","n185983144","n185983145","n185983146","n185978800"]},"w17967107":{"id":"w17967107","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:49:23Z","tags":{"highway":"residential","name":"4th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"4th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314053:15314054:15313697:15313698:15313700:15313701:15313699:15314427","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185983236","n185983135","n185983238","n185955019","n185947349","n185947378","n185947474","n185947359","n185948972"]},"n354030330":{"id":"n354030330","loc":[-85.6297222,41.9444444],"version":"1","changeset":"698464","user":"iandees","uid":"4732","visible":"true","timestamp":"2009-02-28T22:10:58Z","tags":{"ele":"243","gnis:county_id":"149","gnis:created":"03/21/2008","gnis:feature_id":"2401246","gnis:state_id":"26","leisure":"park","name":"Scouter Park"}},"n185966296":{"id":"n185966296","loc":[-85.629998,41.944078],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966298":{"id":"n185966298","loc":[-85.629972,41.943927],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966300":{"id":"n185966300","loc":[-85.629948,41.943783],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185980391":{"id":"n185980391","loc":[-85.6322992,41.9442766],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980393":{"id":"n185980393","loc":[-85.6324925,41.9442136],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980389":{"id":"n185980389","loc":[-85.6320272,41.9443281],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185980388":{"id":"n185980388","loc":[-85.6315778,41.9443959],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n354031320":{"id":"n354031320","loc":[-85.6280556,41.9447222],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:21Z","tags":{"amenity":"place_of_worship","ele":"245","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417881","gnis:state_id":"26","name":"Riverside Church","religion":"christian"}},"n185987309":{"id":"n185987309","loc":[-85.6286497,41.9453531],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185987311":{"id":"n185987311","loc":[-85.6285942,41.9454805],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185988034":{"id":"n185988034","loc":[-85.6285815,41.9471692],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185988896":{"id":"n185988896","loc":[-85.6318433,41.9437929],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185977764":{"id":"n185977764","loc":[-85.6322988,41.943472],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819848852":{"id":"n1819848852","loc":[-85.6315188,41.9448808],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848912":{"id":"n1819848912","loc":[-85.6284289,41.9472189],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848925":{"id":"n1819848925","loc":[-85.6314501,41.9451617],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848949":{"id":"n1819848949","loc":[-85.6309394,41.9455192],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848951":{"id":"n1819848951","loc":[-85.6290297,41.9457187],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848963":{"id":"n1819848963","loc":[-85.630521,41.9455591],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848981":{"id":"n1819848981","loc":[-85.6292936,41.9455846],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848989":{"id":"n1819848989","loc":[-85.6298451,41.9455431],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819848998":{"id":"n1819848998","loc":[-85.6314973,41.9446254],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849018":{"id":"n1819849018","loc":[-85.6302807,41.9455527],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849043":{"id":"n1819849043","loc":[-85.6285533,41.9469731],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849087":{"id":"n1819849087","loc":[-85.6314501,41.9453532],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849090":{"id":"n1819849090","loc":[-85.628843,41.9461033],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849109":{"id":"n1819849109","loc":[-85.6311926,41.9454729],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849116":{"id":"n1819849116","loc":[-85.6288967,41.9459437],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849177":{"id":"n1819849177","loc":[-85.6287894,41.9464544],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819858529":{"id":"n1819858529","loc":[-85.6325485,41.9445625],"version":"1","changeset":"12170230","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:56:55Z","tags":{}},"n2189112797":{"id":"n2189112797","loc":[-85.6275271,41.944555],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112798":{"id":"n2189112798","loc":[-85.6275196,41.9437258],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112799":{"id":"n2189112799","loc":[-85.6278937,41.943723],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112800":{"id":"n2189112800","loc":[-85.6278969,41.9439191],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112801":{"id":"n2189112801","loc":[-85.6279907,41.9439345],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112802":{"id":"n2189112802","loc":[-85.6280817,41.9439663],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112803":{"id":"n2189112803","loc":[-85.6281768,41.9440145],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112804":{"id":"n2189112804","loc":[-85.6281933,41.9440483],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112805":{"id":"n2189112805","loc":[-85.6281671,41.9440535],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112806":{"id":"n2189112806","loc":[-85.6281933,41.9440935],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112807":{"id":"n2189112807","loc":[-85.6282126,41.9441437],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112808":{"id":"n2189112808","loc":[-85.628214,41.9441991],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112809":{"id":"n2189112809","loc":[-85.6283298,41.944196],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112810":{"id":"n2189112810","loc":[-85.6283285,41.9442616],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112811":{"id":"n2189112811","loc":[-85.6281727,41.9442616],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112812":{"id":"n2189112812","loc":[-85.6281713,41.9442934],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112813":{"id":"n2189112813","loc":[-85.6280386,41.9442963],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112814":{"id":"n2189112814","loc":[-85.6280405,41.9443292],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112815":{"id":"n2189112815","loc":[-85.627829,41.9443349],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189112816":{"id":"n2189112816","loc":[-85.6278347,41.9445495],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:16Z","tags":{}},"n2189153271":{"id":"n2189153271","loc":[-85.6321053,41.9460342],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153272":{"id":"n2189153272","loc":[-85.632278,41.9457841],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153273":{"id":"n2189153273","loc":[-85.632823,41.9459936],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153274":{"id":"n2189153274","loc":[-85.6326845,41.9461963],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:11Z","tags":{}},"n2189153275":{"id":"n2189153275","loc":[-85.6325664,41.9461507],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153276":{"id":"n2189153276","loc":[-85.6325323,41.946198],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153278":{"id":"n2189153278","loc":[-85.6321916,41.9459733],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153279":{"id":"n2189153279","loc":[-85.6322598,41.9458703],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153280":{"id":"n2189153280","loc":[-85.6327208,41.9460358],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n2189153281":{"id":"n2189153281","loc":[-85.6326413,41.9461422],"version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:12Z","tags":{}},"n185959079":{"id":"n185959079","loc":[-85.6293702,41.9474668],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185966301":{"id":"n185966301","loc":[-85.629692,41.943136],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966304":{"id":"n185966304","loc":[-85.629565,41.942916],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966308":{"id":"n185966308","loc":[-85.629501,41.942751],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966315":{"id":"n185966315","loc":[-85.629472,41.942578],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966319":{"id":"n185966319","loc":[-85.629444,41.942414],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966321":{"id":"n185966321","loc":[-85.629391,41.94205],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966323":{"id":"n185966323","loc":[-85.629369,41.941858],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966327":{"id":"n185966327","loc":[-85.629297,41.941604],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966331":{"id":"n185966331","loc":[-85.629233,41.941549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966336":{"id":"n185966336","loc":[-85.628504,41.941364],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966338":{"id":"n185966338","loc":[-85.628275,41.941303],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966340":{"id":"n185966340","loc":[-85.6269038,41.9410983],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n185973867":{"id":"n185973867","loc":[-85.626843,41.947333],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185977762":{"id":"n185977762","loc":[-85.6318441,41.9429453],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819848853":{"id":"n1819848853","loc":[-85.625854,41.9492218],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848861":{"id":"n1819848861","loc":[-85.6251459,41.9552376],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848874":{"id":"n1819848874","loc":[-85.6267445,41.9482961],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848882":{"id":"n1819848882","loc":[-85.6257209,41.9552396],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848883":{"id":"n1819848883","loc":[-85.624706,41.9523173],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848907":{"id":"n1819848907","loc":[-85.62609,41.9561471],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848908":{"id":"n1819848908","loc":[-85.6244013,41.9549284],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848911":{"id":"n1819848911","loc":[-85.6265578,41.9553672],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848923":{"id":"n1819848923","loc":[-85.6246802,41.9550959],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848936":{"id":"n1819848936","loc":[-85.6241588,41.9539291],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848940":{"id":"n1819848940","loc":[-85.62506,41.9511129],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848944":{"id":"n1819848944","loc":[-85.624942,41.9515912],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848950":{"id":"n1819848950","loc":[-85.6273989,41.9475461],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848957":{"id":"n1819848957","loc":[-85.627695,41.947404],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819849009":{"id":"n1819849009","loc":[-85.6259248,41.94896],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849037":{"id":"n1819849037","loc":[-85.6257252,41.9502112],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849061":{"id":"n1819849061","loc":[-85.6270084,41.9479626],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849073":{"id":"n1819849073","loc":[-85.6243734,41.9534583],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849091":{"id":"n1819849091","loc":[-85.6241373,41.9543918],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n1819849130":{"id":"n1819849130","loc":[-85.6282572,41.9473067],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849143":{"id":"n1819849143","loc":[-85.625281,41.9506596],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819849153":{"id":"n1819849153","loc":[-85.6258647,41.9498043],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849168":{"id":"n1819849168","loc":[-85.6265084,41.9559317],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849173":{"id":"n1819849173","loc":[-85.6263325,41.9552156],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849175":{"id":"n1819849175","loc":[-85.6266372,41.9556764],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:58Z","tags":{}},"n1819849178":{"id":"n1819849178","loc":[-85.6242232,41.9545993],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849181":{"id":"n1819849181","loc":[-85.6262187,41.9486712],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849188":{"id":"n1819849188","loc":[-85.6245558,41.9530434],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849190":{"id":"n1819849190","loc":[-85.6255982,41.9563017],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n2168544738":{"id":"n2168544738","loc":[-85.6245707,41.9529711],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"w208643145":{"id":"w208643145","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:15Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189153271","n2189153272","n2189153273","n2189153274","n2189153275","n2189153276","n2189153271"]},"w17967561":{"id":"w17967561","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:21Z","tags":{"highway":"residential","name":"Garden St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Garden","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312361:15322884:15322885","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980378","n185987309","n185987311","n185983236","n185973866"]},"w134150802":{"id":"w134150802","version":"2","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"bridge":"yes","highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980386","n185980388"]},"w208639462":{"id":"w208639462","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112797","n2189112798","n2189112799","n2189112800","n2189112801","n2189112802","n2189112803","n2189112804","n2189112805","n2189112806","n2189112807","n2189112808","n2189112809","n2189112810","n2189112811","n2189112812","n2189112813","n2189112814","n2189112815","n2189112816","n2189112797"]},"w134150830":{"id":"w134150830","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"bridge":"yes","highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977762","n185977764"]},"w134150801":{"id":"w134150801","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977764","n185964982"]},"w208643146":{"id":"w208643146","version":"1","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:16Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2189153277","n2189153281","n2189153278","n2189153279","n2189153280","n2189153281"]},"w17966061":{"id":"w17966061","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:42:00Z","tags":{"highway":"residential","name":"John Glenn Ct","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"John Glenn","tiger:name_type":"Ct","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313190","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185973866","n185973867"]},"w134150772":{"id":"w134150772","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{"highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988034","n185959079","n185988036","n185978967"]},"w134150836":{"id":"w134150836","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:11:58Z","tags":{"highway":"secondary","name":"East Michigan Avenue","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980388","n1819858524","n185980389","n185980391","n185980393","n185964982"]},"w17967734":{"id":"w17967734","version":"3","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"residential","name":"Water Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Water","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988896","n185980391","n1819858529"]},"w17965305":{"id":"w17965305","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:57Z","tags":{"highway":"residential","name":"River Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312440:15338837","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966295","n185966296","n185966298","n185966300","n185966301","n185966304","n185966308","n185966315","n185966319","n185966321","n185966323","n185966327","n185966331","n185966336","n185966338","n185963392","n185966340","n185966342"]},"w134150826":{"id":"w134150826","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:55Z","tags":{"bridge":"yes","highway":"residential","name":"5th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312324:15312811:15314055:15314056:15313692:15328995:15313188","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185988032","n185988034"]},"w170848330":{"id":"w170848330","version":"3","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:50Z","tags":{"name":"Portage River","source":"Bing","waterway":"river"},"nodes":["n1819849190","n1819848907","n1819849168","n1819849175","n1819848911","n1819849173","n1819848882","n1819848861","n1819848923","n1819848908","n1819849178","n1819849091","n1819848936","n1819849073","n1819849188","n2168544738","n1819848883","n1819848944","n1819848940","n1819849143","n1819849037","n1819849153","n1819848853","n1819849009","n1819849181","n1819848874","n1819849061","n1819848950","n1819848957","n1819849130","n1819848912","n1819849043","n1819849177","n1819849090","n1819849116","n1819848951","n1819848981","n1819848989","n1819849018","n1819848963","n1819848949","n1819849109","n1819849087","n1819848925","n1819848852","n1819848998","n1819849057"]},"r270264":{"id":"r270264","version":"8","changeset":"13611326","user":"migurski","uid":"8287","visible":"true","timestamp":"2012-10-23T23:35:16Z","tags":{"network":"US:MI","ref":"86","route":"road","state_id":"MI","type":"route","url":"http://en.wikipedia.org/wiki/M-86_%28Michigan_highway%29"},"members":[{"id":"w17737723","type":"way","role":""},{"id":"w17735949","type":"way","role":""},{"id":"w17740404","type":"way","role":""},{"id":"w17966273","type":"way","role":""},{"id":"w17964745","type":"way","role":""},{"id":"w151538068","type":"way","role":""},{"id":"w151538067","type":"way","role":""},{"id":"w17964960","type":"way","role":""},{"id":"w17966099","type":"way","role":""},{"id":"w17968009","type":"way","role":""},{"id":"w41259499","type":"way","role":""},{"id":"w151540401","type":"way","role":""},{"id":"w151540418","type":"way","role":""},{"id":"w17967997","type":"way","role":""},{"id":"w17966029","type":"way","role":""},{"id":"w17964801","type":"way","role":""},{"id":"w41259496","type":"way","role":""},{"id":"w151540399","type":"way","role":""},{"id":"w17968004","type":"way","role":""},{"id":"w17966462","type":"way","role":""},{"id":"w134150830","type":"way","role":""},{"id":"w134150801","type":"way","role":""},{"id":"w17732295","type":"way","role":""}]},"n185980093":{"id":"n185980093","loc":[-85.6271414,41.9407274],"version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964330":{"id":"n185964330","loc":[-85.6235688,41.9399111],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964328":{"id":"n185964328","loc":[-85.6235609,41.9391301],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185958034":{"id":"n185958034","loc":[-85.627102,41.939125],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185964331":{"id":"n185964331","loc":[-85.623571,41.940124],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964329":{"id":"n185964329","loc":[-85.623562,41.9392411],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185972756":{"id":"n185972756","loc":[-85.623802,41.939102],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185972757":{"id":"n185972757","loc":[-85.623584,41.93913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185975325":{"id":"n185975325","loc":[-85.624835,41.939318],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975326":{"id":"n185975326","loc":[-85.624811,41.939435],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975327":{"id":"n185975327","loc":[-85.624635,41.939703],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975328":{"id":"n185975328","loc":[-85.624366,41.940055],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975330":{"id":"n185975330","loc":[-85.624287,41.940113],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975332":{"id":"n185975332","loc":[-85.624215,41.940134],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185980088":{"id":"n185980088","loc":[-85.627127,41.940086],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185988943":{"id":"n185988943","loc":[-85.622643,41.940128],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:15Z","tags":{}},"n185988961":{"id":"n185988961","loc":[-85.627263,41.940082],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185990192":{"id":"n185990192","loc":[-85.622933,41.939224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990194":{"id":"n185990194","loc":[-85.621976,41.939203],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185991378":{"id":"n185991378","loc":[-85.622643,41.940635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:15:34Z","tags":{}},"n1475283999":{"id":"n1475283999","loc":[-85.6271165,41.9408429],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n185980090":{"id":"n185980090","loc":[-85.6271315,41.9402001],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:59Z","tags":{}},"n185958036":{"id":"n185958036","loc":[-85.6248366,41.9391615],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n1819800188":{"id":"n1819800188","loc":[-85.6246947,41.9401644],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800199":{"id":"n1819800199","loc":[-85.6233686,41.9430896],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800204":{"id":"n1819800204","loc":[-85.6223236,41.9408587],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800213":{"id":"n1819800213","loc":[-85.6247526,41.9414138],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800216":{"id":"n1819800216","loc":[-85.6230961,41.9407151],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800218":{"id":"n1819800218","loc":[-85.621991,41.9429336],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800221":{"id":"n1819800221","loc":[-85.6246088,41.9424708],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800227":{"id":"n1819800227","loc":[-85.6241368,41.9403081],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800230":{"id":"n1819800230","loc":[-85.6226776,41.9431012],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800231":{"id":"n1819800231","loc":[-85.6243728,41.9401644],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800232":{"id":"n1819800232","loc":[-85.6249629,41.9408907],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800248":{"id":"n1819800248","loc":[-85.6238685,41.9405555],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800266":{"id":"n1819800266","loc":[-85.6246882,41.9418367],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800271":{"id":"n1819800271","loc":[-85.62492,41.9413695],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800294":{"id":"n1819800294","loc":[-85.6243556,41.9427465],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800304":{"id":"n1819800304","loc":[-85.6251453,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800325":{"id":"n1819800325","loc":[-85.6248234,41.9405714],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800362":{"id":"n1819800362","loc":[-85.6239544,41.9429416],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800368":{"id":"n1819800368","loc":[-85.6243406,41.9402283],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800375":{"id":"n1819800375","loc":[-85.6226562,41.940755],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800377":{"id":"n1819800377","loc":[-85.6232033,41.9406512],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n185945133":{"id":"n185945133","loc":[-85.623501,41.933232],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945135":{"id":"n185945135","loc":[-85.624776,41.933205],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945395":{"id":"n185945395","loc":[-85.624741,41.93019],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:30Z","tags":{}},"n185952239":{"id":"n185952239","loc":[-85.615166,41.9382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:12Z","tags":{}},"n185954490":{"id":"n185954490","loc":[-85.624721,41.929278],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:27Z","tags":{}},"n185957831":{"id":"n185957831","loc":[-85.625041,41.938662],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:57:55Z","tags":{}},"n185958030":{"id":"n185958030","loc":[-85.629033,41.93913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185958032":{"id":"n185958032","loc":[-85.628429,41.939143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:00Z","tags":{}},"n185958498":{"id":"n185958498","loc":[-85.621605,41.940143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:27Z","tags":{}},"n185961186":{"id":"n185961186","loc":[-85.624792,41.935214],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:34Z","tags":{}},"n185963099":{"id":"n185963099","loc":[-85.6204461,41.9401485],"version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{}},"n185963698":{"id":"n185963698","loc":[-85.6297342,41.9400783],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185964320":{"id":"n185964320","loc":[-85.623511,41.934216],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964322":{"id":"n185964322","loc":[-85.6235312,41.9362084],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964324":{"id":"n185964324","loc":[-85.6235488,41.9371726],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185964326":{"id":"n185964326","loc":[-85.6235512,41.9381718],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185967077":{"id":"n185967077","loc":[-85.617359,41.940161],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:54Z","tags":{}},"n185967634":{"id":"n185967634","loc":[-85.6248039,41.9362012],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185970833":{"id":"n185970833","loc":[-85.6248019,41.9381684],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185972752":{"id":"n185972752","loc":[-85.624582,41.938848],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185972754":{"id":"n185972754","loc":[-85.6242,41.939008],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:35Z","tags":{}},"n185973251":{"id":"n185973251","loc":[-85.602727,41.936012],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:49Z","tags":{}},"n185974509":{"id":"n185974509","loc":[-85.62478,41.93217],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:19Z","tags":{}},"n185975315":{"id":"n185975315","loc":[-85.624703,41.925597],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:56Z","tags":{}},"n185975316":{"id":"n185975316","loc":[-85.624716,41.927359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975317":{"id":"n185975317","loc":[-85.62475,41.93119],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975318":{"id":"n185975318","loc":[-85.624782,41.934218],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:57Z","tags":{}},"n185975320":{"id":"n185975320","loc":[-85.6247949,41.9371708],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:58Z","tags":{}},"n185977754":{"id":"n185977754","loc":[-85.6276,41.937412],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185980075":{"id":"n185980075","loc":[-85.627451,41.937549],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980077":{"id":"n185980077","loc":[-85.627375,41.937618],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980078":{"id":"n185980078","loc":[-85.627278,41.937728],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980079":{"id":"n185980079","loc":[-85.627199,41.937842],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980081":{"id":"n185980081","loc":[-85.627141,41.937981],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980083":{"id":"n185980083","loc":[-85.627109,41.938153],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185980085":{"id":"n185980085","loc":[-85.627101,41.938699],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:28Z","tags":{}},"n185981173":{"id":"n185981173","loc":[-85.61433,41.940167],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:10:02Z","tags":{}},"n185987021":{"id":"n185987021","loc":[-85.628311,41.942261],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:07Z","tags":{}},"n185988963":{"id":"n185988963","loc":[-85.628439,41.940086],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:16Z","tags":{}},"n185990195":{"id":"n185990195","loc":[-85.621225,41.939143],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990196":{"id":"n185990196","loc":[-85.620576,41.939033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990198":{"id":"n185990198","loc":[-85.619081,41.938804],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990200":{"id":"n185990200","loc":[-85.617593,41.938552],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990202":{"id":"n185990202","loc":[-85.617372,41.938535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990204":{"id":"n185990204","loc":[-85.616087,41.93832],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:56Z","tags":{}},"n185990206":{"id":"n185990206","loc":[-85.615754,41.938289],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990209":{"id":"n185990209","loc":[-85.615438,41.938251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990211":{"id":"n185990211","loc":[-85.613469,41.937867],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990212":{"id":"n185990212","loc":[-85.610172,41.937298],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990213":{"id":"n185990213","loc":[-85.605537,41.936497],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n185990214":{"id":"n185990214","loc":[-85.604014,41.936234],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:57Z","tags":{}},"n1819800180":{"id":"n1819800180","loc":[-85.588775,41.9455032],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800181":{"id":"n1819800181","loc":[-85.6074212,41.9408827],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800182":{"id":"n1819800182","loc":[-85.6131397,41.9427022],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800183":{"id":"n1819800183","loc":[-85.6171523,41.9416807],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800184":{"id":"n1819800184","loc":[-85.602465,41.9397415],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800185":{"id":"n1819800185","loc":[-85.6109296,41.9410583],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800186":{"id":"n1819800186","loc":[-85.6165729,41.9418004],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800189":{"id":"n1819800189","loc":[-85.5866293,41.9458224],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800191":{"id":"n1819800191","loc":[-85.5853311,41.9466603],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:21Z","tags":{}},"n1819800201":{"id":"n1819800201","loc":[-85.6101142,41.9433406],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800202":{"id":"n1819800202","loc":[-85.600963,41.9428618],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800206":{"id":"n1819800206","loc":[-85.6154357,41.9427501],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800207":{"id":"n1819800207","loc":[-85.6040309,41.9414094],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800209":{"id":"n1819800209","loc":[-85.6113694,41.943189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800211":{"id":"n1819800211","loc":[-85.618032,41.9416408],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800214":{"id":"n1819800214","loc":[-85.5959419,41.9402602],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800219":{"id":"n1819800219","loc":[-85.5972117,41.9420043],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800223":{"id":"n1819800223","loc":[-85.6117171,41.9430019],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800224":{"id":"n1819800224","loc":[-85.5977873,41.9395579],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800226":{"id":"n1819800226","loc":[-85.5917362,41.9432209],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800228":{"id":"n1819800228","loc":[-85.6055759,41.9419122],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800229":{"id":"n1819800229","loc":[-85.6203395,41.9425595],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n1819800233":{"id":"n1819800233","loc":[-85.6107579,41.9433007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800234":{"id":"n1819800234","loc":[-85.6039773,41.9412498],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800235":{"id":"n1819800235","loc":[-85.6000977,41.9412861],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800236":{"id":"n1819800236","loc":[-85.6026689,41.9407231],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:22Z","tags":{}},"n1819800237":{"id":"n1819800237","loc":[-85.615161,41.9428662],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800238":{"id":"n1819800238","loc":[-85.5878953,41.9454314],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800239":{"id":"n1819800239","loc":[-85.6035267,41.941569],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800240":{"id":"n1819800240","loc":[-85.5929738,41.9450208],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800241":{"id":"n1819800241","loc":[-85.6186329,41.9416488],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800242":{"id":"n1819800242","loc":[-85.5881136,41.9483963],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800243":{"id":"n1819800243","loc":[-85.5909208,41.9466922],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800244":{"id":"n1819800244","loc":[-85.5997721,41.9394941],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800245":{"id":"n1819800245","loc":[-85.6202064,41.9425712],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n1819800246":{"id":"n1819800246","loc":[-85.591071,41.9448808],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800247":{"id":"n1819800247","loc":[-85.5866078,41.9490622],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800250":{"id":"n1819800250","loc":[-85.602383,41.9420841],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800251":{"id":"n1819800251","loc":[-85.5957418,41.9426906],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800255":{"id":"n1819800255","loc":[-85.6157039,41.9416727],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800256":{"id":"n1819800256","loc":[-85.6080328,41.9410982],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800258":{"id":"n1819800258","loc":[-85.6192551,41.9414892],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800260":{"id":"n1819800260","loc":[-85.6104253,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800261":{"id":"n1819800261","loc":[-85.6204503,41.9425709],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800263":{"id":"n1819800263","loc":[-85.5872194,41.9455431],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800264":{"id":"n1819800264","loc":[-85.616176,41.9418244],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800268":{"id":"n1819800268","loc":[-85.6120883,41.9426703],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800269":{"id":"n1819800269","loc":[-85.5894547,41.9474946],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800272":{"id":"n1819800272","loc":[-85.6209181,41.9425027],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800274":{"id":"n1819800274","loc":[-85.6122814,41.9412817],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800276":{"id":"n1819800276","loc":[-85.5895153,41.9452798],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800277":{"id":"n1819800277","loc":[-85.5884317,41.9455272],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800279":{"id":"n1819800279","loc":[-85.5884103,41.9480966],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n1819800287":{"id":"n1819800287","loc":[-85.5904917,41.9453915],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800288":{"id":"n1819800288","loc":[-85.6212292,41.9412977],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800289":{"id":"n1819800289","loc":[-85.5954377,41.9406832],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800290":{"id":"n1819800290","loc":[-85.593721,41.9420957],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800291":{"id":"n1819800291","loc":[-85.6162832,41.9427102],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800292":{"id":"n1819800292","loc":[-85.605018,41.9401804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800293":{"id":"n1819800293","loc":[-85.6086443,41.941146],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800296":{"id":"n1819800296","loc":[-85.6204675,41.9413775],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800297":{"id":"n1819800297","loc":[-85.612496,41.9424947],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800299":{"id":"n1819800299","loc":[-85.6065629,41.9423431],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800301":{"id":"n1819800301","loc":[-85.6036125,41.9398452],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800303":{"id":"n1819800303","loc":[-85.6114767,41.94117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800306":{"id":"n1819800306","loc":[-85.592616,41.9428139],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800308":{"id":"n1819800308","loc":[-85.6023041,41.9419521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800310":{"id":"n1819800310","loc":[-85.6218944,41.9411061],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800311":{"id":"n1819800311","loc":[-85.6097816,41.941162],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800312":{"id":"n1819800312","loc":[-85.5922549,41.9457869],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800313":{"id":"n1819800313","loc":[-85.5986027,41.9417206],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800314":{"id":"n1819800314","loc":[-85.5918687,41.946138],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800315":{"id":"n1819800315","loc":[-85.5872875,41.948883],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:24Z","tags":{}},"n1819800316":{"id":"n1819800316","loc":[-85.594272,41.9436642],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800317":{"id":"n1819800317","loc":[-85.6176351,41.941577],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800318":{"id":"n1819800318","loc":[-85.6137834,41.9430853],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800319":{"id":"n1819800319","loc":[-85.6195383,41.942622],"version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"leisure":"slipway"}},"n1819800320":{"id":"n1819800320","loc":[-85.5971006,41.9398053],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800321":{"id":"n1819800321","loc":[-85.601714,41.9406752],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800322":{"id":"n1819800322","loc":[-85.5908028,41.9453117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800323":{"id":"n1819800323","loc":[-85.6062732,41.9404597],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800324":{"id":"n1819800324","loc":[-85.62124,41.9425905],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800327":{"id":"n1819800327","loc":[-85.6008664,41.942766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800328":{"id":"n1819800328","loc":[-85.6179355,41.9428538],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800330":{"id":"n1819800330","loc":[-85.6045566,41.9415131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800331":{"id":"n1819800331","loc":[-85.5944935,41.9414653],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800333":{"id":"n1819800333","loc":[-85.6088911,41.943181],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800334":{"id":"n1819800334","loc":[-85.5946367,41.943369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800336":{"id":"n1819800336","loc":[-85.6150494,41.9429656],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800343":{"id":"n1819800343","loc":[-85.6096099,41.9433326],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800345":{"id":"n1819800345","loc":[-85.5915216,41.9435401],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800347":{"id":"n1819800347","loc":[-85.607786,41.9428698],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800349":{"id":"n1819800349","loc":[-85.6187616,41.9426623],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800350":{"id":"n1819800350","loc":[-85.6012527,41.9426064],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800352":{"id":"n1819800352","loc":[-85.6214867,41.9428379],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800354":{"id":"n1819800354","loc":[-85.61338,41.94293],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800355":{"id":"n1819800355","loc":[-85.5923156,41.9428139],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800357":{"id":"n1819800357","loc":[-85.5901591,41.9453197],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800359":{"id":"n1819800359","loc":[-85.6033979,41.9408827],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800360":{"id":"n1819800360","loc":[-85.6186543,41.9414653],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800363":{"id":"n1819800363","loc":[-85.6128607,41.9425665],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800365":{"id":"n1819800365","loc":[-85.614234,41.9412977],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:25Z","tags":{}},"n1819800367":{"id":"n1819800367","loc":[-85.6089662,41.9410902],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800369":{"id":"n1819800369","loc":[-85.6197379,41.9413695],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800370":{"id":"n1819800370","loc":[-85.6037348,41.941733],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800371":{"id":"n1819800371","loc":[-85.5993467,41.9415654],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800372":{"id":"n1819800372","loc":[-85.598077,41.94196],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800373":{"id":"n1819800373","loc":[-85.5984203,41.9394781],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800374":{"id":"n1819800374","loc":[-85.6013315,41.9427066],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800376":{"id":"n1819800376","loc":[-85.5934673,41.944167],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800378":{"id":"n1819800378","loc":[-85.6011062,41.9407753],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800379":{"id":"n1819800379","loc":[-85.6150602,41.9415131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800380":{"id":"n1819800380","loc":[-85.6132148,41.9412338],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n1819800381":{"id":"n1819800381","loc":[-85.5889038,41.9453835],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{}},"n2139966621":{"id":"n2139966621","loc":[-85.6198719,41.9426184],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:17Z","tags":{}},"n2139966622":{"id":"n2139966622","loc":[-85.6197551,41.9426123],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:17Z","tags":{}},"n2139966623":{"id":"n2139966623","loc":[-85.6196467,41.9426279],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966624":{"id":"n2139966624","loc":[-85.6191519,41.9426221],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966625":{"id":"n2139966625","loc":[-85.6194153,41.9426256],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966626":{"id":"n2139966626","loc":[-85.6200497,41.9425812],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2139966629":{"id":"n2139966629","loc":[-85.6192123,41.9426229],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2203933101":{"id":"n2203933101","loc":[-85.6030009,41.9360592],"version":"1","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:36Z","tags":{}},"w17967539":{"id":"w17967539","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:52:28Z","tags":{"highway":"residential","name":"1st Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"1st","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335113:15313280","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965099","n185963395","n185987021"]},"w17967751":{"id":"w17967751","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:03Z","tags":{"highway":"residential","name":"River St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312481:15312487","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980088","n185988961","n185988963","n185963698"]},"w17965088":{"id":"w17965088","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:20Z","tags":{"highway":"residential","name":"9th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"9th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314207:15313759:15313772:15313802:15313796:15313781:15314179","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185945133","n185964320","n185964322","n185964324","n185964326","n185964328","n185964329","n185964330","n185964331"]},"w17964467":{"id":"w17964467","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:29:37Z","tags":{"highway":"residential","name":"Mechanic St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Mechanic","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312501:15312497:15335073","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958030","n185958032","n185958034","n185958036"]},"w134150842":{"id":"w134150842","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:56Z","tags":{"bridge":"yes","highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185980090","n185980093"]},"w17966740":{"id":"w17966740","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185977754","n185980075","n185980077","n185980078","n185980079","n185980081","n185980083","n185980085","n185958034","n185980088","n185980090"]},"w170844765":{"id":"w170844765","version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:26Z","tags":{"waterway":"dam"},"nodes":["n1819800304","n1819800232","n1819800325","n1819800188"]},"w17967745":{"id":"w17967745","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:21Z","tags":{"highway":"residential","name":"River St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"River","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185981173","n185967077","n185963099","n185958498","n185988943","n185964331","n185975332"]},"w17968113":{"id":"w17968113","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:56:09Z","tags":{"highway":"residential","name":"Green St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Green","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314409","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185988943","n185991378"]},"w134150833":{"id":"w134150833","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:55Z","tags":{"highway":"residential","name":"6th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312892:15312519","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185980093","n1475283999","n185963392"]},"w17967935":{"id":"w17967935","version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{"name":"Michigan Central Railroad","railway":"abandoned","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan Central Railroad","tiger:reviewed":"no"},"nodes":["n185972757","n185990192","n185990194","n185990195","n185990196","n185990198","n185990200","n185990202","n185990204","n185990206","n185990209","n185952239","n185990211","n185990212","n185990213","n185990214","n2203933101","n185973251"]},"w17965993":{"id":"w17965993","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:19Z","tags":{"name":"Conrail Railroad","railway":"abandoned","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314180:15314177","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185957831","n185972752","n185972754","n185972756","n185972757"]},"w17966211":{"id":"w17966211","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"residential","name":"8th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"8th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313757:15313771:15313791:15313794:15313799:15313811:15313814:15313824:15313846:15314618:15313817:15313788:15314178:15324590","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975315","n185975316","n185954490","n185945395","n185975317","n185974509","n185945135","n185975318","n185961186","n185967634","n185975320","n185970833","n185958036","n185975325","n185975326","n185975327","n185975328","n185975330","n185975332"]},"w170844766":{"id":"w170844766","version":"2","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"source":"Bing","waterway":"riverbank"},"nodes":["n1819800229","n1819800245","n2139966626","n2139966621","n2139966622","n2139966623","n1819800319","n2139966625","n2139966629","n2139966624","n1819800349","n1819800328","n1819800291","n1819800206","n1819800237","n1819800336","n1819800318","n1819800354","n1819800182","n1819800363","n1819800297","n1819800268","n1819800223","n1819800209","n1819800233","n1819800201","n1819800343","n1819800333","n1819800347","n1819800299","n1819800228","n1819800330","n1819800370","n1819800250","n1819800374","n1819800202","n1819800327","n1819800350","n1819800308","n1819800239","n1819800207","n1819800234","n1819800359","n1819800236","n1819800321","n1819800378","n1819800235","n1819800371","n1819800313","n1819800372","n1819800219","n1819800251","n1819800334","n1819800316","n1819800376","n1819800240","n1819800312","n1819800314","n1819800243","n1819800269","n1819800279","n1819800242","n1819800315","n1819800247","n1819800191","n1819800189","n1819800263","n1819800238","n1819800277","n1819800180","n1819800381","n1819800276","n1819800357","n1819800287","n1819800322","n1819800246","n1819800345","n1819800226","n1819800355","n1819800306","n1819800290","n1819800331","n1819800289","n1819800214","n1819800320","n1819800224","n1819800373","n1819800244","n1819800184","n1819800301","n1819800292","n1819800323","n1819800181","n1819800256","n1819800293","n1819800367","n1819800311","n1819800260","n1819800185","n1819800303","n1819800274","n1819800380","n1819800365","n1819800379","n1819800255","n1819800264","n1819800186","n1819800183","n1819800317","n1819800211","n1819800241","n1819800360","n1819800258","n1819800369","n1819800296","n1819800288","n1819800310","n1819800204","n1819800375","n1819800216","n1819800377","n1819800248","n1819800227","n1819800368","n1819800231","n1819800188","n1819800325","n1819800232","n1819800304","n1819800271","n1819800213","n1819800266","n1819800221","n1819800294","n1819800362","n1819800199","n1819800230","n1819800218","n1819800352","n1819800324","n1819800272","n1819800261","n1819800229"]},"n1875654132":{"id":"n1875654132","loc":[-85.6297439,41.939808],"version":"1","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:36Z","tags":{}},"n1475293263":{"id":"n1475293263","loc":[-85.6296235,41.939922],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{}},"n185947850":{"id":"n185947850","loc":[-85.631594,41.942613],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:22Z","tags":{}},"n185952745":{"id":"n185952745","loc":[-85.630986,41.941786],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:25Z","tags":{}},"n185972907":{"id":"n185972907","loc":[-85.631797,41.9420055],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972911":{"id":"n185972911","loc":[-85.6309723,41.9411623],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972915":{"id":"n185972915","loc":[-85.6295971,41.939267],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n1475293223":{"id":"n1475293223","loc":[-85.6313962,41.9416114],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{"railway":"level_crossing"}},"n1475293231":{"id":"n1475293231","loc":[-85.6318779,41.9415447],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{}},"n1475293241":{"id":"n1475293241","loc":[-85.6304613,41.9405499],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293246":{"id":"n1475293246","loc":[-85.6297512,41.9395393],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{"railway":"level_crossing"}},"n1475293251":{"id":"n1475293251","loc":[-85.6316633,41.9415128],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n2139982404":{"id":"n2139982404","loc":[-85.6313283,41.9413748],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982407":{"id":"n2139982407","loc":[-85.6325545,41.9417787],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982408":{"id":"n2139982408","loc":[-85.6324499,41.9417693],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982409":{"id":"n2139982409","loc":[-85.6324753,41.9416444],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982410":{"id":"n2139982410","loc":[-85.6325814,41.9416538],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982411":{"id":"n2139982411","loc":[-85.6319572,41.9413515],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982412":{"id":"n2139982412","loc":[-85.6322925,41.941139],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982413":{"id":"n2139982413","loc":[-85.6323153,41.941153],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982414":{"id":"n2139982414","loc":[-85.6323019,41.9412617],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982415":{"id":"n2139982415","loc":[-85.6323703,41.9412667],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982416":{"id":"n2139982416","loc":[-85.6323555,41.941538],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982417":{"id":"n2139982417","loc":[-85.6321343,41.9416777],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982418":{"id":"n2139982418","loc":[-85.6319425,41.9416866],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982419":{"id":"n2139982419","loc":[-85.6320303,41.9416941],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982420":{"id":"n2139982420","loc":[-85.6321665,41.9415554],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982421":{"id":"n2139982421","loc":[-85.632412,41.9414164],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982422":{"id":"n2139982422","loc":[-85.6324801,41.9413421],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982423":{"id":"n2139982423","loc":[-85.6325023,41.9412585],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982424":{"id":"n2139982424","loc":[-85.6324532,41.9411607],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982425":{"id":"n2139982425","loc":[-85.6323502,41.941103],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982426":{"id":"n2139982426","loc":[-85.6322362,41.9411183],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982427":{"id":"n2139982427","loc":[-85.6318941,41.9413551],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982428":{"id":"n2139982428","loc":[-85.6318592,41.9414105],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982429":{"id":"n2139982429","loc":[-85.6320111,41.9415866],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982430":{"id":"n2139982430","loc":[-85.632446,41.9413792],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982431":{"id":"n2139982431","loc":[-85.6325112,41.941416],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982432":{"id":"n2139982432","loc":[-85.6325449,41.9416345],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982433":{"id":"n2139982433","loc":[-85.6326122,41.94164],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982434":{"id":"n2139982434","loc":[-85.6325954,41.9421966],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982435":{"id":"n2139982435","loc":[-85.6325655,41.9422411],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982436":{"id":"n2139982436","loc":[-85.632515,41.9422564],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982437":{"id":"n2139982437","loc":[-85.6324495,41.94223],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982438":{"id":"n2139982438","loc":[-85.6324009,41.9421743],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982439":{"id":"n2139982439","loc":[-85.6323915,41.9421145],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982440":{"id":"n2139982440","loc":[-85.6320287,41.9418585],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n2139982441":{"id":"n2139982441","loc":[-85.6318285,41.9416387],"version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{}},"n1475293258":{"id":"n1475293258","loc":[-85.6318289,41.9415077],"version":"2","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{}},"n2168544754":{"id":"n2168544754","loc":[-85.6312814,41.9431198],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544755":{"id":"n2168544755","loc":[-85.6314212,41.9430646],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544756":{"id":"n2168544756","loc":[-85.6313387,41.942949],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544757":{"id":"n2168544757","loc":[-85.6311989,41.9430041],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544758":{"id":"n2168544758","loc":[-85.6311024,41.9429313],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544759":{"id":"n2168544759","loc":[-85.6310087,41.9428087],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544760":{"id":"n2168544760","loc":[-85.6313831,41.9426504],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544761":{"id":"n2168544761","loc":[-85.6314768,41.9427729],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544762":{"id":"n2168544762","loc":[-85.6306376,41.942809],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544763":{"id":"n2168544763","loc":[-85.6307378,41.9429427],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544764":{"id":"n2168544764","loc":[-85.630841,41.9428998],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544765":{"id":"n2168544765","loc":[-85.6307408,41.9427662],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544766":{"id":"n2168544766","loc":[-85.6305404,41.9426029],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544767":{"id":"n2168544767","loc":[-85.6304976,41.9426194],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544768":{"id":"n2168544768","loc":[-85.6305673,41.9427184],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544769":{"id":"n2168544769","loc":[-85.6306164,41.9426984],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544770":{"id":"n2168544770","loc":[-85.6306418,41.9427302],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544771":{"id":"n2168544771","loc":[-85.6306861,41.9427137],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544772":{"id":"n2168544772","loc":[-85.6307146,41.9427537],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544773":{"id":"n2168544773","loc":[-85.6308999,41.9426807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544774":{"id":"n2168544774","loc":[-85.6308429,41.9426053],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544775":{"id":"n2168544775","loc":[-85.6308999,41.9425806],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544776":{"id":"n2168544776","loc":[-85.6308318,41.9424875],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544777":{"id":"n2168544777","loc":[-85.6307732,41.9425087],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544778":{"id":"n2168544778","loc":[-85.6307178,41.9424357],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2168544779":{"id":"n2168544779","loc":[-85.630485,41.942524],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:02Z","tags":{}},"n2189099387":{"id":"n2189099387","loc":[-85.631203,41.9393371],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099404":{"id":"n2189099404","loc":[-85.6301963,41.9391363],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099405":{"id":"n2189099405","loc":[-85.6304447,41.9391352],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099406":{"id":"n2189099406","loc":[-85.6304463,41.9393391],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099407":{"id":"n2189099407","loc":[-85.6308435,41.9393373],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099408":{"id":"n2189099408","loc":[-85.6308418,41.9391251],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099409":{"id":"n2189099409","loc":[-85.6310929,41.939124],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099410":{"id":"n2189099410","loc":[-85.6310946,41.9393376],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189112720":{"id":"n2189112720","loc":[-85.6314677,41.9412327],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112721":{"id":"n2189112721","loc":[-85.6313337,41.9411397],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112722":{"id":"n2189112722","loc":[-85.6320521,41.9405678],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112723":{"id":"n2189112723","loc":[-85.6321899,41.9406633],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112724":{"id":"n2189112724","loc":[-85.6313229,41.9408344],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112725":{"id":"n2189112725","loc":[-85.6311223,41.9410018],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112726":{"id":"n2189112726","loc":[-85.6313205,41.9411333],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112727":{"id":"n2189112727","loc":[-85.6315211,41.9409659],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112728":{"id":"n2189112728","loc":[-85.6311035,41.9402529],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112729":{"id":"n2189112729","loc":[-85.631226,41.9402107],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112730":{"id":"n2189112730","loc":[-85.6315966,41.9408051],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112731":{"id":"n2189112731","loc":[-85.6314741,41.9408473],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112732":{"id":"n2189112732","loc":[-85.6318114,41.940534],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112733":{"id":"n2189112733","loc":[-85.631588,41.94061],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112734":{"id":"n2189112734","loc":[-85.6314379,41.940366],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112735":{"id":"n2189112735","loc":[-85.6316613,41.94029],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112736":{"id":"n2189112736","loc":[-85.6306214,41.9400415],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112737":{"id":"n2189112737","loc":[-85.6304362,41.9397728],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112738":{"id":"n2189112738","loc":[-85.6305899,41.9397142],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112739":{"id":"n2189112739","loc":[-85.6307751,41.9399828],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112740":{"id":"n2189112740","loc":[-85.6304695,41.9401673],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112741":{"id":"n2189112741","loc":[-85.6301298,41.9396855],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112742":{"id":"n2189112742","loc":[-85.6303016,41.9396184],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112743":{"id":"n2189112743","loc":[-85.6306413,41.9401003],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112744":{"id":"n2189112744","loc":[-85.6309656,41.9406189],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112745":{"id":"n2189112745","loc":[-85.6308738,41.940493],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112746":{"id":"n2189112746","loc":[-85.6309333,41.940469],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112747":{"id":"n2189112747","loc":[-85.6307634,41.9402358],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112748":{"id":"n2189112748","loc":[-85.6308798,41.9401889],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112749":{"id":"n2189112749","loc":[-85.6311416,41.940548],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112750":{"id":"n2189112750","loc":[-85.6309577,41.9408708],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112751":{"id":"n2189112751","loc":[-85.630874,41.9407777],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112752":{"id":"n2189112752","loc":[-85.6310622,41.9406841],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112753":{"id":"n2189112753","loc":[-85.6311459,41.9407772],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112754":{"id":"n2189112754","loc":[-85.6320308,41.9405747],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112755":{"id":"n2189112755","loc":[-85.6317769,41.9401857],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112756":{"id":"n2189112756","loc":[-85.6313462,41.9401785],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:14Z","tags":{}},"n2189112757":{"id":"n2189112757","loc":[-85.6313423,41.9401199],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112758":{"id":"n2189112758","loc":[-85.6318308,41.9401184],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112759":{"id":"n2189112759","loc":[-85.6321154,41.9405433],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112760":{"id":"n2189112760","loc":[-85.6310307,41.941683],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112761":{"id":"n2189112761","loc":[-85.6309808,41.9416078],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112762":{"id":"n2189112762","loc":[-85.6312094,41.9415156],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112763":{"id":"n2189112763","loc":[-85.6312636,41.9415865],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112764":{"id":"n2189112764","loc":[-85.6309384,41.94155],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112765":{"id":"n2189112765","loc":[-85.631156,41.9414619],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112766":{"id":"n2189112766","loc":[-85.6311968,41.94152],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112767":{"id":"n2189112767","loc":[-85.6308946,41.9414851],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112768":{"id":"n2189112768","loc":[-85.6308237,41.9413888],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112769":{"id":"n2189112769","loc":[-85.6309858,41.9413228],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112770":{"id":"n2189112770","loc":[-85.6310567,41.9414192],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112771":{"id":"n2189112771","loc":[-85.6307774,41.9413276],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112772":{"id":"n2189112772","loc":[-85.6309068,41.9412735],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112773":{"id":"n2189112773","loc":[-85.6309531,41.9413347],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112774":{"id":"n2189112774","loc":[-85.6307975,41.9412466],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112775":{"id":"n2189112775","loc":[-85.6307006,41.9411699],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112776":{"id":"n2189112776","loc":[-85.6308289,41.941113],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112777":{"id":"n2189112777","loc":[-85.6308997,41.9412012],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112778":{"id":"n2189112778","loc":[-85.630765,41.9412062],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112779":{"id":"n2189112779","loc":[-85.630739,41.9412177],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112780":{"id":"n2189112780","loc":[-85.6305822,41.9410391],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112781":{"id":"n2189112781","loc":[-85.6304117,41.9408177],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112782":{"id":"n2189112782","loc":[-85.6305086,41.9407769],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112783":{"id":"n2189112783","loc":[-85.6306779,41.9410044],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112784":{"id":"n2189112784","loc":[-85.6307734,41.9421663],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112785":{"id":"n2189112785","loc":[-85.630708,41.9420741],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112786":{"id":"n2189112786","loc":[-85.630863,41.9420133],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112787":{"id":"n2189112787","loc":[-85.6309285,41.9421055],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112788":{"id":"n2189112788","loc":[-85.6307014,41.9420263],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112789":{"id":"n2189112789","loc":[-85.6306648,41.941971],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112790":{"id":"n2189112790","loc":[-85.6307927,41.9419178],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112791":{"id":"n2189112791","loc":[-85.6308366,41.9419696],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112792":{"id":"n2189112792","loc":[-85.6307574,41.9418708],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112793":{"id":"n2189112793","loc":[-85.6306288,41.9419231],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112794":{"id":"n2189112794","loc":[-85.6306943,41.9417835],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112795":{"id":"n2189112795","loc":[-85.6305344,41.9418474],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189112796":{"id":"n2189112796","loc":[-85.6305981,41.9419355],"version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:15Z","tags":{}},"n2189123410":{"id":"n2189123410","loc":[-85.6315476,41.9393801],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123412":{"id":"n2189123412","loc":[-85.6315247,41.9399188],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n2189123415":{"id":"n2189123415","loc":[-85.6316484,41.9400433],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n185945138":{"id":"n185945138","loc":[-85.627073,41.93319],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:24Z","tags":{}},"n185945142":{"id":"n185945142","loc":[-85.6296891,41.9331674],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185945401":{"id":"n185945401","loc":[-85.6269,41.930199],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:52:30Z","tags":{}},"n185945405":{"id":"n185945405","loc":[-85.6296598,41.9301676],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185956891":{"id":"n185956891","loc":[-85.6251617,41.9255049],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:00Z","tags":{}},"n185959979":{"id":"n185959979","loc":[-85.626333,41.928347],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:03Z","tags":{}},"n185959983":{"id":"n185959983","loc":[-85.6296419,41.9283288],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185961192":{"id":"n185961192","loc":[-85.627053,41.9352031],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185961200":{"id":"n185961200","loc":[-85.6297088,41.9351902],"version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185963655":{"id":"n185963655","loc":[-85.6296112,41.9273948],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:00Z","tags":{}},"n185963665":{"id":"n185963665","loc":[-85.626047,41.92737],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:01Z","tags":{}},"n185963688":{"id":"n185963688","loc":[-85.6296503,41.9292199],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963689":{"id":"n185963689","loc":[-85.6296694,41.931157],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963690":{"id":"n185963690","loc":[-85.6296791,41.9321485],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185963691":{"id":"n185963691","loc":[-85.6296991,41.9341973],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185967638":{"id":"n185967638","loc":[-85.627089,41.9361884],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185972917":{"id":"n185972917","loc":[-85.6293759,41.9388605],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185972919":{"id":"n185972919","loc":[-85.6290337,41.9380234],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:01Z","tags":{}},"n185972921":{"id":"n185972921","loc":[-85.628424,41.936212],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:40Z","tags":{}},"n185972923":{"id":"n185972923","loc":[-85.628367,41.936029],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:40Z","tags":{}},"n185974511":{"id":"n185974511","loc":[-85.627064,41.932169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:19Z","tags":{}},"n185977728":{"id":"n185977728","loc":[-85.625605,41.925842],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977729":{"id":"n185977729","loc":[-85.625685,41.926163],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977731":{"id":"n185977731","loc":[-85.6257845,41.9264872],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977733":{"id":"n185977733","loc":[-85.62663,41.929251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977734":{"id":"n185977734","loc":[-85.627008,41.930642],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977736":{"id":"n185977736","loc":[-85.627029,41.930775],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977738":{"id":"n185977738","loc":[-85.627041,41.930946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:03Z","tags":{}},"n185977739":{"id":"n185977739","loc":[-85.6270379,41.9311746],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977742":{"id":"n185977742","loc":[-85.627055,41.934206],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977744":{"id":"n185977744","loc":[-85.627084,41.936804],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977746":{"id":"n185977746","loc":[-85.627104,41.936914],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977748":{"id":"n185977748","loc":[-85.627156,41.937026],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977750":{"id":"n185977750","loc":[-85.6272406,41.9371672],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:59Z","tags":{}},"n185977752":{"id":"n185977752","loc":[-85.627317,41.93723],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977753":{"id":"n185977753","loc":[-85.627422,41.937312],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977755":{"id":"n185977755","loc":[-85.627754,41.937504],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977757":{"id":"n185977757","loc":[-85.627883,41.937623],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n185977761":{"id":"n185977761","loc":[-85.627984,41.93773],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:04Z","tags":{}},"n1475283996":{"id":"n1475283996","loc":[-85.6270514,41.9317122],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{"railway":"level_crossing"}},"n1475284004":{"id":"n1475284004","loc":[-85.6278177,41.9342117],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{"railway":"level_crossing"}},"n1475284014":{"id":"n1475284014","loc":[-85.6251877,41.9255913],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475284017":{"id":"n1475284017","loc":[-85.6274992,41.9331816],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{"railway":"level_crossing"}},"n1475284021":{"id":"n1475284021","loc":[-85.6297108,41.9353939],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{"railway":"level_crossing"}},"n1475284027":{"id":"n1475284027","loc":[-85.62811,41.935198],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:03Z","tags":{"railway":"level_crossing"}},"n1475284035":{"id":"n1475284035","loc":[-85.626888,41.9311757],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:03Z","tags":{"railway":"level_crossing"}},"n1475293245":{"id":"n1475293245","loc":[-85.6286047,41.9367881],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1875654302":{"id":"n1875654302","loc":[-85.6296367,41.927491],"version":"1","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:43Z","tags":{}},"n2189099388":{"id":"n2189099388","loc":[-85.6312007,41.9389988],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099389":{"id":"n2189099389","loc":[-85.6311003,41.9389992],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099390":{"id":"n2189099390","loc":[-85.6310988,41.9387847],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099391":{"id":"n2189099391","loc":[-85.6312165,41.9387843],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099392":{"id":"n2189099392","loc":[-85.6312152,41.9385857],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099393":{"id":"n2189099393","loc":[-85.6310877,41.9385862],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099394":{"id":"n2189099394","loc":[-85.6310858,41.9383161],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099395":{"id":"n2189099395","loc":[-85.6302002,41.9383196],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099396":{"id":"n2189099396","loc":[-85.6302011,41.9384472],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099397":{"id":"n2189099397","loc":[-85.6301018,41.9384476],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099398":{"id":"n2189099398","loc":[-85.6301025,41.9385419],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099399":{"id":"n2189099399","loc":[-85.6299275,41.9385427],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099400":{"id":"n2189099400","loc":[-85.62993,41.9388653],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099401":{"id":"n2189099401","loc":[-85.630107,41.9388645],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099402":{"id":"n2189099402","loc":[-85.6301079,41.9389908],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189099403":{"id":"n2189099403","loc":[-85.6301951,41.9389904],"version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:04Z","tags":{}},"n2189123382":{"id":"n2189123382","loc":[-85.6336279,41.9354365],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123384":{"id":"n2189123384","loc":[-85.6328492,41.9355177],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123387":{"id":"n2189123387","loc":[-85.6323762,41.9357396],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123388":{"id":"n2189123388","loc":[-85.6315174,41.9358966],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123389":{"id":"n2189123389","loc":[-85.6304331,41.936124],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123390":{"id":"n2189123390","loc":[-85.6302075,41.9364271],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123391":{"id":"n2189123391","loc":[-85.6303458,41.9367953],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123392":{"id":"n2189123392","loc":[-85.6299601,41.9369739],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123393":{"id":"n2189123393","loc":[-85.6299164,41.9374882],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123394":{"id":"n2189123394","loc":[-85.6299455,41.9378022],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123395":{"id":"n2189123395","loc":[-85.6299771,41.9379053],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123396":{"id":"n2189123396","loc":[-85.6301597,41.9379091],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123397":{"id":"n2189123397","loc":[-85.6308042,41.9377913],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123398":{"id":"n2189123398","loc":[-85.6316885,41.9378082],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123399":{"id":"n2189123399","loc":[-85.6316848,41.9380079],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123400":{"id":"n2189123400","loc":[-85.6318449,41.9381161],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123401":{"id":"n2189123401","loc":[-85.6320705,41.9381811],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123402":{"id":"n2189123402","loc":[-85.6321433,41.9383706],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123404":{"id":"n2189123404","loc":[-85.632056,41.9384355],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123406":{"id":"n2189123406","loc":[-85.6317867,41.9384572],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123409":{"id":"n2189123409","loc":[-85.6316572,41.9387281],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:21Z","tags":{}},"n2189123417":{"id":"n2189123417","loc":[-85.6315946,41.93775],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"n2189123419":{"id":"n2189123419","loc":[-85.6302641,41.9378393],"version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{}},"w208640158":{"id":"w208640158","version":"1","changeset":"15277145","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:41:22Z","tags":{"area":"yes","natural":"wetland"},"nodes":["n2189123379","n2189123382","n2189123384","n2189123387","n2189123388","n2189123389","n2189123390","n2189123391","n2189123392","n2189123393","n2189123394","n2189123395","n2189123396","n2189123419","n2189123397","n2189123417","n2189123398","n2189123399","n2189123400","n2189123401","n2189123402","n2189123404","n2189123406","n2189123409","n2189123410","n2189123412","n2189123415","n1819805722","n1819805861","n1819805887","n1819805760","n1819805641","n1819805632","n2189123379"]},"w134150787":{"id":"w134150787","version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"name":"Conrail Railroad","railway":"rail","tiger:cfcc":"B11","tiger:county":"St. Joseph, MI","tiger:name_base":"Conrail Railroad","tiger:reviewed":"no"},"nodes":["n185972905","n185972907","n1475293223","n185972911","n1475293241","n1475293246","n185972915","n185972917","n185972919","n1475293245","n185972921","n185972923","n1475284027","n1475284004","n1475284017","n1475283996","n1475284035","n1475284014","n185956891"]},"w208639443":{"id":"w208639443","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112720","n2189112721","n2189112722","n2189112723","n2189112720"]},"w17966462":{"id":"w17966462","version":"9","changeset":"15421127","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-19T15:12:00Z","tags":{"highway":"secondary","name":"South Main Street","old_ref":"US 131","ref":"M 86","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Main","tiger:name_base_1":"State Highway 86","tiger:name_direction_prefix":"S","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185977728","n185977729","n185977731","n185963665","n185959979","n185977733","n185945401","n185977734","n185977736","n185977738","n185977739","n1475283996","n185974511","n185945138","n185977742","n185961192","n185967638","n185977744","n185977746","n185977748","n185977750","n185977752","n185977753","n185977754","n185977755","n185977757","n185977761","n185958030","n1475293263","n185963698","n185952745","n185947850","n185977762"]},"w203985741":{"id":"w203985741","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:27Z","tags":{"area":"yes","leisure":"park","name":"Conservation Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n2139982404","n2139982405","n2139982399","n2139982400","n1819805770","n2139982402","n2139982403","n2139982401","n1819805780","n1819805834","n2139982406","n2139982404"]},"w17963676":{"id":"w17963676","version":"3","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312976","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n1475293258","n2139982428","n2139982427","n2139982426","n2139982425","n2139982424","n2139982423","n2139982422","n2139982430","n2139982421","n2139982420","n2139982429","n1475293231","n1475293258","n1475293251","n1475293223","n185952745"]},"w203985745":{"id":"w203985745","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"footway"},"nodes":["n2139982430","n2139982431","n2139982432","n2139982433","n2139982434","n2139982435","n2139982436","n2139982437","n2139982438","n2139982439","n2139982440","n2139982441","n1475293231"]},"w208639451":{"id":"w208639451","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112754","n2189112755","n2189112756","n2189112757","n2189112758","n2189112759","n2189112754"]},"w208639452":{"id":"w208639452","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112760","n2189112761","n2189112766","n2189112762","n2189112763","n2189112760"]},"w206805244":{"id":"w206805244","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544766","n2168544767","n2168544768","n2168544769","n2168544770","n2168544771","n2168544772","n2168544773","n2168544774","n2168544775","n2168544776","n2168544777","n2168544778","n2168544779","n2168544766"]},"w208639444":{"id":"w208639444","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112724","n2189112725","n2189112726","n2189112727","n2189112724"]},"w208639450":{"id":"w208639450","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112750","n2189112751","n2189112752","n2189112753","n2189112750"]},"w208639448":{"id":"w208639448","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112740","n2189112741","n2189112742","n2189112743","n2189112740"]},"w208637859":{"id":"w208637859","version":"1","changeset":"15276938","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:06:06Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189099387","n2189099388","n2189099389","n2189099390","n2189099391","n2189099392","n2189099393","n2189099394","n2189099395","n2189099396","n2189099397","n2189099398","n2189099399","n2189099400","n2189099401","n2189099402","n2189099403","n2189099404","n2189099405","n2189099406","n2189099407","n2189099408","n2189099409","n2189099410","n2189099387"]},"w208639453":{"id":"w208639453","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112764","n2189112765","n2189112766","n2189112761","n2189112764"]},"w208639456":{"id":"w208639456","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112774","n2189112778","n2189112779","n2189112775","n2189112776","n2189112777","n2189112774"]},"w208639445":{"id":"w208639445","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112728","n2189112729","n2189112730","n2189112731","n2189112728"]},"w17967776":{"id":"w17967776","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:17Z","tags":{"highway":"residential","name":"5th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"5th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312495","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958032","n185988963"]},"w208639461":{"id":"w208639461","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112792","n2189112794","n2189112795","n2189112796","n2189112793","n2189112792"]},"w206805241":{"id":"w206805241","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544754","n2168544755","n2168544756","n2168544757","n2168544754"]},"w208639449":{"id":"w208639449","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112744","n2189112745","n2189112746","n2189112747","n2189112748","n2189112749","n2189112744"]},"w208639455":{"id":"w208639455","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112771","n2189112772","n2189112773","n2189112768","n2189112771"]},"w208639457":{"id":"w208639457","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112780","n2189112781","n2189112782","n2189112783","n2189112780"]},"w208639446":{"id":"w208639446","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112732","n2189112733","n2189112734","n2189112735","n2189112732"]},"w208639454":{"id":"w208639454","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112767","n2189112768","n2189112773","n2189112769","n2189112770","n2189112767"]},"w203985743":{"id":"w203985743","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2139982411","n2139982412","n2139982413","n2139982414","n2139982415","n2139982416","n2139982417","n2139982419","n2139982418","n2139982411"]},"w17965023":{"id":"w17965023","version":"4","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:10Z","tags":{"highway":"residential","name":"4th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"4th","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313205","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185963655","n1875654302","n185959983","n185963688","n185945405","n185963689","n185963690","n185945142","n185963691","n185961200","n1475284021","n1475293246","n1875654132","n1475293263"]},"w206805242":{"id":"w206805242","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544758","n2168544759","n2168544760","n2168544761","n2168544758"]},"w208639460":{"id":"w208639460","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112792","n2189112793","n2189112789","n2189112790","n2189112792"]},"w208639447":{"id":"w208639447","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:17Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112736","n2189112737","n2189112738","n2189112739","n2189112736"]},"w208639458":{"id":"w208639458","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112784","n2189112785","n2189112786","n2189112787","n2189112784"]},"w203985744":{"id":"w203985744","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"highway":"service"},"nodes":["n2139982425","n2139982400"]},"w208639459":{"id":"w208639459","version":"1","changeset":"15277056","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T23:26:18Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189112788","n2189112789","n2189112790","n2189112791","n2189112788"]},"w203985742":{"id":"w203985742","version":"1","changeset":"14894784","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:53:28Z","tags":{"amenity":"shelter","area":"yes","shelter_type":"picnic_shelter"},"nodes":["n2139982407","n2139982408","n2139982409","n2139982410","n2139982407"]},"w206805243":{"id":"w206805243","version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:03Z","tags":{"area":"yes","building":"yes"},"nodes":["n2168544762","n2168544763","n2168544764","n2168544765","n2168544762"]},"n185959081":{"id":"n185959081","loc":[-85.628469,41.948674],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:41Z","tags":{}},"n185967427":{"id":"n185967427","loc":[-85.632054,41.951174],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967424":{"id":"n185967424","loc":[-85.6320391,41.9499109],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185968101":{"id":"n185968101","loc":[-85.6308395,41.9511969],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185960792":{"id":"n185960792","loc":[-85.632074,41.953707],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185961389":{"id":"n185961389","loc":[-85.630935,41.959037],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185961391":{"id":"n185961391","loc":[-85.632169,41.959025],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185965395":{"id":"n185965395","loc":[-85.63216,41.959859],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"n185966953":{"id":"n185966953","loc":[-85.630894,41.957428],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185966955":{"id":"n185966955","loc":[-85.632122,41.957427],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185967430":{"id":"n185967430","loc":[-85.632077,41.952453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967432":{"id":"n185967432","loc":[-85.632095,41.954685],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967434":{"id":"n185967434","loc":[-85.632121,41.955914],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967436":{"id":"n185967436","loc":[-85.632128,41.9583],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967438":{"id":"n185967438","loc":[-85.632187,41.960681],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185967440":{"id":"n185967440","loc":[-85.632182,41.961493],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:04Z","tags":{}},"n185968102":{"id":"n185968102","loc":[-85.630855,41.952452],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968104":{"id":"n185968104","loc":[-85.630887,41.953714],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968106":{"id":"n185968106","loc":[-85.630883,41.954692],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968108":{"id":"n185968108","loc":[-85.630904,41.955913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968110":{"id":"n185968110","loc":[-85.630904,41.958058],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968112":{"id":"n185968112","loc":[-85.630952,41.960667],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968114":{"id":"n185968114","loc":[-85.630972,41.961495],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185968116":{"id":"n185968116","loc":[-85.630962,41.961967],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:22Z","tags":{}},"n185978969":{"id":"n185978969","loc":[-85.633214,41.948618],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:39Z","tags":{}},"n185985812":{"id":"n185985812","loc":[-85.633274,41.951159],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:39Z","tags":{}},"n185986155":{"id":"n185986155","loc":[-85.633258,41.949893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:48Z","tags":{}},"n2208608826":{"id":"n2208608826","loc":[-85.6339222,41.9486225],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"w17964531":{"id":"w17964531","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:22Z","tags":{"highway":"residential","name":"Willow Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Willow","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313189","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n185959079","n185959081"]},"w17967386":{"id":"w17967386","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"East Armitage Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armitage","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185982195","n185968101","n185967427","n185985812","n185974583"]},"w17965502":{"id":"w17965502","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Elm Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Elm","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185968100","n185968101","n185968102","n185968104","n185968106","n185968108","n185966953","n185968110","n185961389","n185968112","n185968114","n185968116"]},"w17967844":{"id":"w17967844","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"East Bennett Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bennett","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185982193","n185967424","n185986155","n185978390"]},"w17966581":{"id":"w17966581","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"E Kelsey St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kelsey","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978967","n185978969","n2208608826","n185971578"]},"w17965402":{"id":"w17965402","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Walnut Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Walnut","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185967422","n185967424","n185967427","n185967430","n185960792","n185967432","n185967434","n185966955","n185967436","n185961391","n185965395","n185967438","n185967440"]},"n2199093506":{"id":"n2199093506","loc":[-85.6251879,41.9478322],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093505":{"id":"n2199093505","loc":[-85.6252076,41.9477749],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093504":{"id":"n2199093504","loc":[-85.6252289,41.9477602],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093503":{"id":"n2199093503","loc":[-85.625201,41.9477492],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093502":{"id":"n2199093502","loc":[-85.6251682,41.9477066],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093501":{"id":"n2199093501","loc":[-85.6251715,41.947609],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093500":{"id":"n2199093500","loc":[-85.6252125,41.9475639],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093499":{"id":"n2199093499","loc":[-85.6252896,41.9475602],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093498":{"id":"n2199093498","loc":[-85.6253027,41.9475334],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093497":{"id":"n2199093497","loc":[-85.6253437,41.9474822],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093496":{"id":"n2199093496","loc":[-85.6254421,41.9474675],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093495":{"id":"n2199093495","loc":[-85.6256503,41.9474944],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093494":{"id":"n2199093494","loc":[-85.6257257,41.9476127],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093493":{"id":"n2199093493","loc":[-85.6257028,41.9477285],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093492":{"id":"n2199093492","loc":[-85.6255339,41.9478102],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093491":{"id":"n2199093491","loc":[-85.6253912,41.9478224],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093490":{"id":"n2199093490","loc":[-85.6253043,41.947859],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093489":{"id":"n2199093489","loc":[-85.6252027,41.9478846],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093458":{"id":"n2199093458","loc":[-85.6246876,41.9486617],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093457":{"id":"n2199093457","loc":[-85.6243127,41.9486583],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093456":{"id":"n2199093456","loc":[-85.624306,41.9490569],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093455":{"id":"n2199093455","loc":[-85.624681,41.9490603],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093514":{"id":"n2199093514","loc":[-85.6236228,41.9496059],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093513":{"id":"n2199093513","loc":[-85.6236231,41.9496997],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093512":{"id":"n2199093512","loc":[-85.623357,41.9497002],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093511":{"id":"n2199093511","loc":[-85.6233567,41.9496136],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093508":{"id":"n2199093508","loc":[-85.6239735,41.9494287],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093507":{"id":"n2199093507","loc":[-85.6239741,41.9496052],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093488":{"id":"n2199093488","loc":[-85.624497,41.9512286],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093487":{"id":"n2199093487","loc":[-85.6244966,41.9511259],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093486":{"id":"n2199093486","loc":[-85.6243151,41.9511263],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093485":{"id":"n2199093485","loc":[-85.6243154,41.951229],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093484":{"id":"n2199093484","loc":[-85.6241205,41.9508665],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093483":{"id":"n2199093483","loc":[-85.624115,41.9505249],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093482":{"id":"n2199093482","loc":[-85.6243149,41.9505231],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093481":{"id":"n2199093481","loc":[-85.6243203,41.9508648],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093480":{"id":"n2199093480","loc":[-85.624393,41.9508668],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093479":{"id":"n2199093479","loc":[-85.6243904,41.9505956],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093478":{"id":"n2199093478","loc":[-85.6246727,41.950594],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093477":{"id":"n2199093477","loc":[-85.624675,41.9508203],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093476":{"id":"n2199093476","loc":[-85.6245097,41.9508212],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093475":{"id":"n2199093475","loc":[-85.6245101,41.9508662],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093474":{"id":"n2199093474","loc":[-85.6241008,41.9493459],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093473":{"id":"n2199093473","loc":[-85.6242442,41.9493459],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093472":{"id":"n2199093472","loc":[-85.6242442,41.9493681],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093471":{"id":"n2199093471","loc":[-85.6243397,41.9493681],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093470":{"id":"n2199093470","loc":[-85.6243417,41.9493511],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093469":{"id":"n2199093469","loc":[-85.6247251,41.9493485],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093468":{"id":"n2199093468","loc":[-85.6247548,41.9504949],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093467":{"id":"n2199093467","loc":[-85.6241214,41.9505017],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093466":{"id":"n2199093466","loc":[-85.6254398,41.950174],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093465":{"id":"n2199093465","loc":[-85.6254412,41.9499872],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093464":{"id":"n2199093464","loc":[-85.6255363,41.9499876],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093463":{"id":"n2199093463","loc":[-85.6255374,41.9498439],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093462":{"id":"n2199093462","loc":[-85.6255638,41.949844],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:44Z","tags":{}},"n2199093461":{"id":"n2199093461","loc":[-85.6255652,41.9496672],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093460":{"id":"n2199093460","loc":[-85.6251823,41.9496656],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093459":{"id":"n2199093459","loc":[-85.6251785,41.9501729],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:43Z","tags":{}},"n2199093510":{"id":"n2199093510","loc":[-85.6229922,41.9496143],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n2199093509":{"id":"n2199093509","loc":[-85.6229915,41.9494306],"version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{}},"n185948903":{"id":"n185948903","loc":[-85.616514,41.947449],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185955120":{"id":"n185955120","loc":[-85.620103,41.951],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185955143":{"id":"n185955143","loc":[-85.619784,41.94746],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185960124":{"id":"n185960124","loc":[-85.615238,41.947468],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:07Z","tags":{}},"n185961362":{"id":"n185961362","loc":[-85.617437,41.947451],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961364":{"id":"n185961364","loc":[-85.61861,41.947456],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185961367":{"id":"n185961367","loc":[-85.620088,41.947458],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:38Z","tags":{}},"n185965105":{"id":"n185965105","loc":[-85.620087,41.94924],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:44Z","tags":{}},"n185970220":{"id":"n185970220","loc":[-85.62156,41.948333],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:04:17Z","tags":{}},"n185974697":{"id":"n185974697","loc":[-85.6201059,41.950132],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n2138420778":{"id":"n2138420778","loc":[-85.616948,41.9474499],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"w17967535":{"id":"w17967535","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:52:19Z","tags":{"highway":"residential","name":"10th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"10th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313652:15313654","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185955120","n185986812","n185983141"]},"w209716130":{"id":"w209716130","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093485","n2199093486","n2199093487","n2199093488","n2199093485"]},"w17964788":{"id":"w17964788","version":"2","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:15Z","tags":{"highway":"residential","name":"6th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"6th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313681:15313682:15329115:15329116:15330465:15330466","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960124","n185948903","n2138420778","n185961362","n185961364","n185955143","n185961367","n185961369","n185961371"]},"w17965159":{"id":"w17965159","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:55Z","tags":{"highway":"residential","name":"8th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"8th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313660","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965105","n185965108","n185965110"]},"w209716125":{"id":"w209716125","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093459","n2199093460","n2199093461","n2199093462","n2199093463","n2199093464","n2199093465","n2199093466","n2199093459"]},"w17965699":{"id":"w17965699","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:39:03Z","tags":{"highway":"residential","name":"7th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"7th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313667:15314407","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185970220","n185970222","n185970224"]},"w209716132":{"id":"w209716132","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093507","n2199093508","n2199093509","n2199093510","n2199093511","n2199093512","n2199093513","n2199093514","n2199093507"]},"w17966129":{"id":"w17966129","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:42:41Z","tags":{"highway":"residential","name":"9th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"9th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313656","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185974697","n185974699"]},"w209716127":{"id":"w209716127","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093475","n2199093476","n2199093477","n2199093478","n2199093479","n2199093480","n2199093475"]},"w209716131":{"id":"w209716131","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","natural":"water","water":"pond"},"nodes":["n2199093489","n2199093490","n2199093491","n2199093492","n2199093493","n2199093494","n2199093495","n2199093496","n2199093497","n2199093498","n2199093499","n2199093500","n2199093501","n2199093502","n2199093503","n2199093504","n2199093505","n2199093506","n2199093489"]},"w209716126":{"id":"w209716126","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093467","n2199093468","n2199093469","n2199093470","n2199093471","n2199093472","n2199093473","n2199093474","n2199093467"]},"w209716124":{"id":"w209716124","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:45Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093455","n2199093456","n2199093457","n2199093458","n2199093455"]},"w209716128":{"id":"w209716128","version":"1","changeset":"15347539","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T04:54:46Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199093481","n2199093482","n2199093483","n2199093484","n2199093481"]},"n185949872":{"id":"n185949872","loc":[-85.643009,41.949264],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949875":{"id":"n185949875","loc":[-85.642598,41.94929],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949877":{"id":"n185949877","loc":[-85.642127,41.949382],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185949881":{"id":"n185949881","loc":[-85.64169,41.949936],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:54:20Z","tags":{}},"n185988165":{"id":"n185988165","loc":[-85.642167,41.947657],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185988167":{"id":"n185988167","loc":[-85.642347,41.947662],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185988169":{"id":"n185988169","loc":[-85.642621,41.947659],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:33Z","tags":{}},"n185965019":{"id":"n185965019","loc":[-85.6385084,41.951127],"version":"4","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1475293248":{"id":"n1475293248","loc":[-85.6386095,41.9512214],"version":"2","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:04Z","tags":{}},"n185962639":{"id":"n185962639","loc":[-85.649669,41.949161],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:30Z","tags":{}},"n185962810":{"id":"n185962810","loc":[-85.649907,41.949157],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:34Z","tags":{}},"n185964355":{"id":"n185964355","loc":[-85.637412,41.9511359],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185965021":{"id":"n185965021","loc":[-85.638661,41.952386],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965023":{"id":"n185965023","loc":[-85.638654,41.953665],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965025":{"id":"n185965025","loc":[-85.638694,41.954649],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965027":{"id":"n185965027","loc":[-85.638724,41.955913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185971415":{"id":"n185971415","loc":[-85.644466,41.949246],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185971417":{"id":"n185971417","loc":[-85.647021,41.949193],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185971420":{"id":"n185971420","loc":[-85.648476,41.949169],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:02Z","tags":{}},"n185979975":{"id":"n185979975","loc":[-85.644429,41.947633],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:24Z","tags":{}},"n185988171":{"id":"n185988171","loc":[-85.645377,41.947622],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:34Z","tags":{}},"w17963211":{"id":"w17963211","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:23:06Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313193","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185949870","n185949872","n185949875","n185949877","n185949881"]},"w17965839":{"id":"w17965839","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:10Z","tags":{"highway":"residential","name":"Arnold St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Arnold","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15327930:15324550:15312304:15324551","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185949870","n185971415","n185971417","n185971420","n185962639","n185962810"]},"w17967618":{"id":"w17967618","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:53:22Z","tags":{"highway":"residential","name":"Pierson St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pierson","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313265:15312333:15324553","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185967777","n185988165","n185988167","n185988169","n185985824","n185979975","n185988171"]},"w17965149":{"id":"w17965149","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:56Z","tags":{"highway":"residential","name":"Oak St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Oak","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331522","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185965019","n1475293248","n185965021","n185965023","n185965025","n185965027"]},"w17966118":{"id":"w17966118","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"West Armitage Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armitage","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185974583","n185974585","n185964355","n185965019"]},"n2208608800":{"id":"n2208608800","loc":[-85.6354294,41.9486201],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2199109806":{"id":"n2199109806","loc":[-85.6350474,41.9477884],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109804":{"id":"n2199109804","loc":[-85.6350476,41.9477962],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109802":{"id":"n2199109802","loc":[-85.635002,41.9477969],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109799":{"id":"n2199109799","loc":[-85.6350018,41.9477883],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109797":{"id":"n2199109797","loc":[-85.6349141,41.9477897],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109795":{"id":"n2199109795","loc":[-85.6349131,41.9477535],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109793":{"id":"n2199109793","loc":[-85.6349395,41.9477531],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109791":{"id":"n2199109791","loc":[-85.6349382,41.9477077],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109789":{"id":"n2199109789","loc":[-85.6351236,41.9477049],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109787":{"id":"n2199109787","loc":[-85.6351259,41.9477872],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109785":{"id":"n2199109785","loc":[-85.634972,41.9475992],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109783":{"id":"n2199109783","loc":[-85.6349206,41.9475997],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109770":{"id":"n2199109770","loc":[-85.6348499,41.9475461],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109768":{"id":"n2199109768","loc":[-85.6348499,41.9475084],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109765":{"id":"n2199109765","loc":[-85.6349241,41.9474569],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109763":{"id":"n2199109763","loc":[-85.634967,41.9474564],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109762":{"id":"n2199109762","loc":[-85.6350405,41.9475121],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109761":{"id":"n2199109761","loc":[-85.6350405,41.9475419],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109753":{"id":"n2199109753","loc":[-85.6342443,41.9478391],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109751":{"id":"n2199109751","loc":[-85.6342427,41.9477927],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109745":{"id":"n2199109745","loc":[-85.6342439,41.9476859],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109743":{"id":"n2199109743","loc":[-85.6342429,41.9476575],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109741":{"id":"n2199109741","loc":[-85.6344615,41.9476533],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109739":{"id":"n2199109739","loc":[-85.6344678,41.9478348],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109737":{"id":"n2199109737","loc":[-85.634416,41.9480059],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109735":{"id":"n2199109735","loc":[-85.6344145,41.9478983],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109733":{"id":"n2199109733","loc":[-85.6342749,41.9478993],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109731":{"id":"n2199109731","loc":[-85.6342753,41.9479272],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109729":{"id":"n2199109729","loc":[-85.6342498,41.9479274],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109727":{"id":"n2199109727","loc":[-85.6342505,41.9479762],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109725":{"id":"n2199109725","loc":[-85.6342743,41.947976],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109723":{"id":"n2199109723","loc":[-85.6342747,41.948007],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109721":{"id":"n2199109721","loc":[-85.6343415,41.9476355],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109719":{"id":"n2199109719","loc":[-85.6343391,41.9474973],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109717":{"id":"n2199109717","loc":[-85.6343133,41.9474798],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109715":{"id":"n2199109715","loc":[-85.6342874,41.9474737],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109709":{"id":"n2199109709","loc":[-85.6349804,41.94815],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109707":{"id":"n2199109707","loc":[-85.6348915,41.9481505],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109705":{"id":"n2199109705","loc":[-85.6348917,41.9481692],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109702":{"id":"n2199109702","loc":[-85.6348522,41.9481694],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109700":{"id":"n2199109700","loc":[-85.6348532,41.9482679],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109698":{"id":"n2199109698","loc":[-85.6348315,41.948268],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109696":{"id":"n2199109696","loc":[-85.6348318,41.9482955],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109694":{"id":"n2199109694","loc":[-85.6349653,41.9482946],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109692":{"id":"n2199109692","loc":[-85.6349656,41.9483211],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109690":{"id":"n2199109690","loc":[-85.634999,41.9483209],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109688":{"id":"n2199109688","loc":[-85.6349987,41.9482947],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109686":{"id":"n2199109686","loc":[-85.6351753,41.9482935],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109684":{"id":"n2199109684","loc":[-85.6351749,41.9482617],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109682":{"id":"n2199109682","loc":[-85.6351588,41.9482618],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109680":{"id":"n2199109680","loc":[-85.6351575,41.9481518],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109678":{"id":"n2199109678","loc":[-85.6350671,41.9481524],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109676":{"id":"n2199109676","loc":[-85.6350649,41.9479659],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109674":{"id":"n2199109674","loc":[-85.6349785,41.9479665],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109671":{"id":"n2199109671","loc":[-85.6343069,41.9483263],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109669":{"id":"n2199109669","loc":[-85.6343052,41.9482981],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109658":{"id":"n2199109658","loc":[-85.6343314,41.9480549],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109656":{"id":"n2199109656","loc":[-85.6343305,41.9480461],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109654":{"id":"n2199109654","loc":[-85.634435,41.9480468],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109652":{"id":"n2199109652","loc":[-85.6344342,41.9483746],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109650":{"id":"n2199109650","loc":[-85.6344629,41.9483727],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109648":{"id":"n2199109648","loc":[-85.6344637,41.9484561],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109645":{"id":"n2199109645","loc":[-85.63443,41.9484567],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109642":{"id":"n2199109642","loc":[-85.6344317,41.948505],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n185964352":{"id":"n185964352","loc":[-85.6373958,41.9489943],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185964351":{"id":"n185964351","loc":[-85.637113,41.9486],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n2208608825":{"id":"n2208608825","loc":[-85.6354483,41.9494241],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608823":{"id":"n2208608823","loc":[-85.6360418,41.949416],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608821":{"id":"n2208608821","loc":[-85.6360458,41.9495802],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2208608811":{"id":"n2208608811","loc":[-85.6357458,41.9495843],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608808":{"id":"n2208608808","loc":[-85.6357508,41.9497835],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608806":{"id":"n2208608806","loc":[-85.6354573,41.9497875],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2208608795":{"id":"n2208608795","loc":[-85.6354595,41.9498778],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:39Z","tags":{}},"n2199109638":{"id":"n2199109638","loc":[-85.6349605,41.949749],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109636":{"id":"n2199109636","loc":[-85.6349605,41.9497639],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109634":{"id":"n2199109634","loc":[-85.6349061,41.94971],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109632":{"id":"n2199109632","loc":[-85.6349048,41.9496569],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109630":{"id":"n2199109630","loc":[-85.6348835,41.9496571],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109628":{"id":"n2199109628","loc":[-85.6348829,41.9497103],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109626":{"id":"n2199109626","loc":[-85.635227,41.9497738],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109624":{"id":"n2199109624","loc":[-85.6352184,41.9497787],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109622":{"id":"n2199109622","loc":[-85.6351181,41.9497806],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109620":{"id":"n2199109620","loc":[-85.6351181,41.9497456],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109618":{"id":"n2199109618","loc":[-85.6348842,41.9497651],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109616":{"id":"n2199109616","loc":[-85.6348827,41.9496238],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109615":{"id":"n2199109615","loc":[-85.6351268,41.9496206],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109614":{"id":"n2199109614","loc":[-85.6351261,41.9495891],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109613":{"id":"n2199109613","loc":[-85.6351957,41.9495881],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109612":{"id":"n2199109612","loc":[-85.6351924,41.9494515],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109611":{"id":"n2199109611","loc":[-85.6353997,41.9494488],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2199109610":{"id":"n2199109610","loc":[-85.6354074,41.9497715],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n2189015681":{"id":"n2189015681","loc":[-85.6344229,41.9509639],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015677":{"id":"n2189015677","loc":[-85.634424,41.9507396],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2138493843":{"id":"n2138493843","loc":[-85.6343935,41.9502836],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493840":{"id":"n2138493840","loc":[-85.634398,41.9506264],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n354002838":{"id":"n354002838","loc":[-85.6345197,41.9510631],"version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{}},"n2114807590":{"id":"n2114807590","loc":[-85.634511,41.9499767],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n185964353":{"id":"n185964353","loc":[-85.6374092,41.9498755],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1819849180":{"id":"n1819849180","loc":[-85.6348236,41.94996],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:59Z","tags":{}},"n1819849115":{"id":"n1819849115","loc":[-85.6354372,41.9499538],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:57Z","tags":{}},"n1819848921":{"id":"n1819848921","loc":[-85.6348439,41.951064],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848885":{"id":"n1819848885","loc":[-85.6354575,41.9510578],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n185984281":{"id":"n185984281","loc":[-85.638075,41.949872],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:55Z","tags":{}},"n2208608827":{"id":"n2208608827","loc":[-85.6339169,41.9473191],"version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{}},"n2199109749":{"id":"n2199109749","loc":[-85.6342082,41.9477934],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109747":{"id":"n2199109747","loc":[-85.6342045,41.9476867],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109713":{"id":"n2199109713","loc":[-85.6342404,41.9474746],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109711":{"id":"n2199109711","loc":[-85.6342404,41.9476355],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109673":{"id":"n2199109673","loc":[-85.6340886,41.9483282],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109667":{"id":"n2199109667","loc":[-85.6342403,41.9482988],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109665":{"id":"n2199109665","loc":[-85.6342386,41.9482116],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109662":{"id":"n2199109662","loc":[-85.6340861,41.9482135],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109660":{"id":"n2199109660","loc":[-85.6340802,41.9480562],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:50Z","tags":{}},"n2199109640":{"id":"n2199109640","loc":[-85.6340928,41.9485063],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:49Z","tags":{}},"n354031366":{"id":"n354031366","loc":[-85.6341667,41.9477778],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:25Z","tags":{"amenity":"place_of_worship","ele":"249","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417877","gnis:state_id":"26","name":"Faith Tabernacle Church","religion":"christian"}},"n2189015686":{"id":"n2189015686","loc":[-85.6337798,41.95099],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015684":{"id":"n2189015684","loc":[-85.6337794,41.9509674],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015673":{"id":"n2189015673","loc":[-85.6337501,41.9507457],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015669":{"id":"n2189015669","loc":[-85.6337501,41.9506974],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015665":{"id":"n2189015665","loc":[-85.6339034,41.9506959],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015662":{"id":"n2189015662","loc":[-85.6339015,41.950436],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015658":{"id":"n2189015658","loc":[-85.6334916,41.9504376],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015655":{"id":"n2189015655","loc":[-85.6334939,41.9507558],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015650":{"id":"n2189015650","loc":[-85.6334543,41.950756],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015649":{"id":"n2189015649","loc":[-85.633456,41.9509915],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2138493842":{"id":"n2138493842","loc":[-85.6339937,41.9502836],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2138493841":{"id":"n2138493841","loc":[-85.6339983,41.9506281],"version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:31Z","tags":{}},"n2114807579":{"id":"n2114807579","loc":[-85.6333644,41.9510682],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807573":{"id":"n2114807573","loc":[-85.6333557,41.9499819],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n354031330":{"id":"n354031330","loc":[-85.6341667,41.9497222],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:24Z","tags":{"amenity":"place_of_worship","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417879","gnis:state_id":"26","name":"Trinity Episcopal Church","religion":"christian"}},"n185960794":{"id":"n185960794","loc":[-85.633307,41.9537],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:24Z","tags":{}},"n185964357":{"id":"n185964357","loc":[-85.637432,41.952399],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964358":{"id":"n185964358","loc":[-85.637452,41.953665],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964359":{"id":"n185964359","loc":[-85.63746,41.954658],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964360":{"id":"n185964360","loc":[-85.637473,41.95592],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964361":{"id":"n185964361","loc":[-85.637468,41.956906],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185964362":{"id":"n185964362","loc":[-85.637483,41.958313],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:21Z","tags":{}},"n185966957":{"id":"n185966957","loc":[-85.633361,41.957422],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185975351":{"id":"n185975351","loc":[-85.63334,41.9559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:58Z","tags":{}},"n185978784":{"id":"n185978784","loc":[-85.633311,41.954679],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185986157":{"id":"n185986157","loc":[-85.633287,41.952426],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:48Z","tags":{}},"n185986158":{"id":"n185986158","loc":[-85.6333607,41.9582301],"version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:20Z","tags":{"highway":"turning_circle"}},"w17965182":{"id":"w17965182","version":"2","changeset":"15277317","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-07T00:30:17Z","tags":{"highway":"residential","name":"W Prutzman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Prutzman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185965289","n2189153241","n185965291"]},"w208627205":{"id":"w208627205","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015649","n2189015650","n2189015655","n2189015658","n2189015662","n2189015665","n2189015669","n2189015673","n2189015677","n2189015681","n2189015684","n2189015686","n2189015649"]},"w209717042":{"id":"w209717042","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"amenity":"place_of_worship","area":"yes","building":"yes","denomination":"presbyterian","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417878","gnis:state_id":"26","name":"First Presbyterian Church","religion":"christian"},"nodes":["n2199109610","n2199109611","n2199109612","n2199109613","n2199109614","n2199109615","n2199109616","n2199109630","n2199109632","n2199109634","n2199109628","n2199109618","n2199109636","n2199109638","n2199109620","n2199109622","n2199109624","n2199109626","n2199109610"]},"w209717045":{"id":"w209717045","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109711","n2199109713","n2199109715","n2199109717","n2199109719","n2199109721","n2199109711"]},"w209717047":{"id":"w209717047","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109739","n2199109741","n2199109743","n2199109745","n2199109747","n2199109749","n2199109751","n2199109753","n2199109739"]},"w209717044":{"id":"w209717044","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109674","n2199109676","n2199109678","n2199109680","n2199109682","n2199109684","n2199109686","n2199109688","n2199109690","n2199109692","n2199109694","n2199109696","n2199109698","n2199109700","n2199109702","n2199109705","n2199109707","n2199109709","n2199109674"]},"w210822776":{"id":"w210822776","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"service","service":"alley","surface":"unpaved"},"nodes":["n2208608795","n2208608806","n2208608825","n2208608800","n2189153241"]},"w210822778":{"id":"w210822778","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"service","service":"alley"},"nodes":["n2208608826","n2208608827"]},"w209717050":{"id":"w209717050","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109787","n2199109789","n2199109791","n2199109793","n2199109795","n2199109797","n2199109799","n2199109802","n2199109804","n2199109806","n2199109787"]},"w17965097":{"id":"w17965097","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"Maple Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Maple","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185964351","n185964352","n185964353","n185964355","n185964357","n185964358","n185964359","n185964360","n185964361","n185964362"]},"w17965856":{"id":"w17965856","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"W Kelsey St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kelsey","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185971578","n2208608800","n185971580","n185964351"]},"w17967444":{"id":"w17967444","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"East","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966937","n185978969","n185986155","n185985812","n185986157","n185960794","n185978784","n185975351","n185966957","n185986158"]},"w17967764":{"id":"w17967764","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:14Z","tags":{"highway":"residential","name":"Rock River Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Rock River","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312338","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185984017","n185964351"]},"w170848329":{"id":"w170848329","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"ele":"251","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2418164","gnis:state_id":"26","leisure":"park","name":"LaFayette Park","source":"Bing"},"nodes":["n1819849180","n1819849115","n1819848885","n1819848921","n1819849180"]},"w17967208":{"id":"w17967208","version":"4","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:24Z","tags":{"highway":"residential","name":"West Bennett Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bennett","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185978390","n2208608795","n185984020","n185964353","n185984281"]},"w17965349":{"id":"w17965349","version":"2","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"highway":"residential","name":"E Prutzman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Prutzman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185966937","n2208608827","n185965289"]},"w209717049":{"id":"w209717049","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109761","n2199109762","n2199109763","n2199109765","n2199109768","n2199109770","n2199109783","n2199109785","n2199109761"]},"w203841840":{"id":"w203841840","version":"1","changeset":"14879185","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:55:32Z","tags":{"area":"yes","leisure":"playground"},"nodes":["n2138493840","n2138493841","n2138493842","n2138493843","n2138493840"]},"w209717043":{"id":"w209717043","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"amenity":"place_of_worship","area":"yes","building":"church","denomination":"methodist","ele":"249","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417880","gnis:state_id":"26","name":"First United Methodist Church","religion":"christian"},"nodes":["n2199109640","n2199109642","n2199109645","n2199109648","n2199109650","n2199109652","n2199109654","n2199109656","n2199109658","n2199109660","n2199109662","n2199109665","n2199109667","n2199109669","n2199109671","n2199109673","n2199109640"]},"w201484341":{"id":"w201484341","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"amenity":"school","ele":"250","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:edited":"02/22/2008","gnis:feature_id":"1624612","gnis:state_id":"26","name":"Hoppin School"},"nodes":["n354002838","n2114807579","n2114807573","n2114807590","n354002838"]},"w209717046":{"id":"w209717046","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109723","n2199109725","n2199109727","n2199109729","n2199109731","n2199109733","n2199109735","n2199109737","n2199109723"]},"w210822777":{"id":"w210822777","version":"1","changeset":"15411098","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-18T17:54:40Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2208608806","n2208608808","n2208608811","n2208608821","n2208608823","n2208608825","n2208608806"]},"n185954965":{"id":"n185954965","loc":[-85.6191189,41.9441922],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:57Z","tags":{}},"n185954968":{"id":"n185954968","loc":[-85.6194384,41.9442405],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954970":{"id":"n185954970","loc":[-85.6196543,41.9443252],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954972":{"id":"n185954972","loc":[-85.6197862,41.9444539],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n354002931":{"id":"n354002931","loc":[-85.6198991,41.9455269],"version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:01Z","tags":{}},"n354030853":{"id":"n354030853","loc":[-85.6219444,41.9455556],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:19Z","tags":{"amenity":"place_of_worship","ele":"246","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417869","gnis:state_id":"26","name":"Grant Chapel","religion":"christian"}},"n367815963":{"id":"n367815963","loc":[-85.6202778,41.9461111],"version":"1","changeset":"871579","user":"amillar","uid":"28145","visible":"true","timestamp":"2009-03-31T07:45:44Z","tags":{"addr:state":"MI","building":"yes","ele":"247","gnis:county_name":"St. Joseph","gnis:feature_id":"2418176","gnis:import_uuid":"57871b70-0100-4405-bb30-88b2e001a944","gnis:reviewed":"no","name":"George Washington Carver Community Center","source":"USGS Geonames"}},"n185947331":{"id":"n185947331","loc":[-85.618779,41.943269],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947333":{"id":"n185947333","loc":[-85.618795,41.943511],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947336":{"id":"n185947336","loc":[-85.618711,41.94413],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947338":{"id":"n185947338","loc":[-85.618704,41.944189],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947339":{"id":"n185947339","loc":[-85.618597,41.944337],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947340":{"id":"n185947340","loc":[-85.618485,41.944528],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947343":{"id":"n185947343","loc":[-85.618442,41.944716],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947345":{"id":"n185947345","loc":[-85.618457,41.945107],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947347":{"id":"n185947347","loc":[-85.618296,41.945338],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947374":{"id":"n185947374","loc":[-85.616748,41.944453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947375":{"id":"n185947375","loc":[-85.616813,41.944646],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947376":{"id":"n185947376","loc":[-85.616859,41.945196],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947377":{"id":"n185947377","loc":[-85.616941,41.945352],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:12Z","tags":{}},"n185947406":{"id":"n185947406","loc":[-85.618184,41.944227],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947409":{"id":"n185947409","loc":[-85.617911,41.943875],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947410":{"id":"n185947410","loc":[-85.617579,41.943682],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947411":{"id":"n185947411","loc":[-85.61713,41.943589],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947412":{"id":"n185947412","loc":[-85.616549,41.943559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947414":{"id":"n185947414","loc":[-85.616482,41.943556],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947464":{"id":"n185947464","loc":[-85.616526,41.943788],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947466":{"id":"n185947466","loc":[-85.616504,41.944002],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185948863":{"id":"n185948863","loc":[-85.619017,41.943391],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185948865":{"id":"n185948865","loc":[-85.619059,41.943368],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:45Z","tags":{}},"n185955022":{"id":"n185955022","loc":[-85.620088,41.945571],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185955025":{"id":"n185955025","loc":[-85.620051,41.945505],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185955028":{"id":"n185955028","loc":[-85.62001,41.94541],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:37Z","tags":{}},"n185980371":{"id":"n185980371","loc":[-85.620982,41.944742],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:37Z","tags":{}},"n185980398":{"id":"n185980398","loc":[-85.621305,41.944782],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980401":{"id":"n185980401","loc":[-85.621174,41.944819],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980403":{"id":"n185980403","loc":[-85.621029,41.944871],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980405":{"id":"n185980405","loc":[-85.620741,41.945011],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980407":{"id":"n185980407","loc":[-85.620616,41.945085],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980409":{"id":"n185980409","loc":[-85.620506,41.945172],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980411":{"id":"n185980411","loc":[-85.620394,41.945273],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:38Z","tags":{}},"n185980413":{"id":"n185980413","loc":[-85.620316,41.94536],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185980415":{"id":"n185980415","loc":[-85.620257,41.945452],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185980417":{"id":"n185980417","loc":[-85.620212,41.945535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:39Z","tags":{}},"n185985910":{"id":"n185985910","loc":[-85.620101,41.945811],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:41Z","tags":{}},"n185985912":{"id":"n185985912","loc":[-85.620081,41.945937],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n1475283972":{"id":"n1475283972","loc":[-85.6198991,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:45Z","tags":{}},"n1475283982":{"id":"n1475283982","loc":[-85.6195022,41.9433463],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284007":{"id":"n1475284007","loc":[-85.6193037,41.9433383],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284040":{"id":"n1475284040","loc":[-85.6197329,41.9434121],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284044":{"id":"n1475284044","loc":[-85.6198756,41.9435363],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284050":{"id":"n1475284050","loc":[-85.6199689,41.9432106],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n1475284053":{"id":"n1475284053","loc":[-85.6198943,41.9432921],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n185954974":{"id":"n185954974","loc":[-85.6198296,41.94473],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n185954977":{"id":"n185954977","loc":[-85.6200474,41.9447384],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:58Z","tags":{}},"n2196831365":{"id":"n2196831365","loc":[-85.6202259,41.9460883],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831366":{"id":"n2196831366","loc":[-85.6202245,41.9458642],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831367":{"id":"n2196831367","loc":[-85.6205184,41.9458631],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831368":{"id":"n2196831368","loc":[-85.6205189,41.9459437],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831369":{"id":"n2196831369","loc":[-85.6203879,41.9459441],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831370":{"id":"n2196831370","loc":[-85.6203888,41.9460878],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831371":{"id":"n2196831371","loc":[-85.6184046,41.9465663],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831372":{"id":"n2196831372","loc":[-85.6191563,41.9465618],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831373":{"id":"n2196831373","loc":[-85.6191536,41.946319],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831374":{"id":"n2196831374","loc":[-85.6187356,41.9463216],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831375":{"id":"n2196831375","loc":[-85.6187334,41.9461197],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831376":{"id":"n2196831376","loc":[-85.6193167,41.9461162],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831377":{"id":"n2196831377","loc":[-85.6193156,41.9460229],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831378":{"id":"n2196831378","loc":[-85.619622,41.946021],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831379":{"id":"n2196831379","loc":[-85.6196237,41.9461712],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831380":{"id":"n2196831380","loc":[-85.6197702,41.9461703],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831381":{"id":"n2196831381","loc":[-85.6197685,41.9460202],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831382":{"id":"n2196831382","loc":[-85.6197323,41.9460204],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831383":{"id":"n2196831383","loc":[-85.6197305,41.9458563],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831384":{"id":"n2196831384","loc":[-85.6196165,41.945857],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831385":{"id":"n2196831385","loc":[-85.6196156,41.9457764],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831386":{"id":"n2196831386","loc":[-85.6194472,41.9457775],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831387":{"id":"n2196831387","loc":[-85.6194151,41.9457777],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831388":{"id":"n2196831388","loc":[-85.6183779,41.9457883],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831389":{"id":"n2196831389","loc":[-85.6183842,41.9461317],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831390":{"id":"n2196831390","loc":[-85.6185026,41.9461304],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831391":{"id":"n2196831391","loc":[-85.6185061,41.9463194],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831392":{"id":"n2196831392","loc":[-85.6184001,41.9463205],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831393":{"id":"n2196831393","loc":[-85.6182482,41.9464163],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831394":{"id":"n2196831394","loc":[-85.6182467,41.9463193],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831395":{"id":"n2196831395","loc":[-85.6180389,41.946321],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n2196831397":{"id":"n2196831397","loc":[-85.6180404,41.946418],"version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:40Z","tags":{}},"n185947303":{"id":"n185947303","loc":[-85.611074,41.943389],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947304":{"id":"n185947304","loc":[-85.611332,41.943267],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947305":{"id":"n185947305","loc":[-85.611635,41.943218],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947306":{"id":"n185947306","loc":[-85.612762,41.943311],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947308":{"id":"n185947308","loc":[-85.613027,41.943327],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947310":{"id":"n185947310","loc":[-85.615377,41.942996],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947312":{"id":"n185947312","loc":[-85.615701,41.943007],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947314":{"id":"n185947314","loc":[-85.61604,41.943067],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947315":{"id":"n185947315","loc":[-85.61626,41.943083],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947316":{"id":"n185947316","loc":[-85.616507,41.943048],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947319":{"id":"n185947319","loc":[-85.616702,41.94299],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:10Z","tags":{}},"n185947321":{"id":"n185947321","loc":[-85.617078,41.942918],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947322":{"id":"n185947322","loc":[-85.617366,41.942973],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947323":{"id":"n185947323","loc":[-85.617601,41.943033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947325":{"id":"n185947325","loc":[-85.617799,41.943027],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947327":{"id":"n185947327","loc":[-85.618264,41.942961],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947328":{"id":"n185947328","loc":[-85.618508,41.942972],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947329":{"id":"n185947329","loc":[-85.618707,41.943076],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947361":{"id":"n185947361","loc":[-85.615356,41.944922],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947363":{"id":"n185947363","loc":[-85.61536,41.944893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947365":{"id":"n185947365","loc":[-85.615406,41.944547],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947367":{"id":"n185947367","loc":[-85.61548,41.944351],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947369":{"id":"n185947369","loc":[-85.615805,41.94419],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947371":{"id":"n185947371","loc":[-85.616166,41.944156],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947373":{"id":"n185947373","loc":[-85.616411,41.944197],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:11Z","tags":{}},"n185947416":{"id":"n185947416","loc":[-85.616335,41.94343],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947417":{"id":"n185947417","loc":[-85.616069,41.943293],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947419":{"id":"n185947419","loc":[-85.615803,41.943249],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947420":{"id":"n185947420","loc":[-85.615524,41.943342],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947421":{"id":"n185947421","loc":[-85.615311,41.94353],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947422":{"id":"n185947422","loc":[-85.614338,41.943558],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947423":{"id":"n185947423","loc":[-85.61422,41.94369],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947425":{"id":"n185947425","loc":[-85.614221,41.944224],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947427":{"id":"n185947427","loc":[-85.614198,41.944888],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947429":{"id":"n185947429","loc":[-85.614221,41.945439],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:13Z","tags":{}},"n185947468":{"id":"n185947468","loc":[-85.615908,41.944756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947470":{"id":"n185947470","loc":[-85.615871,41.944888],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185947472":{"id":"n185947472","loc":[-85.615878,41.94507],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:14Z","tags":{}},"n185955153":{"id":"n185955153","loc":[-85.620087,41.947701],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:39Z","tags":{}},"n185960690":{"id":"n185960690","loc":[-85.620141,41.951901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185978817":{"id":"n185978817","loc":[-85.617193,41.954706],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185985916":{"id":"n185985916","loc":[-85.620088,41.94758],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985918":{"id":"n185985918","loc":[-85.620133,41.951538],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985919":{"id":"n185985919","loc":[-85.62013,41.952104],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985920":{"id":"n185985920","loc":[-85.620104,41.952305],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985921":{"id":"n185985921","loc":[-85.620062,41.952499],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985922":{"id":"n185985922","loc":[-85.619993,41.952702],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985925":{"id":"n185985925","loc":[-85.619879,41.952986],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985927":{"id":"n185985927","loc":[-85.619689,41.95329],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985928":{"id":"n185985928","loc":[-85.619508,41.953521],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985929":{"id":"n185985929","loc":[-85.619286,41.953728],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985930":{"id":"n185985930","loc":[-85.618925,41.954007],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985931":{"id":"n185985931","loc":[-85.618638,41.954189],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985932":{"id":"n185985932","loc":[-85.61831,41.954358],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:42Z","tags":{}},"n185985934":{"id":"n185985934","loc":[-85.618015,41.954485],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:43Z","tags":{}},"n185985936":{"id":"n185985936","loc":[-85.617606,41.954611],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:12:43Z","tags":{}},"n1475283975":{"id":"n1475283975","loc":[-85.6150935,41.9434118],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283979":{"id":"n1475283979","loc":[-85.6193367,41.9430252],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283989":{"id":"n1475283989","loc":[-85.6104771,41.9455269],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283990":{"id":"n1475283990","loc":[-85.6104771,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283994":{"id":"n1475283994","loc":[-85.6198042,41.9429763],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475283998":{"id":"n1475283998","loc":[-85.6192101,41.9426716],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284000":{"id":"n1475284000","loc":[-85.6198622,41.942836],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284002":{"id":"n1475284002","loc":[-85.6163262,41.9427688],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:46Z","tags":{}},"n1475284006":{"id":"n1475284006","loc":[-85.6179527,41.9429168],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284029":{"id":"n1475284029","loc":[-85.6197195,41.9427278],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284038":{"id":"n1475284038","loc":[-85.6194405,41.9427837],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:47Z","tags":{}},"n1475284052":{"id":"n1475284052","loc":[-85.6153225,41.942841],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n1475284055":{"id":"n1475284055","loc":[-85.6129233,41.9437179],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:48Z","tags":{}},"n2139966627":{"id":"n2139966627","loc":[-85.61958,41.9427558],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"w17966773":{"id":"w17966773","version":"3","changeset":"2558583","user":"elliskev","uid":"163338","visible":"true","timestamp":"2009-09-21T16:12:43Z","tags":{"highway":"secondary","name":"E Michigan Ave","ref":"M 60","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313712","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185980372","n185980398","n185980401","n185980403","n185980405","n185980407","n185980409","n185980411","n185980413","n185980415","n185980417","n185955019"]},"w17964043":{"id":"w17964043","version":"3","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:19Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326065:15326068","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955019","n185955022","n185955025","n185955028","n185954977","n185971477","n1475284050","n1475284000","n1475284029","n2139966627","n1475284038"]},"w17962834":{"id":"w17962834","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:15Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313719:15313728:15331618","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947316","n185947414","n185947464","n185947466","n185947373","n185947468","n185947470","n185947472","n185947474"]},"w209470310":{"id":"w209470310","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831393","n2196831394","n2196831395","n2196831397","n2196831393"]},"w17963058":{"id":"w17963058","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:05Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326058:15326066:15326067","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947333","n185948863","n185948865","n1475284007","n1475283982","n1475284040","n1475284044"]},"w17962823":{"id":"w17962823","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:14Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313714:15313704:15313720:15313721","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947359","n185947361","n185947363","n185947365","n185947367","n185947369","n185947371","n185947373","n185947374","n185947375","n185947376","n185947377","n185947378"]},"w17962821":{"id":"w17962821","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:15Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313713:15313734:15313731:15313735:15313737:15313723","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947303","n185947304","n185947305","n185947306","n185947308","n185947310","n185947312","n185947314","n185947315","n185947316","n185947319","n185947321","n185947322","n185947323","n185947325","n185947327","n185947328","n185947329","n185947331","n185947333","n185947336","n185947338","n185947339","n185947340","n185947343","n185947345","n185947347","n185947349"]},"w134150798":{"id":"w134150798","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:45:52Z","tags":{"amenity":"grave_yard","ele":"249","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624862","gnis:state_id":"26","name":"Riverside Cemetery"},"nodes":["n354002931","n1475283972","n1475284053","n1475283994","n1475283979","n1475283998","n1475284006","n1475284002","n1475284052","n1475283975","n1475284055","n1475283990","n1475283989","n354002931"]},"w17964040":{"id":"w17964040","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:02Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326063:15326064","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947336","n185954965","n185954968","n185954970","n185954972","n185954974","n185954977"]},"w209470308":{"id":"w209470308","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831365","n2196831366","n2196831367","n2196831368","n2196831369","n2196831370","n2196831365"]},"w17962828":{"id":"w17962828","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:14Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313715:15313706:15328746:15313727:15313729","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185947340","n185947406","n185947409","n185947410","n185947411","n185947412","n185947414","n185947416","n185947417","n185947419","n185947420","n185947421","n185947422","n185947423","n185947425","n185947427","n185947429"]},"w209470309":{"id":"w209470309","version":"1","changeset":"15335510","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-12T03:10:41Z","tags":{"area":"yes","building":"yes"},"nodes":["n2196831371","n2196831372","n2196831373","n2196831374","n2196831375","n2196831376","n2196831377","n2196831378","n2196831379","n2196831380","n2196831381","n2196831382","n2196831383","n2196831384","n2196831385","n2196831386","n2196831387","n2196831388","n2196831389","n2196831390","n2196831391","n2196831392","n2196831371"]},"w17967415":{"id":"w17967415","version":"3","changeset":"2558583","user":"elliskev","uid":"163338","visible":"true","timestamp":"2009-09-21T16:12:41Z","tags":{"highway":"secondary","name":"Jefferson St","name_1":"State Highway 60","ref":"M 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Jefferson","tiger:name_base_1":"State Highway 60","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313637:15313662:15313657:15328403","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n185955019","n185985910","n185985912","n185985914","n185961367","n185985916","n185955153","n185965105","n185974697","n185955120","n185985918","n185960690","n185985919","n185985920","n185985921","n185985922","n185985925","n185985927","n185985928","n185985929","n185985930","n185985931","n185985932","n185985934","n185985936","n185978817"]},"w17966772":{"id":"w17966772","version":"4","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:46:07Z","tags":{"highway":"unclassified","name":"E Michigan Ave","name_1":"State Highway 60","tiger:cfcc":"A31","tiger:county":"St. Joseph, MI","tiger:name_base":"Michigan","tiger:name_base_1":"State Highway 60","tiger:name_direction_prefix":"E","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313710:15313711:15314052:15312385:15312378","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185954977","n185980371","n185980372"]},"n185958500":{"id":"n185958500","loc":[-85.621591,41.941075],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:27Z","tags":{}},"n185963110":{"id":"n185963110","loc":[-85.6204416,41.9408882],"version":"3","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{}},"n2139966628":{"id":"n2139966628","loc":[-85.6196431,41.9426467],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"leisure":"fishing"}},"n2139966630":{"id":"n2139966630","loc":[-85.6199354,41.9429616],"version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{}},"n2199127051":{"id":"n2199127051","loc":[-85.6170556,41.939696],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127052":{"id":"n2199127052","loc":[-85.6170536,41.9392909],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127053":{"id":"n2199127053","loc":[-85.6172067,41.9392905],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127054":{"id":"n2199127054","loc":[-85.6172061,41.9391853],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127055":{"id":"n2199127055","loc":[-85.6171481,41.9391854],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127060":{"id":"n2199127060","loc":[-85.6167389,41.9392896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127061":{"id":"n2199127061","loc":[-85.6168728,41.9392892],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127062":{"id":"n2199127062","loc":[-85.6168747,41.9396965],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127071":{"id":"n2199127071","loc":[-85.620196,41.9399446],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127072":{"id":"n2199127072","loc":[-85.620193,41.9397316],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127073":{"id":"n2199127073","loc":[-85.6200381,41.9397328],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127074":{"id":"n2199127074","loc":[-85.6200412,41.9399458],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127075":{"id":"n2199127075","loc":[-85.6203606,41.9399939],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127076":{"id":"n2199127076","loc":[-85.6205527,41.9399922],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127077":{"id":"n2199127077","loc":[-85.6205482,41.9397115],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127078":{"id":"n2199127078","loc":[-85.6204132,41.9397124],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127079":{"id":"n2199127079","loc":[-85.6204144,41.9396341],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127080":{"id":"n2199127080","loc":[-85.6205699,41.9396324],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127081":{"id":"n2199127081","loc":[-85.6205722,41.939498],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127082":{"id":"n2199127082","loc":[-85.6204064,41.9394997],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127083":{"id":"n2199127083","loc":[-85.6204087,41.939561],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127084":{"id":"n2199127084","loc":[-85.6203103,41.9395618],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127085":{"id":"n2199127085","loc":[-85.620308,41.9396069],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127086":{"id":"n2199127086","loc":[-85.6200347,41.9396086],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127087":{"id":"n2199127087","loc":[-85.6200382,41.9397141],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127088":{"id":"n2199127088","loc":[-85.6202257,41.9397149],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127089":{"id":"n2199127089","loc":[-85.6202269,41.9399182],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127090":{"id":"n2199127090","loc":[-85.6203595,41.9399199],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127091":{"id":"n2199127091","loc":[-85.6212335,41.939688],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127092":{"id":"n2199127092","loc":[-85.6212328,41.939595],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127093":{"id":"n2199127093","loc":[-85.6208807,41.9395966],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127094":{"id":"n2199127094","loc":[-85.6208815,41.9396896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127095":{"id":"n2199127095","loc":[-85.6208676,41.9396872],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127096":{"id":"n2199127096","loc":[-85.6208583,41.9393539],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127097":{"id":"n2199127097","loc":[-85.6207006,41.9393563],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n2199127098":{"id":"n2199127098","loc":[-85.6207099,41.9396896],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:20Z","tags":{}},"n185967054":{"id":"n185967054","loc":[-85.6173384,41.9356126],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967063":{"id":"n185967063","loc":[-85.617371,41.936243],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967065":{"id":"n185967065","loc":[-85.617337,41.936299],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967068":{"id":"n185967068","loc":[-85.617321,41.936373],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:53Z","tags":{}},"n185967070":{"id":"n185967070","loc":[-85.6173562,41.9366969],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967074":{"id":"n185967074","loc":[-85.6173635,41.9377414],"version":"3","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"n185967075":{"id":"n185967075","loc":[-85.6173696,41.9381886],"version":"3","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:29:58Z","tags":{}},"n185967076":{"id":"n185967076","loc":[-85.617372,41.938535],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:54Z","tags":{}},"n2199127056":{"id":"n2199127056","loc":[-85.617147,41.9389616],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127057":{"id":"n2199127057","loc":[-85.6172136,41.9389614],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127058":{"id":"n2199127058","loc":[-85.6172123,41.9386909],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2199127059":{"id":"n2199127059","loc":[-85.616736,41.9386922],"version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:19Z","tags":{}},"n2203921041":{"id":"n2203921041","loc":[-85.6173018,41.9346369],"version":"1","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{}},"w203983952":{"id":"w203983952","version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"highway":"service"},"nodes":["n2139966627","n1819800319"]},"w209718301":{"id":"w209718301","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127051","n2199127052","n2199127053","n2199127054","n2199127055","n2199127056","n2199127057","n2199127058","n2199127059","n2199127060","n2199127061","n2199127062","n2199127051"]},"w209718304":{"id":"w209718304","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127071","n2199127072","n2199127073","n2199127074","n2199127071"]},"w17964961":{"id":"w17964961","version":"2","changeset":"15379124","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:38:37Z","tags":{"highway":"residential","name":"Whipple St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Whipple","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185963099","n185963110"]},"w17964489":{"id":"w17964489","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:29:56Z","tags":{"highway":"residential","name":"Jackson St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Jackson","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314430","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185958498","n185958500"]},"w203983953":{"id":"w203983953","version":"1","changeset":"14894526","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T11:32:18Z","tags":{"area":"yes","leisure":"park","name":"Marina Park","website":"http://www.threeriversmi.us/?page_id=53"},"nodes":["n1475283994","n1475283979","n1475283998","n2139966629","n2139966625","n1819800319","n2139966623","n2139966622","n2139966621","n2139966630","n1475283994"]},"w17965366":{"id":"w17965366","version":"2","changeset":"15379027","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-15T23:24:18Z","tags":{"highway":"residential","name":"14th St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"14th","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n2203921041","n185967054","n185967063","n185967065","n185967068","n185967070","n185967074","n185967075","n185967076","n185967077"]},"w209718306":{"id":"w209718306","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127091","n2199127092","n2199127093","n2199127094","n2199127091"]},"w209718307":{"id":"w209718307","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127095","n2199127096","n2199127097","n2199127098","n2199127095"]},"w209718305":{"id":"w209718305","version":"1","changeset":"15347669","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:38:21Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199127075","n2199127076","n2199127077","n2199127078","n2199127079","n2199127080","n2199127081","n2199127082","n2199127083","n2199127084","n2199127085","n2199127086","n2199127087","n2199127088","n2199127089","n2199127090","n2199127075"]},"n185960199":{"id":"n185960199","loc":[-85.62965,41.95469],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:08Z","tags":{}},"n185980737":{"id":"n185980737","loc":[-85.629083,41.953725],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:48Z","tags":{}},"n2114807561":{"id":"n2114807561","loc":[-85.6297681,41.9524688],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807597":{"id":"n2114807597","loc":[-85.6296517,41.952563],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n185960197":{"id":"n185960197","loc":[-85.629676,41.9537314],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978791":{"id":"n185978791","loc":[-85.6244542,41.9547066],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"w17967573":{"id":"w17967573","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"highway":"residential","name":"E Wheeler St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wheeler","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960195","n2114807561","n185968102","n185967430","n185986157","n185978392"]},"w17966553":{"id":"w17966553","version":"5","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Hoffman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971631","n185978784","n185967432","n185968106","n185960199","n185978787","n185978790","n185978791"]},"w17966787":{"id":"w17966787","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"East Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185980735","n185980737","n185960197","n185968104","n185960792"]},"w17964723":{"id":"w17964723","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960792","n185960794","n185960796"]},"w17964654":{"id":"w17964654","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"Pine Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Pine","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960195","n2114807597","n185960197","n185960199"]},"n1819848862":{"id":"n1819848862","loc":[-85.6346087,41.9545845],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848935":{"id":"n1819848935","loc":[-85.6345948,41.9537717],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819848973":{"id":"n1819848973","loc":[-85.6334247,41.9537827],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n1819848997":{"id":"n1819848997","loc":[-85.6334386,41.9545956],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n2189015861":{"id":"n2189015861","loc":[-85.6375906,41.954836],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015865":{"id":"n2189015865","loc":[-85.6383307,41.9548291],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015867":{"id":"n2189015867","loc":[-85.6383337,41.9550072],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015868":{"id":"n2189015868","loc":[-85.6380986,41.9550094],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015869":{"id":"n2189015869","loc":[-85.6381005,41.9551226],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2199109808":{"id":"n2199109808","loc":[-85.6372702,41.9522894],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109810":{"id":"n2199109810","loc":[-85.6372677,41.9521583],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109812":{"id":"n2199109812","loc":[-85.6369505,41.9521617],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109814":{"id":"n2199109814","loc":[-85.636953,41.9522927],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n185952156":{"id":"n185952156","loc":[-85.640983,41.9546557],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185953423":{"id":"n185953423","loc":[-85.641871,41.954652],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185971637":{"id":"n185971637","loc":[-85.641583,41.95465],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:06Z","tags":{}},"n185971639":{"id":"n185971639","loc":[-85.6421344,41.9546444],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971642":{"id":"n185971642","loc":[-85.6428264,41.9545612],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185971648":{"id":"n185971648","loc":[-85.6436023,41.9544262],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185975066":{"id":"n185975066","loc":[-85.640532,41.953638],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185975067":{"id":"n185975067","loc":[-85.64079,41.953638],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:49Z","tags":{}},"n185982166":{"id":"n185982166","loc":[-85.6399012,41.9523817],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n2189015858":{"id":"n2189015858","loc":[-85.6376104,41.9560138],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015870":{"id":"n2189015870","loc":[-85.6386794,41.9551172],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015871":{"id":"n2189015871","loc":[-85.6386817,41.955256],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015873":{"id":"n2189015873","loc":[-85.6385437,41.9552573],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015876":{"id":"n2189015876","loc":[-85.638555,41.9559278],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015879":{"id":"n2189015879","loc":[-85.6384954,41.9559283],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015882":{"id":"n2189015882","loc":[-85.6384965,41.9559935],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015885":{"id":"n2189015885","loc":[-85.6383533,41.9559949],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015888":{"id":"n2189015888","loc":[-85.638351,41.9558607],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015891":{"id":"n2189015891","loc":[-85.6382178,41.9558619],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015894":{"id":"n2189015894","loc":[-85.6382203,41.956008],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"w208627223":{"id":"w208627223","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015858","n2189015861","n2189015865","n2189015867","n2189015868","n2189015869","n2189015870","n2189015871","n2189015873","n2189015876","n2189015879","n2189015882","n2189015885","n2189015888","n2189015891","n2189015894","n2189015858"]},"w170848328":{"id":"w170848328","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"ele":"250","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624408","gnis:state_id":"26","leisure":"park","name":"Bowman Park","source":"Bing"},"nodes":["n1819848935","n1819848973","n1819848997","n1819848862","n1819848935"]},"w17965866":{"id":"w17965866","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Hoffman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185971631","n185971632","n185964359","n185965025","n1475293264","n185952156","n185971637","n185953423","n185971639","n185971642","n185971648"]},"w209717051":{"id":"w209717051","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"amenity":"place_of_worship","area":"yes","building":"yes","denomination":"baptist","ele":"251","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417886","gnis:state_id":"26","name":"Calvary Missionary Baptist Church","religion":"christian"},"nodes":["n2199109808","n2199109810","n2199109812","n2199109814","n2199109808"]},"w17966172":{"id":"w17966172","version":"3","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:23Z","tags":{"highway":"residential","name":"West Cushman Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Cushman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185960796","n185975064","n185964358","n185965023","n1475293222","n185975066","n185975067"]},"w17966975":{"id":"w17966975","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:06Z","tags":{"highway":"residential","name":"W Wheeler St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Wheeler","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312250:15312254","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978392","n185982163","n185964357","n185965021","n1475293261","n185982166"]},"n185960684":{"id":"n185960684","loc":[-85.622687,41.951885],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185960686":{"id":"n185960686","loc":[-85.622492,41.951901],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185978795":{"id":"n185978795","loc":[-85.6240991,41.954708],"version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{}},"n185978803":{"id":"n185978803","loc":[-85.623348,41.954547],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978806":{"id":"n185978806","loc":[-85.623123,41.954502],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978808":{"id":"n185978808","loc":[-85.622923,41.954469],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:34Z","tags":{}},"n185978810":{"id":"n185978810","loc":[-85.622787,41.954457],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978811":{"id":"n185978811","loc":[-85.622612,41.954458],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978813":{"id":"n185978813","loc":[-85.622368,41.954472],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n1819790545":{"id":"n1819790545","loc":[-85.6240295,41.9548949],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790621":{"id":"n1819790621","loc":[-85.6235789,41.954855],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790664":{"id":"n1819790664","loc":[-85.6238363,41.9549507],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790683":{"id":"n1819790683","loc":[-85.6224727,41.9545921],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790730":{"id":"n1819790730","loc":[-85.6227527,41.9545795],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790740":{"id":"n1819790740","loc":[-85.6240402,41.9550784],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790831":{"id":"n1819790831","loc":[-85.624126,41.9549986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790861":{"id":"n1819790861","loc":[-85.6231712,41.9546872],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790887":{"id":"n1819790887","loc":[-85.6242762,41.955206],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n2168544739":{"id":"n2168544739","loc":[-85.6249102,41.952801],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544740":{"id":"n2168544740","loc":[-85.6251859,41.9527564],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544741":{"id":"n2168544741","loc":[-85.6255515,41.9527921],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544742":{"id":"n2168544742","loc":[-85.626001,41.9529481],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544743":{"id":"n2168544743","loc":[-85.6265284,41.9529838],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544744":{"id":"n2168544744","loc":[-85.626942,41.9528857],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544745":{"id":"n2168544745","loc":[-85.6270918,41.9526851],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544746":{"id":"n2168544746","loc":[-85.6272117,41.95244],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544747":{"id":"n2168544747","loc":[-85.6271578,41.952226],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544748":{"id":"n2168544748","loc":[-85.6270019,41.9519719],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544749":{"id":"n2168544749","loc":[-85.6268221,41.9518382],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544750":{"id":"n2168544750","loc":[-85.6265284,41.951807],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544751":{"id":"n2168544751","loc":[-85.6256534,41.9518516],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544752":{"id":"n2168544752","loc":[-85.6253477,41.9518338],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n2168544753":{"id":"n2168544753","loc":[-85.6251139,41.9517669],"version":"1","changeset":"15132216","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-23T08:37:01Z","tags":{}},"n185955747":{"id":"n185955747","loc":[-85.620674,41.954709],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185960688":{"id":"n185960688","loc":[-85.621032,41.951913],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:21Z","tags":{}},"n185972054":{"id":"n185972054","loc":[-85.6186728,41.9547335],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185978814":{"id":"n185978814","loc":[-85.6201708,41.9547403],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n1819790532":{"id":"n1819790532","loc":[-85.6244908,41.9555731],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790536":{"id":"n1819790536","loc":[-85.6217925,41.9583135],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790538":{"id":"n1819790538","loc":[-85.6233954,41.9600014],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790539":{"id":"n1819790539","loc":[-85.6204611,41.9562117],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790546":{"id":"n1819790546","loc":[-85.6210898,41.9567657],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790548":{"id":"n1819790548","loc":[-85.6202465,41.9562237],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790550":{"id":"n1819790550","loc":[-85.6250165,41.9560677],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790551":{"id":"n1819790551","loc":[-85.6227946,41.9597023],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790553":{"id":"n1819790553","loc":[-85.6215726,41.9584571],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790556":{"id":"n1819790556","loc":[-85.6196306,41.9573002],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790557":{"id":"n1819790557","loc":[-85.6209503,41.9563109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790558":{"id":"n1819790558","loc":[-85.6196939,41.9574085],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790561":{"id":"n1819790561","loc":[-85.621079,41.957751],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790562":{"id":"n1819790562","loc":[-85.6224255,41.9611417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790565":{"id":"n1819790565","loc":[-85.6232506,41.9604841],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790566":{"id":"n1819790566","loc":[-85.6190835,41.9562909],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790567":{"id":"n1819790567","loc":[-85.622227,41.9593028],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790569":{"id":"n1819790569","loc":[-85.620976,41.9591039],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790571":{"id":"n1819790571","loc":[-85.6212078,41.9565303],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790572":{"id":"n1819790572","loc":[-85.6235306,41.9595102],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790581":{"id":"n1819790581","loc":[-85.6235563,41.9579351],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790584":{"id":"n1819790584","loc":[-85.6230371,41.9574598],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790586":{"id":"n1819790586","loc":[-85.6211748,41.9564272],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790588":{"id":"n1819790588","loc":[-85.6226508,41.9601086],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790591":{"id":"n1819790591","loc":[-85.6218032,41.9607468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790593":{"id":"n1819790593","loc":[-85.6207915,41.9618735],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790596":{"id":"n1819790596","loc":[-85.6252955,41.9567858],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790598":{"id":"n1819790598","loc":[-85.6196618,41.9568939],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790600":{"id":"n1819790600","loc":[-85.6224416,41.9587084],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790602":{"id":"n1819790602","loc":[-85.6217442,41.9558641],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790603":{"id":"n1819790603","loc":[-85.6213355,41.9592116],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790604":{"id":"n1819790604","loc":[-85.622801,41.9573042],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790608":{"id":"n1819790608","loc":[-85.6199729,41.9574325],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790610":{"id":"n1819790610","loc":[-85.6195555,41.9557165],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790611":{"id":"n1819790611","loc":[-85.622978,41.9586007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790613":{"id":"n1819790613","loc":[-85.6253963,41.9562636],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790614":{"id":"n1819790614","loc":[-85.6235252,41.9580342],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790616":{"id":"n1819790616","loc":[-85.6232988,41.9596305],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790617":{"id":"n1819790617","loc":[-85.6226776,41.9598732],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790619":{"id":"n1819790619","loc":[-85.625553,41.9561794],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790620":{"id":"n1819790620","loc":[-85.6235574,41.959231],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790624":{"id":"n1819790624","loc":[-85.6228429,41.9573726],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790626":{"id":"n1819790626","loc":[-85.6193785,41.9556766],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790628":{"id":"n1819790628","loc":[-85.620092,41.9554253],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790630":{"id":"n1819790630","loc":[-85.6226658,41.9604402],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790638":{"id":"n1819790638","loc":[-85.6219964,41.9602561],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790640":{"id":"n1819790640","loc":[-85.6232731,41.9599969],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790643":{"id":"n1819790643","loc":[-85.6247698,41.9568895],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790650":{"id":"n1819790650","loc":[-85.6216412,41.9550149],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790652":{"id":"n1819790652","loc":[-85.6224952,41.9603918],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790656":{"id":"n1819790656","loc":[-85.61918,41.9555649],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790661":{"id":"n1819790661","loc":[-85.6200169,41.955505],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790662":{"id":"n1819790662","loc":[-85.6217389,41.9563149],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790666":{"id":"n1819790666","loc":[-85.6229566,41.9598373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790667":{"id":"n1819790667","loc":[-85.6209117,41.9609189],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790669":{"id":"n1819790669","loc":[-85.6252311,41.9562353],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790670":{"id":"n1819790670","loc":[-85.6209758,41.961868],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790672":{"id":"n1819790672","loc":[-85.6209557,41.9589078],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790673":{"id":"n1819790673","loc":[-85.6190352,41.9561393],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790675":{"id":"n1819790675","loc":[-85.6236432,41.9586685],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790676":{"id":"n1819790676","loc":[-85.6194901,41.9565389],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790678":{"id":"n1819790678","loc":[-85.6219266,41.9582417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790680":{"id":"n1819790680","loc":[-85.6208258,41.9557211],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790681":{"id":"n1819790681","loc":[-85.6212024,41.9613212],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790682":{"id":"n1819790682","loc":[-85.624877,41.9559401],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790684":{"id":"n1819790684","loc":[-85.6206499,41.9583693],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790699":{"id":"n1819790699","loc":[-85.6215243,41.956279],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790701":{"id":"n1819790701","loc":[-85.6246625,41.9559321],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790703":{"id":"n1819790703","loc":[-85.6230478,41.9585089],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790708":{"id":"n1819790708","loc":[-85.6211102,41.9575402],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790710":{"id":"n1819790710","loc":[-85.6215082,41.9548468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790711":{"id":"n1819790711","loc":[-85.6206552,41.9586007],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790713":{"id":"n1819790713","loc":[-85.6215404,41.9549705],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790715":{"id":"n1819790715","loc":[-85.6216906,41.955521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790717":{"id":"n1819790717","loc":[-85.6215404,41.9547391],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790722":{"id":"n1819790722","loc":[-85.6219964,41.9599131],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790723":{"id":"n1819790723","loc":[-85.622286,41.9606989],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790725":{"id":"n1819790725","loc":[-85.6228439,41.9572005],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790727":{"id":"n1819790727","loc":[-85.6202518,41.9554458],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790728":{"id":"n1819790728","loc":[-85.623434,41.9575276],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790729":{"id":"n1819790729","loc":[-85.6234287,41.9568576],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790732":{"id":"n1819790732","loc":[-85.6229566,41.9571369],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790733":{"id":"n1819790733","loc":[-85.6225543,41.9590275],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790734":{"id":"n1819790734","loc":[-85.6232892,41.9583135],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790736":{"id":"n1819790736","loc":[-85.622977,41.9608551],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790737":{"id":"n1819790737","loc":[-85.624008,41.9569533],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790741":{"id":"n1819790741","loc":[-85.6212775,41.9608545],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790742":{"id":"n1819790742","loc":[-85.6231282,41.9569932],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790743":{"id":"n1819790743","loc":[-85.6224523,41.9591831],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790744":{"id":"n1819790744","loc":[-85.6210951,41.9610819],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790745":{"id":"n1819790745","loc":[-85.6220114,41.960544],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790755":{"id":"n1819790755","loc":[-85.6216369,41.9553854],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790757":{"id":"n1819790757","loc":[-85.6209986,41.9592709],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790758":{"id":"n1819790758","loc":[-85.6200437,41.9563468],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790764":{"id":"n1819790764","loc":[-85.6219363,41.9596823],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790765":{"id":"n1819790765","loc":[-85.6237612,41.9568496],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790769":{"id":"n1819790769","loc":[-85.6212389,41.9593433],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790771":{"id":"n1819790771","loc":[-85.6210726,41.9560123],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790772":{"id":"n1819790772","loc":[-85.6212711,41.9561838],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790776":{"id":"n1819790776","loc":[-85.6234437,41.9577795],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790777":{"id":"n1819790777","loc":[-85.6212502,41.9618599],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790783":{"id":"n1819790783","loc":[-85.6216895,41.9610585],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790784":{"id":"n1819790784","loc":[-85.6200115,41.9556367],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790785":{"id":"n1819790785","loc":[-85.6210576,41.9573002],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790786":{"id":"n1819790786","loc":[-85.621138,41.9576632],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790788":{"id":"n1819790788","loc":[-85.6207733,41.9578946],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790789":{"id":"n1819790789","loc":[-85.6200705,41.9571566],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790790":{"id":"n1819790790","loc":[-85.6245337,41.9558443],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790792":{"id":"n1819790792","loc":[-85.621932,41.9608066],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790793":{"id":"n1819790793","loc":[-85.6233578,41.9581385],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790794":{"id":"n1819790794","loc":[-85.6204557,41.9555136],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790797":{"id":"n1819790797","loc":[-85.6235038,41.9576074],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790800":{"id":"n1819790800","loc":[-85.6214438,41.9607508],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790801":{"id":"n1819790801","loc":[-85.623492,41.9602129],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790802":{"id":"n1819790802","loc":[-85.6216691,41.9546553],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790803":{"id":"n1819790803","loc":[-85.6231057,41.9586851],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790804":{"id":"n1819790804","loc":[-85.6209224,41.9578673],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790813":{"id":"n1819790813","loc":[-85.620092,41.9572962],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790814":{"id":"n1819790814","loc":[-85.6216691,41.9552218],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790816":{"id":"n1819790816","loc":[-85.6216144,41.9609668],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790818":{"id":"n1819790818","loc":[-85.6216906,41.9557324],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790820":{"id":"n1819790820","loc":[-85.6192069,41.9564186],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790823":{"id":"n1819790823","loc":[-85.6211155,41.9566027],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790825":{"id":"n1819790825","loc":[-85.6233106,41.9569294],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790839":{"id":"n1819790839","loc":[-85.625671,41.9564986],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790842":{"id":"n1819790842","loc":[-85.6235252,41.9567379],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790844":{"id":"n1819790844","loc":[-85.6253813,41.9566342],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790847":{"id":"n1819790847","loc":[-85.6200963,41.9567702],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790849":{"id":"n1819790849","loc":[-85.6238031,41.9587449],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790851":{"id":"n1819790851","loc":[-85.6234984,41.9584571],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790856":{"id":"n1819790856","loc":[-85.6242226,41.9570092],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790865":{"id":"n1819790865","loc":[-85.6200265,41.9569458],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790869":{"id":"n1819790869","loc":[-85.6230049,41.9601245],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790871":{"id":"n1819790871","loc":[-85.6190727,41.9558322],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790873":{"id":"n1819790873","loc":[-85.6217442,41.9550104],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790875":{"id":"n1819790875","loc":[-85.6208044,41.9587808],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790879":{"id":"n1819790879","loc":[-85.6198444,41.9574484],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790883":{"id":"n1819790883","loc":[-85.623713,41.9588719],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790885":{"id":"n1819790885","loc":[-85.6223289,41.9605075],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790889":{"id":"n1819790889","loc":[-85.6208044,41.9562437],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790893":{"id":"n1819790893","loc":[-85.6218183,41.9559684],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790906":{"id":"n1819790906","loc":[-85.6214052,41.958697],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790913":{"id":"n1819790913","loc":[-85.6209981,41.9609957],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790917":{"id":"n1819790917","loc":[-85.6216208,41.9604436],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790919":{"id":"n1819790919","loc":[-85.6209406,41.9616373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790920":{"id":"n1819790920","loc":[-85.6221948,41.9583334],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790922":{"id":"n1819790922","loc":[-85.6216681,41.9615292],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790924":{"id":"n1819790924","loc":[-85.6210147,41.9570489],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790929":{"id":"n1819790929","loc":[-85.6193678,41.955521],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"w17964707":{"id":"w17964707","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:31:34Z","tags":{"highway":"residential","name":"11th Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"11th","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314405","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185960682","n185960684","n185960686","n185960688","n185960690"]},"w201484345":{"id":"w201484345","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"bridge":"yes","highway":"residential","name":"E Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978791","n185978795"]},"w201484348":{"id":"w201484348","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"highway":"residential","name":"E Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978795","n185978800","n185978803","n185978806","n185978808","n185978810","n185978811","n185978813","n185955747","n185978814","n185972054","n185978817"]},"w170843845":{"id":"w170843845","version":"3","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:23Z","tags":{"ele":"244","gnis:county_id":"149","gnis:created":"04/14/1980","gnis:feature_id":"1624607","gnis:state_id":"26","landuse":"reservoir","name":"Hoffman Pond","natural":"water","source":"Bing"},"nodes":["n1819790732","n1819790742","n1819790825","n1819790729","n1819790842","n1819790765","n1819790737","n1819790856","n1819790643","n1819790596","n1819790844","n1819790839","n1819849190","n1819790619","n1819790613","n1819790669","n1819790550","n1819790682","n1819790701","n1819790790","n1819790532","n1819790887","n1819790740","n1819790831","n1819790545","n1819790664","n1819790621","n1819790861","n1819790730","n1819790683","n1819790802","n1819790717","n1819790710","n1819790713","n1819790650","n1819790873","n1819790814","n1819790755","n1819790715","n1819790818","n1819790602","n1819790893","n1819790662","n1819790699","n1819790772","n1819790771","n1819790680","n1819790794","n1819790727","n1819790628","n1819790661","n1819790784","n1819790610","n1819790626","n1819790929","n1819790656","n1819790871","n1819790673","n1819790566","n1819790820","n1819790676","n1819790598","n1819790556","n1819790558","n1819790879","n1819790608","n1819790813","n1819790789","n1819790865","n1819790847","n1819790758","n1819790548","n1819790539","n1819790889","n1819790557","n1819790586","n1819790571","n1819790823","n1819790546","n1819790924","n1819790785","n1819790708","n1819790786","n1819790561","n1819790804","n1819790788","n1819790684","n1819790711","n1819790875","n1819790672","n1819790569","n1819790757","n1819790769","n1819790603","n1819790906","n1819790553","n1819790536","n1819790678","n1819790920","n1819790600","n1819790733","n1819790743","n1819790567","n1819790764","n1819790722","n1819790638","n1819790917","n1819790800","n1819790741","n1819790667","n1819790913","n1819790744","n1819790816","n1819790591","n1819790745","n1819790885","n1819790652","n1819790588","n1819790617","n1819790551","n1819790666","n1819790869","n1819790630","n1819790723","n1819790792","n1819790783","n1819790681","n1819790919","n1819790593","n1819790670","n1819790777","n1819790922","n1819790562","n1819790736","n1819790565","n1819790801","n1819790538","n1819790640","n1819790616","n1819790572","n1819790620","n1819790883","n1819790849","n1819790675","n1819790851","n1819790803","n1819790611","n1819790703","n1819790734","n1819790793","n1819790614","n1819790581","n1819790776","n1819790797","n1819790728","n1819790584","n1819790624","n1819790604","n1819790725","n1819790732"]},"w206805240":{"id":"w206805240","version":"2","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:50Z","tags":{"waterway":"river"},"nodes":["n2168544738","n2168544739","n2168544740","n2168544741","n2168544742","n2168544743","n2168544744","n2168544745","n2168544746","n2168544747","n2168544748","n2168544749","n2168544750","n2168544751","n2168544752","n2168544753","n1819848944"]},"n394490429":{"id":"n394490429","loc":[-85.643883,41.954365],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n185953421":{"id":"n185953421","loc":[-85.641876,41.954946],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185953417":{"id":"n185953417","loc":[-85.6418306,41.9551597],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185977233":{"id":"n185977233","loc":[-85.642987,41.95486],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:49Z","tags":{}},"n185977232":{"id":"n185977232","loc":[-85.642894,41.9547842],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n1475293244":{"id":"n1475293244","loc":[-85.63974,41.9521543],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1819848890":{"id":"n1819848890","loc":[-85.6410004,41.9552822],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848965":{"id":"n1819848965","loc":[-85.6409795,41.9553892],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:52Z","tags":{}},"n2189015846":{"id":"n2189015846","loc":[-85.6420457,41.9549528],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015849":{"id":"n2189015849","loc":[-85.6425867,41.9551392],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015852":{"id":"n2189015852","loc":[-85.6426877,41.9549771],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2199109816":{"id":"n2199109816","loc":[-85.6399215,41.9540925],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109818":{"id":"n2199109818","loc":[-85.6399182,41.9538236],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109820":{"id":"n2199109820","loc":[-85.6402201,41.9538216],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109822":{"id":"n2199109822","loc":[-85.640222,41.9539771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109825":{"id":"n2199109825","loc":[-85.6402904,41.9539766],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109827":{"id":"n2199109827","loc":[-85.6402918,41.95409],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109829":{"id":"n2199109829","loc":[-85.6395845,41.9544626],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109831":{"id":"n2199109831","loc":[-85.6395792,41.9540671],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109833":{"id":"n2199109833","loc":[-85.6397173,41.9540661],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109835":{"id":"n2199109835","loc":[-85.6397226,41.9544616],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109837":{"id":"n2199109837","loc":[-85.6399641,41.9545058],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109839":{"id":"n2199109839","loc":[-85.6399637,41.9541859],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109841":{"id":"n2199109841","loc":[-85.6401098,41.9541858],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109843":{"id":"n2199109843","loc":[-85.64011,41.9543272],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109845":{"id":"n2199109845","loc":[-85.6400783,41.9543273],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109847":{"id":"n2199109847","loc":[-85.6400785,41.9545058],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109853":{"id":"n2199109853","loc":[-85.6396184,41.9554049],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109855":{"id":"n2199109855","loc":[-85.6396825,41.9553713],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n185949745":{"id":"n185949745","loc":[-85.6442727,41.9553112],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185949748":{"id":"n185949748","loc":[-85.6448804,41.9555238],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185949755":{"id":"n185949755","loc":[-85.6420011,41.9603536],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{}},"n185949763":{"id":"n185949763","loc":[-85.6408843,41.9555822],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185949765":{"id":"n185949765","loc":[-85.6414548,41.9557751],"version":"3","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:03Z","tags":{}},"n185952158":{"id":"n185952158","loc":[-85.640066,41.956854],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185952160":{"id":"n185952160","loc":[-85.639848,41.957229],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185952161":{"id":"n185952161","loc":[-85.6396089,41.9576192],"version":"3","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{}},"n185952163":{"id":"n185952163","loc":[-85.63892,41.957957],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:10Z","tags":{}},"n185953413":{"id":"n185953413","loc":[-85.64162,41.955475],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:56Z","tags":{}},"n185971651":{"id":"n185971651","loc":[-85.6440766,41.9543462],"version":"3","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:55Z","tags":{}},"n185977234":{"id":"n185977234","loc":[-85.645044,41.955581],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:49Z","tags":{}},"n394490395":{"id":"n394490395","loc":[-85.657336,41.936762],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490396":{"id":"n394490396","loc":[-85.653896,41.936978],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490397":{"id":"n394490397","loc":[-85.653732,41.937386],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490398":{"id":"n394490398","loc":[-85.65182,41.937378],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490399":{"id":"n394490399","loc":[-85.651843,41.938445],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490400":{"id":"n394490400","loc":[-85.652536,41.938447],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490401":{"id":"n394490401","loc":[-85.652533,41.938901],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490402":{"id":"n394490402","loc":[-85.652084,41.9389],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490403":{"id":"n394490403","loc":[-85.6521,41.939627],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490404":{"id":"n394490404","loc":[-85.652301,41.939628],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490405":{"id":"n394490405","loc":[-85.652302,41.939755],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490406":{"id":"n394490406","loc":[-85.652783,41.939747],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490407":{"id":"n394490407","loc":[-85.652835,41.94112],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490408":{"id":"n394490408","loc":[-85.651968,41.941123],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490409":{"id":"n394490409","loc":[-85.651983,41.941969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490410":{"id":"n394490410","loc":[-85.652908,41.941961],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490411":{"id":"n394490411","loc":[-85.65292,41.94278],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490412":{"id":"n394490412","loc":[-85.651698,41.942816],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490413":{"id":"n394490413","loc":[-85.651509,41.942823],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490414":{"id":"n394490414","loc":[-85.651272,41.942837],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490415":{"id":"n394490415","loc":[-85.651272,41.943325],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490416":{"id":"n394490416","loc":[-85.65122,41.944053],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490417":{"id":"n394490417","loc":[-85.651193,41.944449],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490418":{"id":"n394490418","loc":[-85.651088,41.944969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490419":{"id":"n394490419","loc":[-85.650949,41.945554],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490420":{"id":"n394490420","loc":[-85.650907,41.945719],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:28Z","tags":{}},"n394490421":{"id":"n394490421","loc":[-85.650808,41.946016],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490422":{"id":"n394490422","loc":[-85.650712,41.946516],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490423":{"id":"n394490423","loc":[-85.650493,41.947166],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490424":{"id":"n394490424","loc":[-85.650626,41.947213],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490425":{"id":"n394490425","loc":[-85.650201,41.948109],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490426":{"id":"n394490426","loc":[-85.649868,41.948797],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490427":{"id":"n394490427","loc":[-85.649669,41.949161],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490428":{"id":"n394490428","loc":[-85.64659,41.954067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490430":{"id":"n394490430","loc":[-85.644034,41.95444],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490431":{"id":"n394490431","loc":[-85.644248,41.954507],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490432":{"id":"n394490432","loc":[-85.64491,41.954481],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490433":{"id":"n394490433","loc":[-85.645213,41.954433],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490434":{"id":"n394490434","loc":[-85.645426,41.954477],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490435":{"id":"n394490435","loc":[-85.6458,41.954704],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490436":{"id":"n394490436","loc":[-85.64605,41.954804],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:29Z","tags":{}},"n394490437":{"id":"n394490437","loc":[-85.646125,41.954817],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490438":{"id":"n394490438","loc":[-85.646002,41.954997],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490439":{"id":"n394490439","loc":[-85.645764,41.955366],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490440":{"id":"n394490440","loc":[-85.645525,41.955734],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490441":{"id":"n394490441","loc":[-85.64443,41.957424],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490442":{"id":"n394490442","loc":[-85.641712,41.961723],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490443":{"id":"n394490443","loc":[-85.640747,41.963246],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490444":{"id":"n394490444","loc":[-85.637803,41.967894],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490445":{"id":"n394490445","loc":[-85.637673,41.967861],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490446":{"id":"n394490446","loc":[-85.636637,41.969275],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490447":{"id":"n394490447","loc":[-85.634923,41.969269],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490448":{"id":"n394490448","loc":[-85.634893,41.968537],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490449":{"id":"n394490449","loc":[-85.634544,41.96927],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490450":{"id":"n394490450","loc":[-85.630835,41.969274],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490451":{"id":"n394490451","loc":[-85.630834,41.968348],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490452":{"id":"n394490452","loc":[-85.630857,41.968179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490453":{"id":"n394490453","loc":[-85.630924,41.968044],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490454":{"id":"n394490454","loc":[-85.631004,41.967925],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490455":{"id":"n394490455","loc":[-85.631143,41.967811],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490456":{"id":"n394490456","loc":[-85.631311,41.967736],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490457":{"id":"n394490457","loc":[-85.631595,41.967693],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490458":{"id":"n394490458","loc":[-85.63325,41.967702],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490459":{"id":"n394490459","loc":[-85.633247,41.967021],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490460":{"id":"n394490460","loc":[-85.634858,41.967021],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490461":{"id":"n394490461","loc":[-85.634865,41.967711],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490462":{"id":"n394490462","loc":[-85.634884,41.968231],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490463":{"id":"n394490463","loc":[-85.636559,41.963867],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490464":{"id":"n394490464","loc":[-85.634832,41.963866],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490465":{"id":"n394490465","loc":[-85.63481,41.961899],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490466":{"id":"n394490466","loc":[-85.637219,41.961842],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490467":{"id":"n394490467","loc":[-85.637837,41.960019],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490468":{"id":"n394490468","loc":[-85.637459,41.960022],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490469":{"id":"n394490469","loc":[-85.635295,41.959987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490470":{"id":"n394490470","loc":[-85.634783,41.959979],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490471":{"id":"n394490471","loc":[-85.634776,41.959834],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490472":{"id":"n394490472","loc":[-85.634767,41.959009],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490473":{"id":"n394490473","loc":[-85.634763,41.958292],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490474":{"id":"n394490474","loc":[-85.633346,41.958287],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490475":{"id":"n394490475","loc":[-85.632128,41.9583],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:30Z","tags":{}},"n394490476":{"id":"n394490476","loc":[-85.631414,41.958318],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490477":{"id":"n394490477","loc":[-85.63137,41.959033],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490478":{"id":"n394490478","loc":[-85.631325,41.959753],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490479":{"id":"n394490479","loc":[-85.631494,41.95977],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490480":{"id":"n394490480","loc":[-85.631456,41.960673],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490481":{"id":"n394490481","loc":[-85.631421,41.961494],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490482":{"id":"n394490482","loc":[-85.631404,41.961887],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490483":{"id":"n394490483","loc":[-85.631401,41.961968],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490484":{"id":"n394490484","loc":[-85.630962,41.961967],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490485":{"id":"n394490485","loc":[-85.6299,41.961973],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490486":{"id":"n394490486","loc":[-85.624929,41.962002],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490487":{"id":"n394490487","loc":[-85.623333,41.961987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490488":{"id":"n394490488","loc":[-85.621894,41.963956],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490489":{"id":"n394490489","loc":[-85.62131,41.963727],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490490":{"id":"n394490490","loc":[-85.621216,41.963868],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490491":{"id":"n394490491","loc":[-85.620356,41.965119],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490492":{"id":"n394490492","loc":[-85.620848,41.965341],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490493":{"id":"n394490493","loc":[-85.620684,41.965558],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490494":{"id":"n394490494","loc":[-85.620621,41.965658],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490495":{"id":"n394490495","loc":[-85.618165,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490496":{"id":"n394490496","loc":[-85.618071,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490497":{"id":"n394490497","loc":[-85.617986,41.965759],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490498":{"id":"n394490498","loc":[-85.605673,41.965764],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490499":{"id":"n394490499","loc":[-85.605668,41.963548],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490500":{"id":"n394490500","loc":[-85.605664,41.962094],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490501":{"id":"n394490501","loc":[-85.595828,41.962159],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490502":{"id":"n394490502","loc":[-85.587869,41.962169],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490503":{"id":"n394490503","loc":[-85.586289,41.962179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490504":{"id":"n394490504","loc":[-85.583774,41.962178],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490505":{"id":"n394490505","loc":[-85.583774,41.961789],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490506":{"id":"n394490506","loc":[-85.581303,41.961783],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490507":{"id":"n394490507","loc":[-85.581304,41.961616],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490508":{"id":"n394490508","loc":[-85.581292,41.961616],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490509":{"id":"n394490509","loc":[-85.581247,41.959244],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490510":{"id":"n394490510","loc":[-85.581245,41.958394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490511":{"id":"n394490511","loc":[-85.581276,41.958372],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:31Z","tags":{}},"n394490512":{"id":"n394490512","loc":[-85.581302,41.958353],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490513":{"id":"n394490513","loc":[-85.581376,41.9583],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490514":{"id":"n394490514","loc":[-85.582256,41.957663],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490515":{"id":"n394490515","loc":[-85.585299,41.955483],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490516":{"id":"n394490516","loc":[-85.585588,41.955331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490517":{"id":"n394490517","loc":[-85.586053,41.955163],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490518":{"id":"n394490518","loc":[-85.58632,41.955076],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490519":{"id":"n394490519","loc":[-85.586478,41.955025],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490520":{"id":"n394490520","loc":[-85.58692,41.954947],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490521":{"id":"n394490521","loc":[-85.587327,41.954914],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490522":{"id":"n394490522","loc":[-85.587345,41.954913],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490523":{"id":"n394490523","loc":[-85.587358,41.954913],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490524":{"id":"n394490524","loc":[-85.58963,41.954877],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490525":{"id":"n394490525","loc":[-85.591077,41.954865],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490526":{"id":"n394490526","loc":[-85.594824,41.954843],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490527":{"id":"n394490527","loc":[-85.594804,41.95331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490528":{"id":"n394490528","loc":[-85.599336,41.95331],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490529":{"id":"n394490529","loc":[-85.599336,41.954825],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490530":{"id":"n394490530","loc":[-85.597828,41.954839],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490531":{"id":"n394490531","loc":[-85.597833,41.95614],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490532":{"id":"n394490532","loc":[-85.596586,41.956151],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490533":{"id":"n394490533","loc":[-85.596586,41.956394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490534":{"id":"n394490534","loc":[-85.595933,41.956394],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490535":{"id":"n394490535","loc":[-85.595933,41.958176],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490536":{"id":"n394490536","loc":[-85.597635,41.958179],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490537":{"id":"n394490537","loc":[-85.597717,41.958177],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490538":{"id":"n394490538","loc":[-85.601671,41.958194],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490539":{"id":"n394490539","loc":[-85.605619,41.958194],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490540":{"id":"n394490540","loc":[-85.608054,41.958187],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:32Z","tags":{}},"n394490542":{"id":"n394490542","loc":[-85.6080762,41.9547864],"version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:47:47Z","tags":{}},"n394490545":{"id":"n394490545","loc":[-85.6104354,41.9548263],"version":"2","changeset":"12747630","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-16T08:22:38Z","tags":{}},"n394490546":{"id":"n394490546","loc":[-85.610274,41.951106],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490547":{"id":"n394490547","loc":[-85.610278,41.950829],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490548":{"id":"n394490548","loc":[-85.610309,41.948377],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490549":{"id":"n394490549","loc":[-85.610314,41.947986],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490550":{"id":"n394490550","loc":[-85.610464,41.947985],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490551":{"id":"n394490551","loc":[-85.610447,41.947468],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490552":{"id":"n394490552","loc":[-85.612469,41.947471],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490553":{"id":"n394490553","loc":[-85.612494,41.945576],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490554":{"id":"n394490554","loc":[-85.610292,41.94558],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490555":{"id":"n394490555","loc":[-85.608412,41.945625],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490556":{"id":"n394490556","loc":[-85.608412,41.943036],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490557":{"id":"n394490557","loc":[-85.608702,41.943087],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490558":{"id":"n394490558","loc":[-85.609196,41.943224],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490559":{"id":"n394490559","loc":[-85.609571,41.943263],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490560":{"id":"n394490560","loc":[-85.610116,41.943295],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490561":{"id":"n394490561","loc":[-85.610273,41.943275],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490562":{"id":"n394490562","loc":[-85.611339,41.943075],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490563":{"id":"n394490563","loc":[-85.611575,41.942997],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490564":{"id":"n394490564","loc":[-85.611847,41.942849],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490565":{"id":"n394490565","loc":[-85.612164,41.942568],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490566":{"id":"n394490566","loc":[-85.612341,41.942529],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490567":{"id":"n394490567","loc":[-85.612562,41.942524],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490568":{"id":"n394490568","loc":[-85.612768,41.942546],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490569":{"id":"n394490569","loc":[-85.612938,41.942633],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490570":{"id":"n394490570","loc":[-85.6131,41.942782],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490571":{"id":"n394490571","loc":[-85.613299,41.942919],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490572":{"id":"n394490572","loc":[-85.613498,41.942996],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490573":{"id":"n394490573","loc":[-85.614698,41.942842],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490574":{"id":"n394490574","loc":[-85.615288,41.942698],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490575":{"id":"n394490575","loc":[-85.616054,41.942693],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490576":{"id":"n394490576","loc":[-85.61603,41.942175],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490577":{"id":"n394490577","loc":[-85.616004,41.941741],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490578":{"id":"n394490578","loc":[-85.615994,41.940156],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:33Z","tags":{}},"n394490579":{"id":"n394490579","loc":[-85.615144,41.940159],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490580":{"id":"n394490580","loc":[-85.614915,41.940161],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490582":{"id":"n394490582","loc":[-85.614875,41.938532],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490583":{"id":"n394490583","loc":[-85.616167,41.938787],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490585":{"id":"n394490585","loc":[-85.616176,41.938589],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490586":{"id":"n394490586","loc":[-85.614537,41.938282],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490588":{"id":"n394490588","loc":[-85.610141,41.937459],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490589":{"id":"n394490589","loc":[-85.610172,41.937298],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490590":{"id":"n394490590","loc":[-85.609918,41.935495],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490592":{"id":"n394490592","loc":[-85.610092,41.935451],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490594":{"id":"n394490594","loc":[-85.610681,41.935247],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490595":{"id":"n394490595","loc":[-85.611446,41.934955],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490596":{"id":"n394490596","loc":[-85.612057,41.934696],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490598":{"id":"n394490598","loc":[-85.613256,41.934084],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490599":{"id":"n394490599","loc":[-85.613948,41.933682],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490601":{"id":"n394490601","loc":[-85.61436,41.933417],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490602":{"id":"n394490602","loc":[-85.614638,41.933212],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490604":{"id":"n394490604","loc":[-85.615249,41.9332],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490605":{"id":"n394490605","loc":[-85.618218,41.933223],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490607":{"id":"n394490607","loc":[-85.618241,41.933479],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490608":{"id":"n394490608","loc":[-85.618257,41.93365],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490609":{"id":"n394490609","loc":[-85.618298,41.935067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490611":{"id":"n394490611","loc":[-85.619791,41.935067],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490612":{"id":"n394490612","loc":[-85.619794,41.933301],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490613":{"id":"n394490613","loc":[-85.619795,41.932692],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490614":{"id":"n394490614","loc":[-85.619729,41.929517],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490615":{"id":"n394490615","loc":[-85.619801,41.929305],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490616":{"id":"n394490616","loc":[-85.619809,41.927391],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490617":{"id":"n394490617","loc":[-85.620883,41.927378],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490618":{"id":"n394490618","loc":[-85.620988,41.927368],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490619":{"id":"n394490619","loc":[-85.621076,41.927368],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490620":{"id":"n394490620","loc":[-85.621156,41.927376],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490621":{"id":"n394490621","loc":[-85.621685,41.92737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490622":{"id":"n394490622","loc":[-85.624716,41.927359],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490623":{"id":"n394490623","loc":[-85.625308,41.92737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:34Z","tags":{}},"n394490624":{"id":"n394490624","loc":[-85.625655,41.927377],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490625":{"id":"n394490625","loc":[-85.625093,41.925591],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490626":{"id":"n394490626","loc":[-85.625174,41.92559],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490627":{"id":"n394490627","loc":[-85.625249,41.925597],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490628":{"id":"n394490628","loc":[-85.625532,41.925604],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490629":{"id":"n394490629","loc":[-85.625761,41.925597],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490630":{"id":"n394490630","loc":[-85.625955,41.926153],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490631":{"id":"n394490631","loc":[-85.626209,41.926155],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490632":{"id":"n394490632","loc":[-85.627757,41.926151],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490633":{"id":"n394490633","loc":[-85.627825,41.926298],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490634":{"id":"n394490634","loc":[-85.627994,41.926315],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490635":{"id":"n394490635","loc":[-85.628049,41.927196],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490636":{"id":"n394490636","loc":[-85.62949,41.927221],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490637":{"id":"n394490637","loc":[-85.629602,41.927277],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490638":{"id":"n394490638","loc":[-85.6297102,41.9273279],"version":"2","changeset":"12805153","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-08-21T08:30:02Z","tags":{}},"n394490639":{"id":"n394490639","loc":[-85.630958,41.927398],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:06:35Z","tags":{}},"n394490699":{"id":"n394490699","loc":[-85.632741,41.927388],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490700":{"id":"n394490700","loc":[-85.632997,41.927391],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490701":{"id":"n394490701","loc":[-85.633149,41.927393],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490702":{"id":"n394490702","loc":[-85.633334,41.927393],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490703":{"id":"n394490703","loc":[-85.633468,41.927561],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490704":{"id":"n394490704","loc":[-85.633563,41.927755],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490705":{"id":"n394490705","loc":[-85.633662,41.928192],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490706":{"id":"n394490706","loc":[-85.633679,41.928807],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490707":{"id":"n394490707","loc":[-85.633687,41.929107],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490708":{"id":"n394490708","loc":[-85.633927,41.929109],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490709":{"id":"n394490709","loc":[-85.634126,41.929111],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490710":{"id":"n394490710","loc":[-85.634207,41.92911],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490711":{"id":"n394490711","loc":[-85.634323,41.929111],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490712":{"id":"n394490712","loc":[-85.636712,41.929128],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490713":{"id":"n394490713","loc":[-85.63808,41.9291],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490714":{"id":"n394490714","loc":[-85.639213,41.929088],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490715":{"id":"n394490715","loc":[-85.639189,41.92852],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490716":{"id":"n394490716","loc":[-85.639204,41.925488],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490717":{"id":"n394490717","loc":[-85.644204,41.925452],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:55Z","tags":{}},"n394490718":{"id":"n394490718","loc":[-85.651425,41.925406],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490719":{"id":"n394490719","loc":[-85.651449,41.926321],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490720":{"id":"n394490720","loc":[-85.651451,41.926969],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490721":{"id":"n394490721","loc":[-85.651458,41.928052],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490722":{"id":"n394490722","loc":[-85.651446,41.928892],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490723":{"id":"n394490723","loc":[-85.651456,41.929447],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490724":{"id":"n394490724","loc":[-85.651707,41.929454],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490725":{"id":"n394490725","loc":[-85.652369,41.929473],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490726":{"id":"n394490726","loc":[-85.6525,41.929452],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490727":{"id":"n394490727","loc":[-85.654066,41.92946],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490728":{"id":"n394490728","loc":[-85.654816,41.92946],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490729":{"id":"n394490729","loc":[-85.654816,41.930337],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490730":{"id":"n394490730","loc":[-85.654587,41.930337],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490731":{"id":"n394490731","loc":[-85.654548,41.931072],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490732":{"id":"n394490732","loc":[-85.654538,41.931701],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490733":{"id":"n394490733","loc":[-85.654898,41.931689],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490734":{"id":"n394490734","loc":[-85.654898,41.932505],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490735":{"id":"n394490735","loc":[-85.654854,41.932514],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490736":{"id":"n394490736","loc":[-85.655497,41.932499],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490737":{"id":"n394490737","loc":[-85.656405,41.932493],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490738":{"id":"n394490738","loc":[-85.656422,41.933416],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n394490739":{"id":"n394490739","loc":[-85.657322,41.933438],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:56Z","tags":{}},"n1475293233":{"id":"n1475293233","loc":[-85.6385522,41.9585167],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:50Z","tags":{}},"n1475293242":{"id":"n1475293242","loc":[-85.64609,41.9540815],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293249":{"id":"n1475293249","loc":[-85.6358079,41.9692721],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293256":{"id":"n1475293256","loc":[-85.6387369,41.9581583],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:51Z","tags":{}},"n1475293259":{"id":"n1475293259","loc":[-85.6455882,41.9541138],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1475293266":{"id":"n1475293266","loc":[-85.6451008,41.9541821],"version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{}},"n1819800253":{"id":"n1819800253","loc":[-85.6134286,41.9429692],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:03:23Z","tags":{}},"n2114807558":{"id":"n2114807558","loc":[-85.6365609,41.963866],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{"railway":"level_crossing"}},"n2189015728":{"id":"n2189015728","loc":[-85.6383956,41.9590576],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015838":{"id":"n2189015838","loc":[-85.6435144,41.9563705],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015842":{"id":"n2189015842","loc":[-85.6415782,41.9557035],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015855":{"id":"n2189015855","loc":[-85.6440829,41.9554577],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2199109849":{"id":"n2199109849","loc":[-85.6393434,41.9565591],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109851":{"id":"n2199109851","loc":[-85.6393208,41.9565002],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:51Z","tags":{}},"n2199109857":{"id":"n2199109857","loc":[-85.6401986,41.955545],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109859":{"id":"n2199109859","loc":[-85.6402362,41.955587],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109861":{"id":"n2199109861","loc":[-85.6395958,41.9565675],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109863":{"id":"n2199109863","loc":[-85.639528,41.9566011],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"w209717053":{"id":"w209717053","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109829","n2199109831","n2199109833","n2199109835","n2199109829"]},"w17966415":{"id":"w17966415","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"access":"private","highway":"service","name":"Manufacturing Way","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Manufacturing","tiger:name_type":"Way","tiger:reviewed":"no"},"nodes":["n185971642","n185977232","n185977233","n185949745","n185949748","n185977234"]},"w209717054":{"id":"w209717054","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109837","n2199109839","n2199109841","n2199109843","n2199109845","n2199109847","n2199109837"]},"w208627214":{"id":"w208627214","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949755","n2189015728","n1475293233","n1475293256","n185952163","n185952161","n185952160","n185952158","n185949763","n1819848965","n1819848890","n185952156"]},"w17963817":{"id":"w17963817","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"access":"private","highway":"service","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949765","n185953413","n185953417","n185953421","n185953423"]},"w34369809":{"id":"w34369809","version":"7","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:19Z","tags":{"admin_level":"8","boundary":"administrative","landuse":"residential","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490395","n394490396","n394490397","n394490398","n394490399","n394490400","n394490401","n394490402","n394490403","n394490404","n394490405","n394490406","n394490407","n394490408","n394490409","n394490410","n394490411","n394490412","n394490413","n394490414","n394490415","n394490416","n394490417","n394490418","n394490419","n394490420","n394490421","n394490422","n394490423","n394490424","n394490425","n394490426","n394490427","n394490428","n1475293242","n1475293259","n1475293266","n394490429","n394490430","n394490431","n394490432","n394490433","n394490434","n394490435","n394490436","n394490437","n394490438","n394490439","n394490440","n394490441","n394490442","n394490443","n394490444","n394490445","n394490446","n1475293249","n394490447","n394490448","n394490449","n394490450","n394490451","n394490452","n394490453","n394490454","n394490455","n394490456","n394490457","n394490458","n394490459","n394490460","n394490461","n394490462","n2114807558","n394490463","n1475293226","n394490464","n394490465","n394490466","n394490467","n394490468","n394490469","n394490470","n394490471","n394490472","n394490473","n394490474","n394490475","n394490476","n394490477","n394490478","n394490479","n394490480","n394490481","n394490482","n394490483","n394490484","n394490485","n394490486","n394490487","n394490488","n394490489","n394490490","n394490491","n394490492","n394490493","n394490494","n394490495","n394490496","n394490497","n394490498","n394490499","n394490500","n394490501","n394490502","n394490503","n394490504","n394490505","n394490506","n394490507","n394490508","n394490509","n394490510","n394490511","n394490512","n394490513","n394490514","n394490515","n394490516","n394490517","n394490518","n394490519","n394490520","n394490521","n394490522","n394490523","n394490524","n394490525","n394490526","n394490527","n394490528","n394490529","n394490530","n394490531","n394490532","n394490533","n394490534","n394490535","n394490536","n394490537","n394490538","n394490539","n394490540","n394490542","n394490545","n394490546","n394490547","n394490548","n394490549","n394490550","n394490551","n394490552","n394490553","n394490554","n394490555","n394490556","n394490557","n394490558","n394490559","n394490560","n394490561","n394490562","n394490563","n394490564","n394490565","n394490566","n394490567","n394490568","n394490569","n394490570","n394490571","n1819800253","n394490572","n394490573","n394490574","n394490575","n394490576","n394490577","n394490578","n394490579","n394490580","n394490582","n394490583","n394490585","n394490586","n394490588","n394490589","n394490590","n394490592","n394490594","n394490595","n394490596","n394490598","n394490599","n394490601","n394490602","n394490604","n394490605","n394490607","n394490608","n394490609","n394490611","n394490612","n394490613","n394490614","n394490615","n394490616","n394490617","n394490618","n394490619","n394490620","n394490621","n394490622","n394490623","n394490624","n394490625","n394490626","n394490627","n394490628","n394490629","n394490630","n394490631","n394490632","n394490633","n394490634","n394490635","n394490636","n394490637","n394490638","n394490639","n394490699","n394490700","n394490701","n394490702","n394490703","n394490704","n394490705","n394490706","n394490707","n394490708","n394490709","n394490710","n394490711","n394490712","n394490713","n394490714","n394490715","n394490716","n394490717","n394490718","n394490719","n394490720","n394490721","n394490722","n394490723","n394490724","n394490725","n394490726","n394490727","n394490728","n394490729","n394490730","n394490731","n394490732","n394490733","n394490734","n394490735","n394490736","n394490737","n394490738","n394490739","n394490395"]},"w208627221":{"id":"w208627221","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189015838","n2189015842","n2189015846","n2189015849","n2189015852","n2189015855","n2189015838"]},"w209717052":{"id":"w209717052","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109816","n2199109818","n2199109820","n2199109822","n2199109825","n2199109827","n2199109816"]},"w134151784":{"id":"w134151784","version":"1","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:54:52Z","tags":{"bridge":"yes","highway":"residential","name":"W Hoffman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312195:15312958:15312207:15313273:15328372:15328373","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185971648","n185971651"]},"w209717055":{"id":"w209717055","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","landuse":"basin"},"nodes":["n2199109849","n2199109851","n2199109853","n2199109855","n2199109857","n2199109859","n2199109861","n2199109863","n2199109849"]},"w17967763":{"id":"w17967763","version":"2","changeset":"9619138","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2011-10-21T19:55:04Z","tags":{"highway":"residential","name":"Rock River Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Rock River","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312230:15312252:15335064:15333550","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093"},"nodes":["n1475293244","n185982166","n185975067","n185971637"]},"r134949":{"id":"r134949","version":"2","changeset":"14979874","user":"malenki","uid":"39504","visible":"true","timestamp":"2013-02-10T12:18:08Z","tags":{"admin_level":"8","border_type":"city","boundary":"administrative","is_in":"USA, Michigan","is_in:country":"USA","is_in:country_code":"US","is_in:iso_3166_2":"US:MI","is_in:state":"Michigan","is_in:state_code":"MI","name":"Three Rivers","place":"city","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)","tiger:CLASSFP":"C5","tiger:CPI":"Y","tiger:FUNCSTAT":"A","tiger:LSAD":"25","tiger:MTFCC":"G4110","tiger:NAME":"Three Rivers","tiger:NAMELSAD":"Three Rivers city","tiger:PCICBSA":"N","tiger:PCINECTA":"N","tiger:PLACEFP":"79760","tiger:PLACENS":"01627164","tiger:PLCIDFP":"2679760","tiger:STATEFP":"26","type":"boundary","wikipedia":"en:Three Rivers, Michigan"},"members":[{"id":"w34369809","type":"way","role":"outer"},{"id":"w34369821","type":"way","role":"outer"},{"id":"w34369822","type":"way","role":"outer"},{"id":"w34369823","type":"way","role":"outer"},{"id":"w34369824","type":"way","role":"outer"},{"id":"w34369825","type":"way","role":"outer"},{"id":"w34369826","type":"way","role":"outer"},{"id":"w34369810","type":"way","role":"inner"},{"id":"w34369811","type":"way","role":"inner"},{"id":"w34369812","type":"way","role":"inner"},{"id":"w34367079","type":"way","role":"inner"},{"id":"w34369814","type":"way","role":"inner"},{"id":"w34367080","type":"way","role":"inner"},{"id":"w34369815","type":"way","role":"inner"},{"id":"w34369820","type":"way","role":"inner"}]},"n1819848881":{"id":"n1819848881","loc":[-85.638562,41.9569965],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:49Z","tags":{}},"n1819848947":{"id":"n1819848947","loc":[-85.6384348,41.9576565],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:51Z","tags":{}},"n1819849044":{"id":"n1819849044","loc":[-85.6385749,41.9573345],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n2114807547":{"id":"n2114807547","loc":[-85.6384626,41.9583756],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807564":{"id":"n2114807564","loc":[-85.638535,41.9581283],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015691":{"id":"n2189015691","loc":[-85.6435584,41.9565243],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:49Z","tags":{}},"n2189015696":{"id":"n2189015696","loc":[-85.6435805,41.9566049],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015722":{"id":"n2189015722","loc":[-85.6435035,41.9567438],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015744":{"id":"n2189015744","loc":[-85.6437991,41.9569582],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015747":{"id":"n2189015747","loc":[-85.6433042,41.9567742],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015750":{"id":"n2189015750","loc":[-85.6433827,41.9566844],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015753":{"id":"n2189015753","loc":[-85.6430447,41.9565588],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015756":{"id":"n2189015756","loc":[-85.6431111,41.956451],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015759":{"id":"n2189015759","loc":[-85.6420247,41.956083],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015760":{"id":"n2189015760","loc":[-85.6419945,41.9561369],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015764":{"id":"n2189015764","loc":[-85.6413729,41.9558945],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015766":{"id":"n2189015766","loc":[-85.6412884,41.9560606],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015770":{"id":"n2189015770","loc":[-85.6411798,41.9560112],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015771":{"id":"n2189015771","loc":[-85.6410651,41.9562132],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015774":{"id":"n2189015774","loc":[-85.6409504,41.9561728],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015778":{"id":"n2189015778","loc":[-85.6407996,41.9564241],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015781":{"id":"n2189015781","loc":[-85.6406889,41.9563892],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015785":{"id":"n2189015785","loc":[-85.6404857,41.9567024],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015789":{"id":"n2189015789","loc":[-85.6406909,41.9567877],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015793":{"id":"n2189015793","loc":[-85.6405642,41.9570165],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015796":{"id":"n2189015796","loc":[-85.6415359,41.9573711],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015800":{"id":"n2189015800","loc":[-85.6411738,41.9579501],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015804":{"id":"n2189015804","loc":[-85.6411119,41.957921],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015808":{"id":"n2189015808","loc":[-85.6403186,41.9591751],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015909":{"id":"n2189015909","loc":[-85.6389293,41.9564636],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015926":{"id":"n2189015926","loc":[-85.6385431,41.9564617],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015929":{"id":"n2189015929","loc":[-85.6385457,41.9561823],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015932":{"id":"n2189015932","loc":[-85.6389319,41.9561843],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2199109865":{"id":"n2199109865","loc":[-85.6400768,41.956776],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109867":{"id":"n2199109867","loc":[-85.639902,41.9567153],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109869":{"id":"n2199109869","loc":[-85.640004,41.956553],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109871":{"id":"n2199109871","loc":[-85.6401788,41.9566137],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109873":{"id":"n2199109873","loc":[-85.6399316,41.9564506],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{"man_made":"water_tower"}},"n2199109876":{"id":"n2199109876","loc":[-85.6397689,41.9572354],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109878":{"id":"n2199109878","loc":[-85.6399229,41.9569826],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109880":{"id":"n2199109880","loc":[-85.639706,41.9569095],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109882":{"id":"n2199109882","loc":[-85.639552,41.9571623],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109884":{"id":"n2199109884","loc":[-85.6391028,41.9569517],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109886":{"id":"n2199109886","loc":[-85.6392876,41.956646],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109888":{"id":"n2199109888","loc":[-85.639484,41.9567117],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109889":{"id":"n2199109889","loc":[-85.6394322,41.9567973],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109890":{"id":"n2199109890","loc":[-85.6393718,41.9567771],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109891":{"id":"n2199109891","loc":[-85.6392387,41.9569972],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n1819848900":{"id":"n1819848900","loc":[-85.638281,41.9576578],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:50Z","tags":{}},"n1819848978":{"id":"n1819848978","loc":[-85.6377186,41.9580867],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:53Z","tags":{}},"n1819849039":{"id":"n1819849039","loc":[-85.6384217,41.9573405],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:54Z","tags":{}},"n1819849050":{"id":"n1819849050","loc":[-85.6377011,41.9570042],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:55Z","tags":{}},"n1819849088":{"id":"n1819849088","loc":[-85.6382879,41.9580817],"version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:47:56Z","tags":{}},"n2114807549":{"id":"n2114807549","loc":[-85.6362551,41.96473],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807587":{"id":"n2114807587","loc":[-85.6368694,41.9629829],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015725":{"id":"n2189015725","loc":[-85.644156,41.9569753],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015741":{"id":"n2189015741","loc":[-85.6419825,41.9597632],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"w208627217":{"id":"w208627217","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015741","n2189015744","n2189015747","n2189015750","n2189015753","n2189015756","n2189015759","n2189015760","n2189015764","n2189015766","n2189015770","n2189015771","n2189015774","n2189015778","n2189015781","n2189015785","n2189015789","n2189015793","n2189015796","n2189015800","n2189015804","n2189015808","n2189015741"]},"w208627212":{"id":"w208627212","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"highway":"service"},"nodes":["n2189015691","n2189015696","n2189015722","n2189015725"]},"w209717057":{"id":"w209717057","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109876","n2199109878","n2199109880","n2199109882","n2199109876"]},"w209717056":{"id":"w209717056","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109865","n2199109867","n2199109869","n2199109871","n2199109865"]},"w208627231":{"id":"w208627231","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015909","n2189015926","n2189015929","n2189015932","n2189015909"]},"w170848326":{"id":"w170848326","version":"1","changeset":"12170158","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T07:48:00Z","tags":{"building":"yes","source":"Bing"},"nodes":["n1819848881","n1819849050","n1819848978","n1819849088","n1819848900","n1819848947","n1819849039","n1819849044","n1819848881"]},"w17963182":{"id":"w17963182","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:55Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no"},"nodes":["n185949763","n185949765","n2189015691","n185949745"]},"w201484340":{"id":"w201484340","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807565","n2114807564","n2114807547","n2114807587","n2114807558","n2114807549","n2114807593"]},"w209717058":{"id":"w209717058","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109884","n2199109886","n2199109888","n2199109889","n2199109890","n2199109891","n2199109884"]},"n185954650":{"id":"n185954650","loc":[-85.627331,41.957439],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:31Z","tags":{}},"n185966949":{"id":"n185966949","loc":[-85.626868,41.957314],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"n185989335":{"id":"n185989335","loc":[-85.62529,41.958568],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989337":{"id":"n185989337","loc":[-85.624962,41.958453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989339":{"id":"n185989339","loc":[-85.624832,41.958399],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989340":{"id":"n185989340","loc":[-85.624707,41.958325],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989342":{"id":"n185989342","loc":[-85.624636,41.958251],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989345":{"id":"n185989345","loc":[-85.624578,41.95818],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989347":{"id":"n185989347","loc":[-85.624533,41.958099],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989349":{"id":"n185989349","loc":[-85.624507,41.957985],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989351":{"id":"n185989351","loc":[-85.624495,41.957807],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989353":{"id":"n185989353","loc":[-85.624514,41.957663],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989354":{"id":"n185989354","loc":[-85.624577,41.957593],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989356":{"id":"n185989356","loc":[-85.624685,41.95754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:27Z","tags":{}},"n185989357":{"id":"n185989357","loc":[-85.624802,41.957523],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989359":{"id":"n185989359","loc":[-85.624996,41.957524],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989361":{"id":"n185989361","loc":[-85.625409,41.957515],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989364":{"id":"n185989364","loc":[-85.625634,41.957496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989367":{"id":"n185989367","loc":[-85.625832,41.957453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n185989368":{"id":"n185989368","loc":[-85.626044,41.957394],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:14:28Z","tags":{}},"n354031352":{"id":"n354031352","loc":[-85.6252778,41.9586111],"version":"3","changeset":"3908860","user":"Geogast","uid":"51045","visible":"true","timestamp":"2010-02-18T13:28:26Z","tags":{"amenity":"place_of_worship","denomination":"baptist","ele":"250","gnis:county_id":"149","gnis:created":"04/30/2008","gnis:feature_id":"2417873","gnis:state_id":"26","name":"First Baptist Church","religion":"christian"}},"n2199109892":{"id":"n2199109892","loc":[-85.6261578,41.9589963],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109893":{"id":"n2199109893","loc":[-85.6263191,41.9586865],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109894":{"id":"n2199109894","loc":[-85.6261186,41.9586288],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109895":{"id":"n2199109895","loc":[-85.6260644,41.9587329],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109896":{"id":"n2199109896","loc":[-85.6261547,41.9587589],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n2199109898":{"id":"n2199109898","loc":[-85.6260476,41.9589646],"version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:52Z","tags":{}},"n185966951":{"id":"n185966951","loc":[-85.628404,41.957438],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:50Z","tags":{}},"w17965351":{"id":"w17965351","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:20Z","tags":{"highway":"residential","name":"Flower Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Flower","tiger:name_type":"St","tiger:reviewed":"no"},"nodes":["n185966948","n185966949","n185954650","n185966951","n185966953","n185966955","n185966957"]},"w17967809":{"id":"w17967809","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:21Z","tags":{"highway":"residential","name":"Azaleamum Drive","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Azaleamum","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185982197","n185989335","n185989337","n185989339","n185989340","n185989342","n185989345","n185989347","n185989349","n185989351","n185989353","n185989354","n185989356","n185989357","n185989359","n185989361","n185989364","n185989367","n185989368","n185982196"]},"w209717059":{"id":"w209717059","version":"1","changeset":"15347594","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-13T05:16:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2199109892","n2199109893","n2199109894","n2199109895","n2199109896","n2199109898","n2199109892"]},"n185961390":{"id":"n185961390","loc":[-85.63137,41.959033],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"n185961393":{"id":"n185961393","loc":[-85.634315,41.959017],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:59:39Z","tags":{}},"w17966214":{"id":"w17966214","version":"2","changeset":"15473186","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-24T01:52:22Z","tags":{"highway":"residential","name":"East Adams Street","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093"},"nodes":["n185975351","n185967434","n185968108"]},"w17964793":{"id":"w17964793","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:32:05Z","tags":{"highway":"residential","name":"Morris Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Morris","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312148:15328241:15328242","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185961389","n185961390","n185961391","n185961393","n185961396"]},"n185952166":{"id":"n185952166","loc":[-85.638174,41.95831],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:55:11Z","tags":{}},"n2114807552":{"id":"n2114807552","loc":[-85.6383526,41.9593788],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807591":{"id":"n2114807591","loc":[-85.6383741,41.9593968],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015731":{"id":"n2189015731","loc":[-85.6368404,41.9592785],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015734":{"id":"n2189015734","loc":[-85.6368404,41.9585918],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015737":{"id":"n2189015737","loc":[-85.6376009,41.9585918],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015738":{"id":"n2189015738","loc":[-85.6376009,41.9592785],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:50Z","tags":{}},"n2189015897":{"id":"n2189015897","loc":[-85.6376839,41.9566137],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015900":{"id":"n2189015900","loc":[-85.6376831,41.9564865],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015903":{"id":"n2189015903","loc":[-85.6381161,41.9564851],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015906":{"id":"n2189015906","loc":[-85.6381168,41.9566122],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015937":{"id":"n2189015937","loc":[-85.6364789,41.9590634],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015940":{"id":"n2189015940","loc":[-85.6361137,41.9590672],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015943":{"id":"n2189015943","loc":[-85.6361169,41.9594033],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015945":{"id":"n2189015945","loc":[-85.6363456,41.9594021],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015952":{"id":"n2189015952","loc":[-85.636112,41.958892],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015955":{"id":"n2189015955","loc":[-85.6364757,41.9588894],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015957":{"id":"n2189015957","loc":[-85.6364729,41.9586747],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015958":{"id":"n2189015958","loc":[-85.6361103,41.9586765],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015959":{"id":"n2189015959","loc":[-85.6364719,41.9585562],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015960":{"id":"n2189015960","loc":[-85.6361093,41.958558],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015961":{"id":"n2189015961","loc":[-85.6355494,41.9586403],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015962":{"id":"n2189015962","loc":[-85.635549,41.9584711],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015963":{"id":"n2189015963","loc":[-85.6351831,41.9584715],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015964":{"id":"n2189015964","loc":[-85.6351834,41.9586408],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015966":{"id":"n2189015966","loc":[-85.6359579,41.9586359],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015968":{"id":"n2189015968","loc":[-85.6359561,41.9585465],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015971":{"id":"n2189015971","loc":[-85.6355476,41.9585509],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015974":{"id":"n2189015974","loc":[-85.6359516,41.9592934],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015977":{"id":"n2189015977","loc":[-85.635949,41.9586697],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015980":{"id":"n2189015980","loc":[-85.6351329,41.9586716],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015983":{"id":"n2189015983","loc":[-85.6351318,41.9583949],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015986":{"id":"n2189015986","loc":[-85.6349148,41.9583954],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015989":{"id":"n2189015989","loc":[-85.6349186,41.9592958],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015995":{"id":"n2189015995","loc":[-85.6360173,41.9593286],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015998":{"id":"n2189015998","loc":[-85.6360278,41.9583079],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2114807550":{"id":"n2114807550","loc":[-85.6383392,41.9595404],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807551":{"id":"n2114807551","loc":[-85.6375855,41.9616107],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807559":{"id":"n2114807559","loc":[-85.6373978,41.9621273],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807562":{"id":"n2114807562","loc":[-85.6373361,41.9622609],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807563":{"id":"n2114807563","loc":[-85.6376472,41.9613953],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807574":{"id":"n2114807574","loc":[-85.636974,41.9627695],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807589":{"id":"n2114807589","loc":[-85.6383017,41.9595005],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807592":{"id":"n2114807592","loc":[-85.6377169,41.9613494],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2114807595":{"id":"n2114807595","loc":[-85.6371081,41.962574],"version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:15Z","tags":{}},"n2189015934":{"id":"n2189015934","loc":[-85.6364855,41.9595098],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"n2189015949":{"id":"n2189015949","loc":[-85.6363466,41.9595105],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:51Z","tags":{}},"w208627244":{"id":"w208627244","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"highway":"service"},"nodes":["n2189015992","n2189015995","n2189015998"]},"w208627240":{"id":"w208627240","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015961","n2189015971","n2189015962","n2189015963","n2189015964","n2189015961"]},"w17967437":{"id":"w17967437","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:44Z","tags":{"highway":"residential","name":"Lyman St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Lyman","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313234","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185964361","n185984024"]},"w208627237":{"id":"w208627237","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015955","n2189015957","n2189015958","n2189015952","n2189015955"]},"w17967465":{"id":"w17967465","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:51:57Z","tags":{"highway":"residential","name":"W Adams St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_direction_prefix":"W","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312177","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185978394","n185984022","n185964360"]},"w208627228":{"id":"w208627228","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015897","n2189015900","n2189015903","n2189015906","n2189015897"]},"w201484351":{"id":"w201484351","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:17Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807587","n2114807574","n2114807595","n2114807562","n2114807559","n2114807551","n2114807563","n2114807589","n2114807552"]},"w208627239":{"id":"w208627239","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015957","n2189015959","n2189015960","n2189015958","n2189015957"]},"w208627233":{"id":"w208627233","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015934","n2189015937","n2189015940","n2189015943","n2189015945","n2189015949","n2189015934"]},"w208627241":{"id":"w208627241","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015961","n2189015966","n2189015968","n2189015971","n2189015961"]},"w17967970":{"id":"w17967970","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:55:20Z","tags":{"highway":"residential","name":"Adams St","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Adams","tiger:name_type":"St","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312180","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185975351","n185978394"]},"w208627235":{"id":"w208627235","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015940","n2189015952","n2189015955","n2189015937","n2189015940"]},"w17965468":{"id":"w17965468","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:56Z","tags":{"highway":"residential","name":"Armstrong Blvd","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Armstrong","tiger:name_type":"Blvd","tiger:reviewed":"no"},"nodes":["n185967917","n2189015998","n185967918","n185964362","n185952166"]},"w201484346":{"id":"w201484346","version":"1","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:16Z","tags":{"railway":"rail","service":"siding","source":"Bing"},"nodes":["n2114807551","n2114807592","n2114807550","n2114807591"]},"w208627242":{"id":"w208627242","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2189015974","n2189015977","n2189015980","n2189015983","n2189015986","n2189015989","n2189015974"]},"w208627216":{"id":"w208627216","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:53Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189015731","n2189015734","n2189015737","n2189015738","n2189015731"]},"n185984309":{"id":"n185984309","loc":[-85.631421,41.961494],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:11:55Z","tags":{}},"n185987987":{"id":"n185987987","loc":[-85.631456,41.960673],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:13:29Z","tags":{}},"n185965397":{"id":"n185965397","loc":[-85.634603,41.959838],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:52Z","tags":{}},"w17965196":{"id":"w17965196","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:10Z","tags":{"highway":"residential","name":"Burke Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Burke","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15312145","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965395","n185965397","n185965399"]},"w17967215":{"id":"w17967215","version":"2","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:56Z","tags":{"highway":"residential","name":"Kellogg Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Kellogg","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185968114","n185984309","n185967440","n185978402"]},"w17967597":{"id":"w17967597","version":"2","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:20Z","tags":{"highway":"residential","name":"Barnard Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Barnard","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185968112","n185987987","n185967438","n185978399"]},"n394490857":{"id":"n394490857","loc":[-85.633952,41.960664],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:00Z","tags":{}},"n394490858":{"id":"n394490858","loc":[-85.633938,41.960227],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:00Z","tags":{}},"n394490859":{"id":"n394490859","loc":[-85.634794,41.960212],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490860":{"id":"n394490860","loc":[-85.634815,41.960662],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490861":{"id":"n394490861","loc":[-85.634103,41.961268],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490862":{"id":"n394490862","loc":[-85.634103,41.961001],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490863":{"id":"n394490863","loc":[-85.634504,41.961003],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n394490864":{"id":"n394490864","loc":[-85.634561,41.961269],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{}},"n1057629869":{"id":"n1057629869","loc":[-85.6382599,41.9612134],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:10Z","tags":{}},"n1057629937":{"id":"n1057629937","loc":[-85.6380035,41.9616137],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:11Z","tags":{}},"n2189016014":{"id":"n2189016014","loc":[-85.6360365,41.9626496],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016017":{"id":"n2189016017","loc":[-85.6360374,41.9623228],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016020":{"id":"n2189016020","loc":[-85.6367557,41.9623239],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016022":{"id":"n2189016022","loc":[-85.6367566,41.9619919],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016025":{"id":"n2189016025","loc":[-85.6351794,41.9619893],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016028":{"id":"n2189016028","loc":[-85.6351788,41.9622011],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016031":{"id":"n2189016031","loc":[-85.6350855,41.9622009],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016034":{"id":"n2189016034","loc":[-85.6350845,41.962527],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016037":{"id":"n2189016037","loc":[-85.6352732,41.9625273],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016039":{"id":"n2189016039","loc":[-85.6352738,41.9623178],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016042":{"id":"n2189016042","loc":[-85.6357712,41.9623186],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n2189016044":{"id":"n2189016044","loc":[-85.6357702,41.9626492],"version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:52Z","tags":{}},"n1057629880":{"id":"n1057629880","loc":[-85.638817,41.9619017],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:10Z","tags":{}},"n1057629923":{"id":"n1057629923","loc":[-85.6390733,41.9615014],"version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:11Z","tags":{}},"w91092312":{"id":"w91092312","version":"1","changeset":"6740055","user":"42429","uid":"42429","visible":"true","timestamp":"2010-12-22T21:14:12Z","tags":{"power":"station"},"nodes":["n1057629923","n1057629869","n1057629937","n1057629880","n1057629923"]},"w34369826":{"id":"w34369826","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490861","n394490862","n394490863","n394490864","n394490861"]},"w34369825":{"id":"w34369825","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:08:01Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490857","n394490858","n394490859","n394490860","n394490857"]},"w208627248":{"id":"w208627248","version":"1","changeset":"15276188","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-06T21:42:54Z","tags":{"area":"yes","building":"yes"},"nodes":["n2189016014","n2189016017","n2189016020","n2189016022","n2189016025","n2189016028","n2189016031","n2189016034","n2189016037","n2189016039","n2189016042","n2189016044","n2189016014"]},"n394490766":{"id":"n394490766","loc":[-85.616777,41.955642],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490768":{"id":"n394490768","loc":[-85.617239,41.955644],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490792":{"id":"n394490792","loc":[-85.619034,41.95543],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n185972055":{"id":"n185972055","loc":[-85.6185905,41.9568211],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972057":{"id":"n185972057","loc":[-85.6186688,41.9570086],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972059":{"id":"n185972059","loc":[-85.6186924,41.9581453],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185972060":{"id":"n185972060","loc":[-85.6187082,41.9588211],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{"highway":"turning_circle","source":"Bing"}},"n1819790724":{"id":"n1819790724","loc":[-85.6182155,41.9555703],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790735":{"id":"n1819790735","loc":[-85.6184059,41.9566188],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790799":{"id":"n1819790799","loc":[-85.6182372,41.9563771],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790896":{"id":"n1819790896","loc":[-85.6181431,41.9557227],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n185971405":{"id":"n185971405","loc":[-85.6186766,41.9577468],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971565":{"id":"n185971565","loc":[-85.6181613,41.9560879],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185967985":{"id":"n185967985","loc":[-85.6186798,41.9585791],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955753":{"id":"n185955753","loc":[-85.620773,41.9555854],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955755":{"id":"n185955755","loc":[-85.6212652,41.9559891],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185955748":{"id":"n185955748","loc":[-85.620722,41.954858],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185955751":{"id":"n185955751","loc":[-85.6206912,41.955367],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185967987":{"id":"n185967987","loc":[-85.6159351,41.9585809],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971407":{"id":"n185971407","loc":[-85.6159142,41.9577578],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971570":{"id":"n185971570","loc":[-85.6162248,41.95603],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971572":{"id":"n185971572","loc":[-85.6160402,41.9560749],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185971574":{"id":"n185971574","loc":[-85.61593,41.956201],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185981301":{"id":"n185981301","loc":[-85.6158973,41.9581601],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:05Z","tags":{}},"n394490762":{"id":"n394490762","loc":[-85.617193,41.954706],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490764":{"id":"n394490764","loc":[-85.616773,41.954737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490787":{"id":"n394490787","loc":[-85.618972,41.954737],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490790":{"id":"n394490790","loc":[-85.619046,41.954929],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490794":{"id":"n394490794","loc":[-85.619922,41.955296],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490796":{"id":"n394490796","loc":[-85.61991,41.95501],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490798":{"id":"n394490798","loc":[-85.619974,41.954751],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n1819790677":{"id":"n1819790677","loc":[-85.6187031,41.9550522],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790787":{"id":"n1819790787","loc":[-85.6186436,41.9552022],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790828":{"id":"n1819790828","loc":[-85.6185127,41.9553393],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"w17966857":{"id":"w17966857","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:47:55Z","tags":{"access":"private","highway":"service","name":"Sable River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Sable River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326128","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972059","n185981301"]},"w34369814":{"id":"w34369814","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490787","n394490790","n394490792","n394490794","n394490796","n394490798","n394490787"]},"w17964176":{"id":"w17964176","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:27:42Z","tags":{"highway":"residential","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314404","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955747","n185955748","n185955751","n185955753","n185955755"]},"w17965838":{"id":"w17965838","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:40:09Z","tags":{"access":"private","highway":"service","name":"Pine River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Pine River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326123","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971405","n185971407"]},"w17965476":{"id":"w17965476","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:37:16Z","tags":{"access":"private","highway":"service","name":"Raisin River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Raisin River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326112","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185967985","n185967987"]},"w17965913":{"id":"w17965913","version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:06Z","tags":{"access":"private","highway":"service","name":"Shiawassee River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Shiawassee River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326124:15326125:15326111:15326113:15326119","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972054","n1819790677","n1819790787","n1819790828","n1819790724","n1819790896","n185971565","n1819790799","n1819790735","n185972055","n185972057","n185971405","n185972059","n185967985","n185972060"]},"w34369811":{"id":"w34369811","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490762","n394490764","n394490766","n394490768","n394490762"]},"w17965854":{"id":"w17965854","version":"2","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:06Z","tags":{"access":"private","highway":"service","name":"Sturgeon River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Sturgeon River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326117","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971565","n185971570","n185971572","n185971574"]},"n2139795769":{"id":"n2139795769","loc":[-85.6250804,41.9608796],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795770":{"id":"n2139795770","loc":[-85.6250315,41.9613684],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795771":{"id":"n2139795771","loc":[-85.6249671,41.9614362],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795772":{"id":"n2139795772","loc":[-85.6249698,41.961522],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795773":{"id":"n2139795773","loc":[-85.6250798,41.9615838],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:55Z","tags":{}},"n2139795774":{"id":"n2139795774","loc":[-85.6252273,41.9615639],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795775":{"id":"n2139795775","loc":[-85.6252863,41.9614622],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795776":{"id":"n2139795776","loc":[-85.6252273,41.9613764],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795777":{"id":"n2139795777","loc":[-85.6251227,41.9613525],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795778":{"id":"n2139795778","loc":[-85.6249564,41.9612527],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795779":{"id":"n2139795779","loc":[-85.6249846,41.9610254],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795780":{"id":"n2139795780","loc":[-85.6266725,41.9599647],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795781":{"id":"n2139795781","loc":[-85.6259162,41.9599711],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795782":{"id":"n2139795782","loc":[-85.6257185,41.960019],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n2139795783":{"id":"n2139795783","loc":[-85.6255509,41.9601213],"version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:56Z","tags":{}},"n185963539":{"id":"n185963539","loc":[-85.615718,41.983893],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:00:58Z","tags":{}},"n185964418":{"id":"n185964418","loc":[-85.616626,42.049512],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:23Z","tags":{}},"n185966614":{"id":"n185966614","loc":[-85.615514,41.976603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:41Z","tags":{}},"n185966635":{"id":"n185966635","loc":[-85.616118,42.013017],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:42Z","tags":{}},"n185969040":{"id":"n185969040","loc":[-85.615632,41.972357],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:45Z","tags":{}},"n185969070":{"id":"n185969070","loc":[-85.619145,41.967648],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:03:46Z","tags":{}},"n185972156":{"id":"n185972156","loc":[-85.621894,41.963956],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972157":{"id":"n185972157","loc":[-85.621806,41.964077],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972158":{"id":"n185972158","loc":[-85.620848,41.965341],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972159":{"id":"n185972159","loc":[-85.620684,41.965558],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972160":{"id":"n185972160","loc":[-85.620621,41.965658],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972161":{"id":"n185972161","loc":[-85.617844,41.969359],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972162":{"id":"n185972162","loc":[-85.616843,41.97068],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972164":{"id":"n185972164","loc":[-85.616714,41.970839],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972166":{"id":"n185972166","loc":[-85.615879,41.971969],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972168":{"id":"n185972168","loc":[-85.615748,41.972159],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972170":{"id":"n185972170","loc":[-85.615589,41.972502],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972172":{"id":"n185972172","loc":[-85.615542,41.972733],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972175":{"id":"n185972175","loc":[-85.615524,41.972947],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972177":{"id":"n185972177","loc":[-85.615512,41.973715],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972179":{"id":"n185972179","loc":[-85.615513,41.976496],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:18Z","tags":{}},"n185972180":{"id":"n185972180","loc":[-85.615538,41.977246],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972181":{"id":"n185972181","loc":[-85.61558,41.982139],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972184":{"id":"n185972184","loc":[-85.61557,41.983317],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972186":{"id":"n185972186","loc":[-85.615591,41.983463],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972188":{"id":"n185972188","loc":[-85.615763,41.984146],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972190":{"id":"n185972190","loc":[-85.615814,41.98435],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972192":{"id":"n185972192","loc":[-85.615965,41.998453],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972194":{"id":"n185972194","loc":[-85.615982,42.001237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972195":{"id":"n185972195","loc":[-85.616055,42.00555],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972197":{"id":"n185972197","loc":[-85.616134,42.014887],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972199":{"id":"n185972199","loc":[-85.616177,42.018465],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972201":{"id":"n185972201","loc":[-85.616298,42.027627],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"n185972203":{"id":"n185972203","loc":[-85.616513,42.042212],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:05:19Z","tags":{}},"w203968015":{"id":"w203968015","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential"},"nodes":["n2139795768","n2139795769"]},"w17965932":{"id":"w17965932","version":"2","changeset":"14531170","user":"bot-mode","uid":"451693","visible":"true","timestamp":"2013-01-04T21:15:18Z","tags":{"highway":"residential","name":"Buckhorn Road","name_1":"County Highway 122","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Buckhorn","tiger:name_base_1":"County Highway 122","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185972155","n185972156","n185972157","n185972158","n185972159","n185972160","n185969070","n185972161","n185972162","n185972164","n185972166","n185972168","n185969040","n185972170","n185972172","n185972175","n185972177","n185972179","n185966614","n185972180","n185972181","n185972184","n185972186","n185963539","n185972188","n185972190","n185972192","n185972194","n185972195","n185966635","n185972197","n185972199","n185972201","n185972203","n185964418"]},"w203968016":{"id":"w203968016","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential","name":"New Jersey Court"},"nodes":["n2139795770","n2139795771","n2139795772","n2139795773","n2139795774","n2139795775","n2139795776","n2139795777","n2139795770","n2139795778","n2139795779","n2139795769"]},"w203968017":{"id":"w203968017","version":"1","changeset":"14892219","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-03T07:47:58Z","tags":{"highway":"residential","name":"Oklahoma Drive"},"nodes":["n2139795780","n2139795781","n2139795782","n2139795783","n2139795769"]},"n1819790528":{"id":"n1819790528","loc":[-85.6184827,41.960025],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790530":{"id":"n1819790530","loc":[-85.6168626,41.9605834],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790534":{"id":"n1819790534","loc":[-85.6197379,41.9617163],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790541":{"id":"n1819790541","loc":[-85.6198881,41.9620833],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790543":{"id":"n1819790543","loc":[-85.619695,41.9619397],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790547":{"id":"n1819790547","loc":[-85.6190298,41.9609504],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790555":{"id":"n1819790555","loc":[-85.6180471,41.9609788],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790559":{"id":"n1819790559","loc":[-85.6203817,41.9605436],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790583":{"id":"n1819790583","loc":[-85.6201564,41.9603282],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790590":{"id":"n1819790590","loc":[-85.617045,41.9598894],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790609":{"id":"n1819790609","loc":[-85.6177638,41.9598495],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790618":{"id":"n1819790618","loc":[-85.6195234,41.9610143],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790642":{"id":"n1819790642","loc":[-85.6181179,41.9627933],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790659":{"id":"n1819790659","loc":[-85.6174634,41.962897],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790665":{"id":"n1819790665","loc":[-85.6170343,41.9630885],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790674":{"id":"n1819790674","loc":[-85.6194697,41.9601925],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790685":{"id":"n1819790685","loc":[-85.6207722,41.9610665],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790687":{"id":"n1819790687","loc":[-85.6202315,41.9622109],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790697":{"id":"n1819790697","loc":[-85.6184505,41.9624662],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790726":{"id":"n1819790726","loc":[-85.6178926,41.9628492],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790738":{"id":"n1819790738","loc":[-85.6173347,41.9598016],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790762":{"id":"n1819790762","loc":[-85.6186221,41.9609105],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790774":{"id":"n1819790774","loc":[-85.6175922,41.9608308],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790781":{"id":"n1819790781","loc":[-85.6167768,41.9633198],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790796":{"id":"n1819790796","loc":[-85.619856,41.961461],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790811":{"id":"n1819790811","loc":[-85.6208215,41.9620195],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790833":{"id":"n1819790833","loc":[-85.618311,41.9612536],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790854":{"id":"n1819790854","loc":[-85.6183646,41.9626417],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790863":{"id":"n1819790863","loc":[-85.6204997,41.9608547],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790867":{"id":"n1819790867","loc":[-85.6184934,41.9621391],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790877":{"id":"n1819790877","loc":[-85.6206928,41.9621152],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790881":{"id":"n1819790881","loc":[-85.6170879,41.960735],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790891":{"id":"n1819790891","loc":[-85.6168304,41.9601207],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790898":{"id":"n1819790898","loc":[-85.619813,41.9612297],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790909":{"id":"n1819790909","loc":[-85.6167982,41.960376],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790912":{"id":"n1819790912","loc":[-85.6205855,41.9610462],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790544":{"id":"n1819790544","loc":[-85.612968,41.9707781],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790549":{"id":"n1819790549","loc":[-85.614395,41.9697172],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790552":{"id":"n1819790552","loc":[-85.6180535,41.9655536],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790554":{"id":"n1819790554","loc":[-85.6111227,41.9703713],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:53Z","tags":{}},"n1819790560":{"id":"n1819790560","loc":[-85.6112729,41.9701958],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790563":{"id":"n1819790563","loc":[-85.6137512,41.9689917],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790564":{"id":"n1819790564","loc":[-85.6181072,41.9659205],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790595":{"id":"n1819790595","loc":[-85.6170021,41.9666863],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790605":{"id":"n1819790605","loc":[-85.6168948,41.9644527],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790606":{"id":"n1819790606","loc":[-85.6128071,41.9701081],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790607":{"id":"n1819790607","loc":[-85.6129251,41.9704032],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:54Z","tags":{}},"n1819790612":{"id":"n1819790612","loc":[-85.6177638,41.9663912],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790615":{"id":"n1819790615","loc":[-85.6152533,41.9670373],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790622":{"id":"n1819790622","loc":[-85.6146739,41.9673804],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790623":{"id":"n1819790623","loc":[-85.6180428,41.9661838],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790625":{"id":"n1819790625","loc":[-85.6172918,41.9646202],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:55Z","tags":{}},"n1819790645":{"id":"n1819790645","loc":[-85.6178067,41.965043],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790647":{"id":"n1819790647","loc":[-85.6143306,41.9712488],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790649":{"id":"n1819790649","loc":[-85.6147383,41.9707702],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790654":{"id":"n1819790654","loc":[-85.6157361,41.9668459],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790657":{"id":"n1819790657","loc":[-85.6145666,41.9710733],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790668":{"id":"n1819790668","loc":[-85.6166909,41.9642692],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790671":{"id":"n1819790671","loc":[-85.6141482,41.9696538],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790679":{"id":"n1819790679","loc":[-85.6148349,41.9705388],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:56Z","tags":{}},"n1819790686":{"id":"n1819790686","loc":[-85.6139551,41.9695501],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790696":{"id":"n1819790696","loc":[-85.6119703,41.9699087],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790704":{"id":"n1819790704","loc":[-85.6140731,41.9684174],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790706":{"id":"n1819790706","loc":[-85.6124745,41.9699246],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790718":{"id":"n1819790718","loc":[-85.6165407,41.9636868],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790720":{"id":"n1819790720","loc":[-85.61388,41.9687365],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:57Z","tags":{}},"n1819790731":{"id":"n1819790731","loc":[-85.6165193,41.9639421],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790739":{"id":"n1819790739","loc":[-85.6146739,41.9699964],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790753":{"id":"n1819790753","loc":[-85.6173883,41.9665747],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790760":{"id":"n1819790760","loc":[-85.6133221,41.9712089],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:58Z","tags":{}},"n1819790767":{"id":"n1819790767","loc":[-85.6116698,41.9699246],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790779":{"id":"n1819790779","loc":[-85.6130753,41.9710573],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790791":{"id":"n1819790791","loc":[-85.6137083,41.9692869],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790795":{"id":"n1819790795","loc":[-85.6141482,41.9679627],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790798":{"id":"n1819790798","loc":[-85.6137727,41.9694305],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:58:59Z","tags":{}},"n1819790836":{"id":"n1819790836","loc":[-85.6143842,41.9676037],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:00Z","tags":{}},"n1819790915":{"id":"n1819790915","loc":[-85.6148456,41.9702756],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:01Z","tags":{}},"n1819790926":{"id":"n1819790926","loc":[-85.6138371,41.9713525],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790927":{"id":"n1819790927","loc":[-85.6141053,41.9713525],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1819790931":{"id":"n1819790931","loc":[-85.6162832,41.966814],"version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:02Z","tags":{}},"n1821014625":{"id":"n1821014625","loc":[-85.5960611,41.9808498],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014627":{"id":"n1821014627","loc":[-85.5565843,42.010982],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014629":{"id":"n1821014629","loc":[-85.5971541,41.9805808],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014632":{"id":"n1821014632","loc":[-85.6061837,41.9725907],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014633":{"id":"n1821014633","loc":[-85.5247773,42.025766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014635":{"id":"n1821014635","loc":[-85.5908938,41.9902384],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014636":{"id":"n1821014636","loc":[-85.5917682,41.9860637],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014637":{"id":"n1821014637","loc":[-85.5456556,42.0166797],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014638":{"id":"n1821014638","loc":[-85.5795749,42.0032352],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014639":{"id":"n1821014639","loc":[-85.6103988,41.9723456],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014642":{"id":"n1821014642","loc":[-85.5818816,42.0022466],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:40Z","tags":{}},"n1821014643":{"id":"n1821014643","loc":[-85.5570604,42.0091586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014644":{"id":"n1821014644","loc":[-85.5952886,41.9803792],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014645":{"id":"n1821014645","loc":[-85.5780366,42.0040343],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014646":{"id":"n1821014646","loc":[-85.6050505,41.9751971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014647":{"id":"n1821014647","loc":[-85.5854435,41.9946162],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014648":{"id":"n1821014648","loc":[-85.5452278,42.0168768],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014649":{"id":"n1821014649","loc":[-85.6023254,41.9780166],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014651":{"id":"n1821014651","loc":[-85.5761899,42.0046783],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014653":{"id":"n1821014653","loc":[-85.5897351,41.9876707],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014657":{"id":"n1821014657","loc":[-85.5963601,41.9808998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014658":{"id":"n1821014658","loc":[-85.5892952,41.9951983],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014660":{"id":"n1821014660","loc":[-85.5778328,42.0037194],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014661":{"id":"n1821014661","loc":[-85.5541475,42.0125705],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014663":{"id":"n1821014663","loc":[-85.5914047,41.9856469],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014664":{"id":"n1821014664","loc":[-85.6101681,41.9727723],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014665":{"id":"n1821014665","loc":[-85.5910172,41.9854696],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014666":{"id":"n1821014666","loc":[-85.5398688,42.0187699],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014667":{"id":"n1821014667","loc":[-85.5218752,42.0282884],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014668":{"id":"n1821014668","loc":[-85.5159582,42.0329384],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014669":{"id":"n1821014669","loc":[-85.5898102,41.9847319],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014670":{"id":"n1821014670","loc":[-85.5734809,42.0066235],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014671":{"id":"n1821014671","loc":[-85.5922939,41.980852],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014672":{"id":"n1821014672","loc":[-85.6023629,41.9781163],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:41Z","tags":{}},"n1821014674":{"id":"n1821014674","loc":[-85.5409953,42.0191724],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014676":{"id":"n1821014676","loc":[-85.584435,41.9949909],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014677":{"id":"n1821014677","loc":[-85.5972399,41.9783835],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014678":{"id":"n1821014678","loc":[-85.5616738,42.0071337],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014681":{"id":"n1821014681","loc":[-85.5202994,42.0310755],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014682":{"id":"n1821014682","loc":[-85.5915912,41.9857767],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014684":{"id":"n1821014684","loc":[-85.6022288,41.977897],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014687":{"id":"n1821014687","loc":[-85.5933024,41.9846362],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014688":{"id":"n1821014688","loc":[-85.5846871,41.9956169],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014689":{"id":"n1821014689","loc":[-85.5898209,41.99037],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014691":{"id":"n1821014691","loc":[-85.5448939,42.0149261],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014692":{"id":"n1821014692","loc":[-85.5977763,41.9786348],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014694":{"id":"n1821014694","loc":[-85.5767706,42.0034523],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:42Z","tags":{}},"n1821014695":{"id":"n1821014695","loc":[-85.6103559,41.9726766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014697":{"id":"n1821014697","loc":[-85.5922134,41.9809876],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014698":{"id":"n1821014698","loc":[-85.5935277,41.9831728],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014700":{"id":"n1821014700","loc":[-85.5674674,42.0078273],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014703":{"id":"n1821014703","loc":[-85.6021,41.9778053],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014704":{"id":"n1821014704","loc":[-85.5756763,42.0053737],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014705":{"id":"n1821014705","loc":[-85.5887695,41.9895207],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014707":{"id":"n1821014707","loc":[-85.6061073,41.9746866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014708":{"id":"n1821014708","loc":[-85.6033446,41.9751692],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014710":{"id":"n1821014710","loc":[-85.5180986,42.0322332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014711":{"id":"n1821014711","loc":[-85.543365,42.0163569],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014712":{"id":"n1821014712","loc":[-85.6030656,41.9753646],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014713":{"id":"n1821014713","loc":[-85.6104417,41.9704792],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014714":{"id":"n1821014714","loc":[-85.5205716,42.030998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014716":{"id":"n1821014716","loc":[-85.516382,42.032536],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014717":{"id":"n1821014717","loc":[-85.5932863,41.9820882],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014718":{"id":"n1821014718","loc":[-85.5361928,42.0194974],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014720":{"id":"n1821014720","loc":[-85.6011613,41.9773586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014721":{"id":"n1821014721","loc":[-85.554287,42.0109124],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014722":{"id":"n1821014722","loc":[-85.5577524,42.0103425],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:43Z","tags":{}},"n1821014725":{"id":"n1821014725","loc":[-85.5867256,41.9921004],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014726":{"id":"n1821014726","loc":[-85.5856045,41.9968807],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014727":{"id":"n1821014727","loc":[-85.5545445,42.0106454],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014728":{"id":"n1821014728","loc":[-85.5923797,41.9842534],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014729":{"id":"n1821014729","loc":[-85.5696346,42.0081462],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014730":{"id":"n1821014730","loc":[-85.5998322,41.9786884],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014735":{"id":"n1821014735","loc":[-85.5337426,42.0218266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014736":{"id":"n1821014736","loc":[-85.5847944,41.994672],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014740":{"id":"n1821014740","loc":[-85.5315271,42.0238669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014741":{"id":"n1821014741","loc":[-85.5248846,42.027085],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014742":{"id":"n1821014742","loc":[-85.5853376,41.997018],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014743":{"id":"n1821014743","loc":[-85.5894883,41.988811],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014745":{"id":"n1821014745","loc":[-85.6095311,41.9726226],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014746":{"id":"n1821014746","loc":[-85.5531511,42.0133416],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014747":{"id":"n1821014747","loc":[-85.5735882,42.007058],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014749":{"id":"n1821014749","loc":[-85.5428554,42.0164366],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014751":{"id":"n1821014751","loc":[-85.5395255,42.0186304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:44Z","tags":{}},"n1821014752":{"id":"n1821014752","loc":[-85.571378,42.0083176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014754":{"id":"n1821014754","loc":[-85.5541918,42.0113925],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014755":{"id":"n1821014755","loc":[-85.5278029,42.0250806],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014756":{"id":"n1821014756","loc":[-85.5936725,41.9827102],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014757":{"id":"n1821014757","loc":[-85.5176266,42.0346677],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014758":{"id":"n1821014758","loc":[-85.6096692,41.9714245],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014759":{"id":"n1821014759","loc":[-85.5770321,42.0034266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014761":{"id":"n1821014761","loc":[-85.5988921,41.9779369],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014762":{"id":"n1821014762","loc":[-85.5811788,42.0024499],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014763":{"id":"n1821014763","loc":[-85.5154003,42.0381101],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014764":{"id":"n1821014764","loc":[-85.5155827,42.0374089],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014765":{"id":"n1821014765","loc":[-85.5891249,41.9884978],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014766":{"id":"n1821014766","loc":[-85.5313863,42.0238293],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014768":{"id":"n1821014768","loc":[-85.593297,41.9833363],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014769":{"id":"n1821014769","loc":[-85.5849446,41.9957245],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014770":{"id":"n1821014770","loc":[-85.5537774,42.0130847],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014771":{"id":"n1821014771","loc":[-85.6111766,41.9706069],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014772":{"id":"n1821014772","loc":[-85.5585477,42.008989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:45Z","tags":{}},"n1821014774":{"id":"n1821014774","loc":[-85.5928142,41.9852623],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014777":{"id":"n1821014777","loc":[-85.5891933,41.9882608],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014778":{"id":"n1821014778","loc":[-85.5926909,41.9817532],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014779":{"id":"n1821014779","loc":[-85.5260272,42.0252201],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014781":{"id":"n1821014781","loc":[-85.5894615,41.9950468],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014782":{"id":"n1821014782","loc":[-85.5461063,42.0143242],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014783":{"id":"n1821014783","loc":[-85.5711527,42.0085886],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014784":{"id":"n1821014784","loc":[-85.5329379,42.0218624],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014786":{"id":"n1821014786","loc":[-85.583047,42.0020252],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014787":{"id":"n1821014787","loc":[-85.5758962,42.0054095],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014788":{"id":"n1821014788","loc":[-85.5626354,42.0077733],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014789":{"id":"n1821014789","loc":[-85.6029852,41.9755999],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014790":{"id":"n1821014790","loc":[-85.5892362,41.9886755],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014791":{"id":"n1821014791","loc":[-85.5157597,42.0372017],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014793":{"id":"n1821014793","loc":[-85.6054582,41.9751094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014794":{"id":"n1821014794","loc":[-85.5986936,41.9778412],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014795":{"id":"n1821014795","loc":[-85.5880775,41.98976],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014796":{"id":"n1821014796","loc":[-85.5858727,41.9963624],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014798":{"id":"n1821014798","loc":[-85.5792543,42.0035958],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014799":{"id":"n1821014799","loc":[-85.5921665,41.9838326],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:46Z","tags":{}},"n1821014801":{"id":"n1821014801","loc":[-85.599214,41.9782599],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014802":{"id":"n1821014802","loc":[-85.5571905,42.0090967],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014803":{"id":"n1821014803","loc":[-85.5426891,42.0173612],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014804":{"id":"n1821014804","loc":[-85.5889626,41.9896404],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014805":{"id":"n1821014805","loc":[-85.5491264,42.0141648],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014806":{"id":"n1821014806","loc":[-85.5618897,42.0072631],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014808":{"id":"n1821014808","loc":[-85.5573501,42.0109802],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014809":{"id":"n1821014809","loc":[-85.5983463,41.9778031],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014810":{"id":"n1821014810","loc":[-85.5885173,41.9895128],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014811":{"id":"n1821014811","loc":[-85.6084998,41.9721143],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014812":{"id":"n1821014812","loc":[-85.5737598,42.0056389],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014814":{"id":"n1821014814","loc":[-85.5542173,42.0118132],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014816":{"id":"n1821014816","loc":[-85.5277868,42.024451],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014817":{"id":"n1821014817","loc":[-85.5403999,42.0191724],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014819":{"id":"n1821014819","loc":[-85.5983879,41.9791452],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014820":{"id":"n1821014820","loc":[-85.5891302,41.9897578],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014822":{"id":"n1821014822","loc":[-85.5930731,41.9805108],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014824":{"id":"n1821014824","loc":[-85.515395,42.0378471],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014825":{"id":"n1821014825","loc":[-85.5352755,42.0205136],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014826":{"id":"n1821014826","loc":[-85.5502744,42.0133398],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:47Z","tags":{}},"n1821014828":{"id":"n1821014828","loc":[-85.5701295,42.0088256],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014830":{"id":"n1821014830","loc":[-85.5888929,41.9953099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014832":{"id":"n1821014832","loc":[-85.5880077,41.9901547],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014833":{"id":"n1821014833","loc":[-85.5451192,42.0157072],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014834":{"id":"n1821014834","loc":[-85.6096478,41.9711932],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014835":{"id":"n1821014835","loc":[-85.5806424,42.0026532],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014836":{"id":"n1821014836","loc":[-85.5911674,41.9868732],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014838":{"id":"n1821014838","loc":[-85.5930302,41.9836571],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014839":{"id":"n1821014839","loc":[-85.588925,41.9938148],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014840":{"id":"n1821014840","loc":[-85.6111874,41.9705311],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014841":{"id":"n1821014841","loc":[-85.5680843,42.0075842],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014842":{"id":"n1821014842","loc":[-85.6012793,41.9775062],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014843":{"id":"n1821014843","loc":[-85.5855562,41.9989777],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014844":{"id":"n1821014844","loc":[-85.5506137,42.0131662],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014845":{"id":"n1821014845","loc":[-85.5270049,42.025457],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014846":{"id":"n1821014846","loc":[-85.5257054,42.025244],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014847":{"id":"n1821014847","loc":[-85.6011184,41.9771832],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014848":{"id":"n1821014848","loc":[-85.515534,42.0389234],"version":"2","changeset":"15306911","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:57:21Z","tags":{}},"n1821014850":{"id":"n1821014850","loc":[-85.5847032,42.0010347],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:48Z","tags":{}},"n1821014853":{"id":"n1821014853","loc":[-85.5361499,42.019063],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014854":{"id":"n1821014854","loc":[-85.5439176,42.0165721],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014855":{"id":"n1821014855","loc":[-85.5838825,42.0017284],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014857":{"id":"n1821014857","loc":[-85.5542173,42.0122317],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014859":{"id":"n1821014859","loc":[-85.5708201,42.0089195],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014860":{"id":"n1821014860","loc":[-85.5844833,41.9954415],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014862":{"id":"n1821014862","loc":[-85.5223204,42.0295396],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014863":{"id":"n1821014863","loc":[-85.5777898,42.0035918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014864":{"id":"n1821014864","loc":[-85.591044,41.9898078],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014865":{"id":"n1821014865","loc":[-85.5973204,41.980182],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014866":{"id":"n1821014866","loc":[-85.5699578,42.0085825],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014867":{"id":"n1821014867","loc":[-85.5210598,42.0305278],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014868":{"id":"n1821014868","loc":[-85.5929108,41.9819008],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014869":{"id":"n1821014869","loc":[-85.5279799,42.0242995],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014870":{"id":"n1821014870","loc":[-85.5196114,42.0320539],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014871":{"id":"n1821014871","loc":[-85.5785449,42.0040883],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014872":{"id":"n1821014872","loc":[-85.588292,41.9895766],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014873":{"id":"n1821014873","loc":[-85.5160172,42.0331775],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014874":{"id":"n1821014874","loc":[-85.5688849,42.0077016],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:49Z","tags":{}},"n1821014876":{"id":"n1821014876","loc":[-85.5857976,41.9996036],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014879":{"id":"n1821014879","loc":[-85.5990906,41.9780765],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014881":{"id":"n1821014881","loc":[-85.5483647,42.0144279],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014883":{"id":"n1821014883","loc":[-85.5691209,42.0077972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014885":{"id":"n1821014885","loc":[-85.6076844,41.9721103],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014886":{"id":"n1821014886","loc":[-85.6015489,41.9766147],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014887":{"id":"n1821014887","loc":[-85.574822,42.0052802],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014888":{"id":"n1821014888","loc":[-85.5880024,41.9899593],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014890":{"id":"n1821014890","loc":[-85.5909421,41.9893772],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014892":{"id":"n1821014892","loc":[-85.5497326,42.0138141],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014893":{"id":"n1821014893","loc":[-85.5167106,42.0357811],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014895":{"id":"n1821014895","loc":[-85.5844404,41.9952501],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014896":{"id":"n1821014896","loc":[-85.5362465,42.0192662],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014898":{"id":"n1821014898","loc":[-85.5906095,41.9889147],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014899":{"id":"n1821014899","loc":[-85.5590667,42.0089354],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014900":{"id":"n1821014900","loc":[-85.5921598,41.9844209],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014902":{"id":"n1821014902","loc":[-85.5778971,42.0039266],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:50Z","tags":{}},"n1821014903":{"id":"n1821014903","loc":[-85.603012,41.9761981],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014904":{"id":"n1821014904","loc":[-85.6108977,41.9706787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014905":{"id":"n1821014905","loc":[-85.5685738,42.0076139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014906":{"id":"n1821014906","loc":[-85.5392787,42.0186304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014907":{"id":"n1821014907","loc":[-85.5227885,42.0274972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014908":{"id":"n1821014908","loc":[-85.5857547,41.9961431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014910":{"id":"n1821014910","loc":[-85.5610354,42.0072812],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014911":{"id":"n1821014911","loc":[-85.5209632,42.0308705],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014912":{"id":"n1821014912","loc":[-85.5709757,42.0087959],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014913":{"id":"n1821014913","loc":[-85.59231,41.9839344],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014914":{"id":"n1821014914","loc":[-85.5375245,42.0185865],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014916":{"id":"n1821014916","loc":[-85.5901548,41.9839841],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014917":{"id":"n1821014917","loc":[-85.5611213,42.0086405],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014918":{"id":"n1821014918","loc":[-85.5360426,42.0198122],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014919":{"id":"n1821014919","loc":[-85.5862817,41.9948691],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014921":{"id":"n1821014921","loc":[-85.5469807,42.0144438],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014922":{"id":"n1821014922","loc":[-85.5761309,42.0053838],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014924":{"id":"n1821014924","loc":[-85.516264,42.0332971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014925":{"id":"n1821014925","loc":[-85.5277224,42.0246661],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014926":{"id":"n1821014926","loc":[-85.5980016,41.9798231],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014928":{"id":"n1821014928","loc":[-85.5924548,41.9806965],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:51Z","tags":{}},"n1821014930":{"id":"n1821014930","loc":[-85.5899121,41.985023],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014931":{"id":"n1821014931","loc":[-85.5706015,42.0089492],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014932":{"id":"n1821014932","loc":[-85.515926,42.033046],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014933":{"id":"n1821014933","loc":[-85.5982377,41.9796796],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014936":{"id":"n1821014936","loc":[-85.5475721,42.0145253],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014938":{"id":"n1821014938","loc":[-85.5895701,41.9902323],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014939":{"id":"n1821014939","loc":[-85.6030495,41.9759947],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014942":{"id":"n1821014942","loc":[-85.6094721,41.9724989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014944":{"id":"n1821014944","loc":[-85.5921973,41.9811112],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014945":{"id":"n1821014945","loc":[-85.5223526,42.0291332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014946":{"id":"n1821014946","loc":[-85.5965103,41.9808998],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014948":{"id":"n1821014948","loc":[-85.517766,42.0349227],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014950":{"id":"n1821014950","loc":[-85.5889894,41.990996],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014951":{"id":"n1821014951","loc":[-85.5601932,42.0092902],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:52Z","tags":{}},"n1821014954":{"id":"n1821014954","loc":[-85.6028135,41.9764055],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014955":{"id":"n1821014955","loc":[-85.5520621,42.0130666],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014956":{"id":"n1821014956","loc":[-85.593002,41.9839344],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014957":{"id":"n1821014957","loc":[-85.515926,42.0369666],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014960":{"id":"n1821014960","loc":[-85.5761255,42.003877],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014961":{"id":"n1821014961","loc":[-85.5716355,42.007911],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014962":{"id":"n1821014962","loc":[-85.5575378,42.0109045],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014963":{"id":"n1821014963","loc":[-85.5735667,42.0068188],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014964":{"id":"n1821014964","loc":[-85.5915214,41.9865861],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014965":{"id":"n1821014965","loc":[-85.5866344,41.9923157],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014967":{"id":"n1821014967","loc":[-85.5283138,42.0242256],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014968":{"id":"n1821014968","loc":[-85.5177875,42.0355801],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014969":{"id":"n1821014969","loc":[-85.548071,42.0144934],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014972":{"id":"n1821014972","loc":[-85.5611159,42.0088557],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014973":{"id":"n1821014973","loc":[-85.541686,42.0188757],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014974":{"id":"n1821014974","loc":[-85.5917628,41.9862631],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014975":{"id":"n1821014975","loc":[-85.5854864,41.9959478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014977":{"id":"n1821014977","loc":[-85.609102,41.9722317],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:53Z","tags":{}},"n1821014980":{"id":"n1821014980","loc":[-85.5761202,42.0042438],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014982":{"id":"n1821014982","loc":[-85.5465944,42.0143601],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014983":{"id":"n1821014983","loc":[-85.5173261,42.0342732],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014984":{"id":"n1821014984","loc":[-85.5897297,41.9888509],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014985":{"id":"n1821014985","loc":[-85.5856688,41.999181],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014986":{"id":"n1821014986","loc":[-85.5344011,42.0217251],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014987":{"id":"n1821014987","loc":[-85.601467,41.9768203],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014988":{"id":"n1821014988","loc":[-85.5457254,42.0165123],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014989":{"id":"n1821014989","loc":[-85.6023482,41.9784332],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014991":{"id":"n1821014991","loc":[-85.5361606,42.01823],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014992":{"id":"n1821014992","loc":[-85.5178465,42.0351139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014995":{"id":"n1821014995","loc":[-85.5634293,42.0078092],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014996":{"id":"n1821014996","loc":[-85.573497,42.0072015],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014997":{"id":"n1821014997","loc":[-85.5976328,41.9799725],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821014998":{"id":"n1821014998","loc":[-85.5210651,42.0303166],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015003":{"id":"n1821015003","loc":[-85.5222131,42.0288064],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015004":{"id":"n1821015004","loc":[-85.5897941,41.984405],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015005":{"id":"n1821015005","loc":[-85.5975725,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015006":{"id":"n1821015006","loc":[-85.5765708,42.0034903],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:54Z","tags":{}},"n1821015007":{"id":"n1821015007","loc":[-85.5250187,42.026559],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015009":{"id":"n1821015009","loc":[-85.5426998,42.0166279],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015010":{"id":"n1821015010","loc":[-85.5957606,41.9806584],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015011":{"id":"n1821015011","loc":[-85.5262753,42.0252497],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015012":{"id":"n1821015012","loc":[-85.5266455,42.0253374],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015014":{"id":"n1821015014","loc":[-85.5515632,42.0130187],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015015":{"id":"n1821015015","loc":[-85.6024058,41.9765212],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015017":{"id":"n1821015017","loc":[-85.5175032,42.0357156],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015018":{"id":"n1821015018","loc":[-85.5302718,42.0236039],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015019":{"id":"n1821015019","loc":[-85.6024005,41.9782759],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015020":{"id":"n1821015020","loc":[-85.5907758,41.9890821],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015021":{"id":"n1821015021","loc":[-85.6019445,41.9777215],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015022":{"id":"n1821015022","loc":[-85.5942854,41.9800881],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015024":{"id":"n1821015024","loc":[-85.5325826,42.0222711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:55Z","tags":{}},"n1821015029":{"id":"n1821015029","loc":[-85.555093,42.0105316],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015033":{"id":"n1821015033","loc":[-85.5249704,42.0270372],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015034":{"id":"n1821015034","loc":[-85.5243965,42.0272205],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015038":{"id":"n1821015038","loc":[-85.5413426,42.0190749],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015039":{"id":"n1821015039","loc":[-85.5920431,41.9848175],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015041":{"id":"n1821015041","loc":[-85.5577685,42.0106015],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015042":{"id":"n1821015042","loc":[-85.5453606,42.0158866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015045":{"id":"n1821015045","loc":[-85.5333228,42.0217889],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015046":{"id":"n1821015046","loc":[-85.5426891,42.0175924],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015048":{"id":"n1821015048","loc":[-85.5886836,41.9936474],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015050":{"id":"n1821015050","loc":[-85.6001152,41.9786467],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015051":{"id":"n1821015051","loc":[-85.6094064,41.9723655],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015053":{"id":"n1821015053","loc":[-85.605721,41.9749738],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015055":{"id":"n1821015055","loc":[-85.6106791,41.9705048],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015057":{"id":"n1821015057","loc":[-85.5210437,42.0307071],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015059":{"id":"n1821015059","loc":[-85.5995694,41.9786725],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:56Z","tags":{}},"n1821015060":{"id":"n1821015060","loc":[-85.5371638,42.0182938],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015062":{"id":"n1821015062","loc":[-85.6111766,41.9704593],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015065":{"id":"n1821015065","loc":[-85.577704,42.0034921],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015067":{"id":"n1821015067","loc":[-85.5570067,42.0093699],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015068":{"id":"n1821015068","loc":[-85.5920364,41.9845525],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015069":{"id":"n1821015069","loc":[-85.5252065,42.0253954],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015072":{"id":"n1821015072","loc":[-85.5664159,42.0088517],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015073":{"id":"n1821015073","loc":[-85.5880399,41.991905],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015075":{"id":"n1821015075","loc":[-85.6099871,41.9727861],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015076":{"id":"n1821015076","loc":[-85.5319603,42.0231478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015078":{"id":"n1821015078","loc":[-85.6036088,41.9751112],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015080":{"id":"n1821015080","loc":[-85.5983128,41.9789179],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015082":{"id":"n1821015082","loc":[-85.5614069,42.0071395],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015083":{"id":"n1821015083","loc":[-85.60968,41.9709738],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015086":{"id":"n1821015086","loc":[-85.5914195,41.9837351],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015087":{"id":"n1821015087","loc":[-85.5895473,41.9948036],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015090":{"id":"n1821015090","loc":[-85.5929913,41.9851905],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:57Z","tags":{}},"n1821015093":{"id":"n1821015093","loc":[-85.5907396,41.9838485],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015095":{"id":"n1821015095","loc":[-85.5893864,41.9880176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015096":{"id":"n1821015096","loc":[-85.5788024,42.0039807],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015097":{"id":"n1821015097","loc":[-85.5630592,42.0078411],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015098":{"id":"n1821015098","loc":[-85.5350609,42.0211274],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015099":{"id":"n1821015099","loc":[-85.5967195,41.9808679],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015100":{"id":"n1821015100","loc":[-85.5666734,42.0088119],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015101":{"id":"n1821015101","loc":[-85.564694,42.0077675],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015103":{"id":"n1821015103","loc":[-85.6066544,41.9726527],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015104":{"id":"n1821015104","loc":[-85.6011827,41.9769838],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015105":{"id":"n1821015105","loc":[-85.5972131,41.9776697],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015106":{"id":"n1821015106","loc":[-85.5880828,41.9903341],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015107":{"id":"n1821015107","loc":[-85.5510268,42.0130626],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015108":{"id":"n1821015108","loc":[-85.6102164,41.970543],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015109":{"id":"n1821015109","loc":[-85.5905344,41.9853899],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015111":{"id":"n1821015111","loc":[-85.5888821,41.9913429],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:58Z","tags":{}},"n1821015112":{"id":"n1821015112","loc":[-85.606295,41.9741921],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015114":{"id":"n1821015114","loc":[-85.5969556,41.9807443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015115":{"id":"n1821015115","loc":[-85.5882223,41.9934081],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015116":{"id":"n1821015116","loc":[-85.6104471,41.9724971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015118":{"id":"n1821015118","loc":[-85.5406091,42.0192162],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015120":{"id":"n1821015120","loc":[-85.589955,41.9888429],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015121":{"id":"n1821015121","loc":[-85.5598821,42.0092304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015122":{"id":"n1821015122","loc":[-85.545598,42.0144097],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015123":{"id":"n1821015123","loc":[-85.5649528,42.0079965],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015125":{"id":"n1821015125","loc":[-85.5883993,41.9917814],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015126":{"id":"n1821015126","loc":[-85.5295785,42.0239967],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015129":{"id":"n1821015129","loc":[-85.5648723,42.0078809],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015132":{"id":"n1821015132","loc":[-85.564989,42.0081103],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015133":{"id":"n1821015133","loc":[-85.5946127,41.9800841],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015134":{"id":"n1821015134","loc":[-85.583448,42.0019078],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015135":{"id":"n1821015135","loc":[-85.5905934,41.9871842],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015137":{"id":"n1821015137","loc":[-85.610608,41.9704752],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:25:59Z","tags":{}},"n1821015138":{"id":"n1821015138","loc":[-85.5752257,42.0052939],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015139":{"id":"n1821015139","loc":[-85.5893864,41.9943491],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015140":{"id":"n1821015140","loc":[-85.5426247,42.0169866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015141":{"id":"n1821015141","loc":[-85.562001,42.0074526],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015142":{"id":"n1821015142","loc":[-85.5212046,42.0301094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015143":{"id":"n1821015143","loc":[-85.602214,41.9784531],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015144":{"id":"n1821015144","loc":[-85.5858687,41.9948293],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015145":{"id":"n1821015145","loc":[-85.5608477,42.0074805],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015146":{"id":"n1821015146","loc":[-85.5651607,42.0083614],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015147":{"id":"n1821015147","loc":[-85.5288288,42.0242495],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015149":{"id":"n1821015149","loc":[-85.5450334,42.0146989],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015151":{"id":"n1821015151","loc":[-85.5578275,42.0092304],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015154":{"id":"n1821015154","loc":[-85.6056634,41.9724511],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015155":{"id":"n1821015155","loc":[-85.5902179,41.9852742],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015156":{"id":"n1821015156","loc":[-85.5156256,42.0387157],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015157":{"id":"n1821015157","loc":[-85.5734433,42.0059459],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015158":{"id":"n1821015158","loc":[-85.6050773,41.9731273],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015160":{"id":"n1821015160","loc":[-85.5223419,42.0275233],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015163":{"id":"n1821015163","loc":[-85.6053562,41.972525],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015164":{"id":"n1821015164","loc":[-85.5850412,41.9946082],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:00Z","tags":{}},"n1821015165":{"id":"n1821015165","loc":[-85.5359031,42.0186326],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015166":{"id":"n1821015166","loc":[-85.5608745,42.0077635],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015169":{"id":"n1821015169","loc":[-85.572876,42.0073189],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015171":{"id":"n1821015171","loc":[-85.5875424,41.9919188],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015172":{"id":"n1821015172","loc":[-85.5240116,42.0272581],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015173":{"id":"n1821015173","loc":[-85.5318369,42.0236818],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015174":{"id":"n1821015174","loc":[-85.566888,42.0086923],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015175":{"id":"n1821015175","loc":[-85.5931522,41.9850669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015176":{"id":"n1821015176","loc":[-85.5604842,42.0093199],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015177":{"id":"n1821015177","loc":[-85.5868168,41.9927543],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015178":{"id":"n1821015178","loc":[-85.6052275,41.9732549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015179":{"id":"n1821015179","loc":[-85.5910118,41.9900431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015182":{"id":"n1821015182","loc":[-85.5610032,42.0082897],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015183":{"id":"n1821015183","loc":[-85.5425443,42.0179431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015184":{"id":"n1821015184","loc":[-85.5843277,42.0014055],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015186":{"id":"n1821015186","loc":[-85.5733307,42.0063564],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015188":{"id":"n1821015188","loc":[-85.5277385,42.0248694],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015189":{"id":"n1821015189","loc":[-85.5558427,42.0108168],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:01Z","tags":{}},"n1821015190":{"id":"n1821015190","loc":[-85.5650587,42.0082618],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015191":{"id":"n1821015191","loc":[-85.5660351,42.0088278],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015192":{"id":"n1821015192","loc":[-85.5849768,41.9980049],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015194":{"id":"n1821015194","loc":[-85.5359139,42.0188199],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015195":{"id":"n1821015195","loc":[-85.593238,41.9849194],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015197":{"id":"n1821015197","loc":[-85.5850841,41.9983239],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015199":{"id":"n1821015199","loc":[-85.5983396,41.9794283],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015204":{"id":"n1821015204","loc":[-85.5452801,42.0145355],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015205":{"id":"n1821015205","loc":[-85.5340685,42.0218407],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015207":{"id":"n1821015207","loc":[-85.5773272,42.0034186],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015209":{"id":"n1821015209","loc":[-85.5535212,42.0132419],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015211":{"id":"n1821015211","loc":[-85.6107703,41.9706045],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:02Z","tags":{}},"n1821015212":{"id":"n1821015212","loc":[-85.6030066,41.9758193],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015213":{"id":"n1821015213","loc":[-85.5359943,42.0184213],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015214":{"id":"n1821015214","loc":[-85.5922993,41.9813305],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015215":{"id":"n1821015215","loc":[-85.5672689,42.0080465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015217":{"id":"n1821015217","loc":[-85.5160494,42.0365682],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015218":{"id":"n1821015218","loc":[-85.5401142,42.0190351],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015219":{"id":"n1821015219","loc":[-85.5607632,42.0092282],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015220":{"id":"n1821015220","loc":[-85.5866197,41.9947894],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015221":{"id":"n1821015221","loc":[-85.6017889,41.9765132],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015222":{"id":"n1821015222","loc":[-85.5595978,42.009059],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015226":{"id":"n1821015226","loc":[-85.5871494,41.9929018],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015227":{"id":"n1821015227","loc":[-85.5857708,41.9998866],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015228":{"id":"n1821015228","loc":[-85.5317135,42.0238094],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015231":{"id":"n1821015231","loc":[-85.5733521,42.0061372],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015233":{"id":"n1821015233","loc":[-85.5855991,42.0001936],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015234":{"id":"n1821015234","loc":[-85.5213924,42.029962],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015235":{"id":"n1821015235","loc":[-85.6052221,41.9726567],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015236":{"id":"n1821015236","loc":[-85.5763723,42.0035422],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015237":{"id":"n1821015237","loc":[-85.5858512,41.9966215],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015238":{"id":"n1821015238","loc":[-85.567061,42.008439],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:03Z","tags":{}},"n1821015239":{"id":"n1821015239","loc":[-85.5250563,42.0269057],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015240":{"id":"n1821015240","loc":[-85.5347551,42.0214263],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015241":{"id":"n1821015241","loc":[-85.6098463,41.9707066],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015242":{"id":"n1821015242","loc":[-85.5676927,42.0076519],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015243":{"id":"n1821015243","loc":[-85.516775,42.0322669],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015244":{"id":"n1821015244","loc":[-85.5762275,42.0036538],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015245":{"id":"n1821015245","loc":[-85.5583639,42.0090949],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015246":{"id":"n1821015246","loc":[-85.5554041,42.0106432],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015247":{"id":"n1821015247","loc":[-85.5973364,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015248":{"id":"n1821015248","loc":[-85.6098945,41.9717513],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015249":{"id":"n1821015249","loc":[-85.6045315,41.9751511],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015250":{"id":"n1821015250","loc":[-85.5579938,42.0092264],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015253":{"id":"n1821015253","loc":[-85.6058873,41.9724652],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015254":{"id":"n1821015254","loc":[-85.5869456,41.9947517],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015255":{"id":"n1821015255","loc":[-85.5936565,41.9823713],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015256":{"id":"n1821015256","loc":[-85.5218269,42.0278102],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015258":{"id":"n1821015258","loc":[-85.5887802,41.9905534],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015259":{"id":"n1821015259","loc":[-85.5901924,41.9904515],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015263":{"id":"n1821015263","loc":[-85.5249222,42.0255787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015265":{"id":"n1821015265","loc":[-85.5175206,42.0321672],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015266":{"id":"n1821015266","loc":[-85.5275722,42.0254034],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015267":{"id":"n1821015267","loc":[-85.6016226,41.9765451],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:04Z","tags":{}},"n1821015269":{"id":"n1821015269","loc":[-85.5569316,42.011032],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015271":{"id":"n1821015271","loc":[-85.6010714,41.9785209],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015272":{"id":"n1821015272","loc":[-85.6050666,41.9729917],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015273":{"id":"n1821015273","loc":[-85.5891235,41.99529],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015274":{"id":"n1821015274","loc":[-85.515454,42.0376439],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015276":{"id":"n1821015276","loc":[-85.5776021,42.0034443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015277":{"id":"n1821015277","loc":[-85.6041707,41.9751453],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015278":{"id":"n1821015278","loc":[-85.5444701,42.0167435],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015280":{"id":"n1821015280","loc":[-85.5923274,41.9852202],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015283":{"id":"n1821015283","loc":[-85.5893649,41.9900271],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015284":{"id":"n1821015284","loc":[-85.5933453,41.9804412],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015285":{"id":"n1821015285","loc":[-85.5247237,42.026017],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015286":{"id":"n1821015286","loc":[-85.5286182,42.0242477],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015287":{"id":"n1821015287","loc":[-85.5904003,41.9888549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:05Z","tags":{}},"n1821015288":{"id":"n1821015288","loc":[-85.6062146,41.9739369],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015290":{"id":"n1821015290","loc":[-85.5762596,42.0052602],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015292":{"id":"n1821015292","loc":[-85.5849715,41.9975465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015293":{"id":"n1821015293","loc":[-85.585229,42.0006241],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015294":{"id":"n1821015294","loc":[-85.5926922,41.9805946],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015295":{"id":"n1821015295","loc":[-85.5703387,42.0089133],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015299":{"id":"n1821015299","loc":[-85.5789955,42.0038611],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015301":{"id":"n1821015301","loc":[-85.6072888,41.9721918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015302":{"id":"n1821015302","loc":[-85.5356349,42.0200992],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015304":{"id":"n1821015304","loc":[-85.5891772,41.994066],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015306":{"id":"n1821015306","loc":[-85.606295,41.9744952],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015307":{"id":"n1821015307","loc":[-85.538871,42.0186583],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015308":{"id":"n1821015308","loc":[-85.587997,41.994971],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015311":{"id":"n1821015311","loc":[-85.606869,41.9725809],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:06Z","tags":{}},"n1821015312":{"id":"n1821015312","loc":[-85.5171974,42.0339943],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015314":{"id":"n1821015314","loc":[-85.5327435,42.0220479],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015315":{"id":"n1821015315","loc":[-85.5383439,42.0187282],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015316":{"id":"n1821015316","loc":[-85.5248095,42.0263119],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015318":{"id":"n1821015318","loc":[-85.5732502,42.0073051],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015319":{"id":"n1821015319","loc":[-85.5924226,41.9852663],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015321":{"id":"n1821015321","loc":[-85.5179001,42.0353052],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015322":{"id":"n1821015322","loc":[-85.5456771,42.0162413],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015323":{"id":"n1821015323","loc":[-85.5936618,41.9829096],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015325":{"id":"n1821015325","loc":[-85.5656931,42.0086582],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015326":{"id":"n1821015326","loc":[-85.5448456,42.0150975],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015327":{"id":"n1821015327","loc":[-85.5220039,42.027615],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015329":{"id":"n1821015329","loc":[-85.517884,42.0354885],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015330":{"id":"n1821015330","loc":[-85.5576666,42.0101671],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015332":{"id":"n1821015332","loc":[-85.5368754,42.0181402],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015333":{"id":"n1821015333","loc":[-85.5367078,42.0181145],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015334":{"id":"n1821015334","loc":[-85.5903909,41.9904316],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015335":{"id":"n1821015335","loc":[-85.5430767,42.0163587],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015336":{"id":"n1821015336","loc":[-85.5277492,42.0252878],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015337":{"id":"n1821015337","loc":[-85.5312146,42.0236898],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:07Z","tags":{}},"n1821015338":{"id":"n1821015338","loc":[-85.5886568,41.991614],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015339":{"id":"n1821015339","loc":[-85.5782498,42.0040883],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015341":{"id":"n1821015341","loc":[-85.562233,42.0076457],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015342":{"id":"n1821015342","loc":[-85.588626,41.9952479],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015343":{"id":"n1821015343","loc":[-85.5762865,42.005033],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015344":{"id":"n1821015344","loc":[-85.5850841,41.9971478],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015346":{"id":"n1821015346","loc":[-85.5643144,42.0076936],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015347":{"id":"n1821015347","loc":[-85.5164893,42.0359467],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015348":{"id":"n1821015348","loc":[-85.5906846,41.9903541],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015349":{"id":"n1821015349","loc":[-85.557688,42.0107769],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015350":{"id":"n1821015350","loc":[-85.5363698,42.0181424],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015351":{"id":"n1821015351","loc":[-85.5939636,41.9801918],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015352":{"id":"n1821015352","loc":[-85.5524041,42.0131644],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015354":{"id":"n1821015354","loc":[-85.5308606,42.0236221],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015355":{"id":"n1821015355","loc":[-85.5877449,41.9932367],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015356":{"id":"n1821015356","loc":[-85.519885,42.0318586],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015357":{"id":"n1821015357","loc":[-85.5454035,42.0168431],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015358":{"id":"n1821015358","loc":[-85.5970629,41.9781881],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015359":{"id":"n1821015359","loc":[-85.5932541,41.9844767],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015360":{"id":"n1821015360","loc":[-85.5970736,41.9778252],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015361":{"id":"n1821015361","loc":[-85.537031,42.0181601],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015362":{"id":"n1821015362","loc":[-85.5548355,42.0105156],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015363":{"id":"n1821015363","loc":[-85.5168648,42.0336158],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:08Z","tags":{}},"n1821015365":{"id":"n1821015365","loc":[-85.5870435,41.9919507],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015366":{"id":"n1821015366","loc":[-85.5719681,42.0075443],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015367":{"id":"n1821015367","loc":[-85.5969985,41.9780446],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015368":{"id":"n1821015368","loc":[-85.5926761,41.98528],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015369":{"id":"n1821015369","loc":[-85.5224009,42.0293444],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015371":{"id":"n1821015371","loc":[-85.518737,42.0322651],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015372":{"id":"n1821015372","loc":[-85.6064573,41.9726465],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015373":{"id":"n1821015373","loc":[-85.5201103,42.0313088],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015375":{"id":"n1821015375","loc":[-85.5378182,42.0186844],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015376":{"id":"n1821015376","loc":[-85.6109741,41.9706882],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015377":{"id":"n1821015377","loc":[-85.5993333,41.9785488],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015378":{"id":"n1821015378","loc":[-85.5889787,41.9907368],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015380":{"id":"n1821015380","loc":[-85.6060161,41.9737375],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015381":{"id":"n1821015381","loc":[-85.5743016,42.0053679],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015382":{"id":"n1821015382","loc":[-85.6014724,41.9776099],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015383":{"id":"n1821015383","loc":[-85.5574426,42.0091644],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:09Z","tags":{}},"n1821015385":{"id":"n1821015385","loc":[-85.5208613,42.0309302],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015386":{"id":"n1821015386","loc":[-85.5919023,41.9837789],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015387":{"id":"n1821015387","loc":[-85.5455484,42.0160221],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015392":{"id":"n1821015392","loc":[-85.5801757,42.0028964],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015395":{"id":"n1821015395","loc":[-85.5493785,42.0139974],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015396":{"id":"n1821015396","loc":[-85.5449475,42.015488],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015398":{"id":"n1821015398","loc":[-85.611123,41.9706627],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015400":{"id":"n1821015400","loc":[-85.5935706,41.9822477],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015401":{"id":"n1821015401","loc":[-85.5724254,42.0073508],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015403":{"id":"n1821015403","loc":[-85.5486812,42.0143442],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:10Z","tags":{}},"n1821015404":{"id":"n1821015404","loc":[-85.5161835,42.0327711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015406":{"id":"n1821015406","loc":[-85.5921705,41.9851107],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015407":{"id":"n1821015407","loc":[-85.531912,42.0234069],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015410":{"id":"n1821015410","loc":[-85.5292566,42.024176],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015411":{"id":"n1821015411","loc":[-85.5845316,41.9948315],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015413":{"id":"n1821015413","loc":[-85.5217947,42.0280413],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015414":{"id":"n1821015414","loc":[-85.5527367,42.013272],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015415":{"id":"n1821015415","loc":[-85.5191179,42.0321973],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015416":{"id":"n1821015416","loc":[-85.5540241,42.0128655],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015418":{"id":"n1821015418","loc":[-85.5272892,42.0254849],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015419":{"id":"n1821015419","loc":[-85.5449744,42.016867],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015420":{"id":"n1821015420","loc":[-85.5852665,41.9986787],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015421":{"id":"n1821015421","loc":[-85.6102701,41.972186],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015423":{"id":"n1821015423","loc":[-85.6026365,41.9764972],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015427":{"id":"n1821015427","loc":[-85.5898692,41.9841498],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:11Z","tags":{}},"n1821015429":{"id":"n1821015429","loc":[-85.5422546,42.0183855],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015430":{"id":"n1821015430","loc":[-85.5866505,41.9925549],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015431":{"id":"n1821015431","loc":[-85.5234376,42.0273577],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015432":{"id":"n1821015432","loc":[-85.6096746,41.9727284],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015433":{"id":"n1821015433","loc":[-85.5824891,42.0021567],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015434":{"id":"n1821015434","loc":[-85.5923905,41.9841139],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015435":{"id":"n1821015435","loc":[-85.5874565,41.9948014],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015437":{"id":"n1821015437","loc":[-85.6055279,41.9734423],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015438":{"id":"n1821015438","loc":[-85.5299379,42.0237376],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015439":{"id":"n1821015439","loc":[-85.5155022,42.0383651],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015442":{"id":"n1821015442","loc":[-85.527422,42.0254711],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015443":{"id":"n1821015443","loc":[-85.5920699,41.9849291],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015444":{"id":"n1821015444","loc":[-85.5639711,42.0077494],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015445":{"id":"n1821015445","loc":[-85.5162586,42.0361777],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015446":{"id":"n1821015446","loc":[-85.5220039,42.029695],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015448":{"id":"n1821015448","loc":[-85.5176641,42.0356956],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015449":{"id":"n1821015449","loc":[-85.5930556,41.9841577],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015451":{"id":"n1821015451","loc":[-85.5320783,42.0228848],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015452":{"id":"n1821015452","loc":[-85.5170096,42.0357235],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015453":{"id":"n1821015453","loc":[-85.5571355,42.009613],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015454":{"id":"n1821015454","loc":[-85.5609979,42.009059],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015455":{"id":"n1821015455","loc":[-85.6097336,41.9708342],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"n1821015456":{"id":"n1821015456","loc":[-85.5884476,41.9904218],"version":"1","changeset":"12181249","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-11T02:26:12Z","tags":{}},"w170843846":{"id":"w170843846","version":"1","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:03Z","tags":{"source":"Bing","waterway":"river"},"nodes":["n1819790555","n1819790762","n1819790547","n1819790618","n1819790898","n1819790796","n1819790534","n1819790543","n1819790541","n1819790687","n1819790877","n1819790811","n1819790670"]},"w209083541":{"id":"w209083541","version":"1","changeset":"15306846","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-03-09T19:50:46Z","tags":{"name":"Portage River","source":"Bing","waterway":"river"},"nodes":["n1821014848","n1821015156","n1821015439","n1821014763","n1821014824","n1821015274","n1821014764","n1821014791","n1821014957","n1821015217","n1821015445","n1821015347","n1821014893","n1821015452","n1821015017","n1821015448","n1821014968","n1821015329","n1821015321","n1821014992","n1821014948","n1821014757","n1821014983","n1821015312","n1821015363","n1821014924","n1821014873","n1821014932","n1821014668","n1821015404","n1821014716","n1821015243","n1821015265","n1821014710","n1821015371","n1821015415","n1821014870","n1821015356","n1821015373","n1821014681","n1821014714","n1821015385","n1821014911","n1821015057","n1821014867","n1821014998","n1821015142","n1821015234","n1821015446","n1821014862","n1821015369","n1821014945","n1821015003","n1821014667","n1821015413","n1821015256","n1821015327","n1821015160","n1821014907","n1821015431","n1821015172","n1821015034","n1821014741","n1821015033","n1821015239","n1821015007","n1821015316","n1821015285","n1821014633","n1821015263","n1821015069","n1821014846","n1821014779","n1821015011","n1821015012","n1821014845","n1821015418","n1821015442","n1821015266","n1821015336","n1821014755","n1821015188","n1821014925","n1821014816","n1821014869","n1821014967","n1821015286","n1821015147","n1821015410","n1821015126","n1821015438","n1821015018","n1821015354","n1821015337","n1821014766","n1821014740","n1821015228","n1821015173","n1821015407","n1821015076","n1821015451","n1821015024","n1821015314","n1821014784","n1821015045","n1821014735","n1821015205","n1821014986","n1821015240","n1821015098","n1821014825","n1821015302","n1821014918","n1821014718","n1821014896","n1821014853","n1821015194","n1821015165","n1821015213","n1821014991","n1821015350","n1821015333","n1821015332","n1821015361","n1821015060","n1821014914","n1821015375","n1821015315","n1821015307","n1821014906","n1821014751","n1821014666","n1821015218","n1821014817","n1821015118","n1821014674","n1821015038","n1821014973","n1821015429","n1821015183","n1821015046","n1821014803","n1821015140","n1821015009","n1821014749","n1821015335","n1821014711","n1821014854","n1821015278","n1821015419","n1821014648","n1821015357","n1821014637","n1821014988","n1821015322","n1821015387","n1821015042","n1821014833","n1821015396","n1821015326","n1821014691","n1821015149","n1821015204","n1821015122","n1821014782","n1821014982","n1821014921","n1821014936","n1821014969","n1821014881","n1821015403","n1821014805","n1821015395","n1821014892","n1821014826","n1821014844","n1821015107","n1821015014","n1821014955","n1821015352","n1821015414","n1821014746","n1821015209","n1821014770","n1821015416","n1821014661","n1821014857","n1821014814","n1821014754","n1821014721","n1821014727","n1821015362","n1821015029","n1821015246","n1821015189","n1821014627","n1821015269","n1821014808","n1821014962","n1821015349","n1821015041","n1821014722","n1821015330","n1821015453","n1821015067","n1821014643","n1821014802","n1821015383","n1821015151","n1821015250","n1821015245","n1821014772","n1821014899","n1821015222","n1821015121","n1821014951","n1821015176","n1821015219","n1821015454","n1821014972","n1821014917","n1821015182","n1821015166","n1821015145","n1821014910","n1821015082","n1821014678","n1821014806","n1821015141","n1821015341","n1821014788","n1821015097","n1821014995","n1821015444","n1821015346","n1821015101","n1821015129","n1821015123","n1821015132","n1821015190","n1821015146","n1821015325","n1821015191","n1821015072","n1821015100","n1821015174","n1821015238","n1821015215","n1821014700","n1821015242","n1821014841","n1821014905","n1821014874","n1821014883","n1821014729","n1821014866","n1821014828","n1821015295","n1821014931","n1821014859","n1821014912","n1821014783","n1821014752","n1821014961","n1821015366","n1821015401","n1821015169","n1821015318","n1821014996","n1821014747","n1821014963","n1821014670","n1821015186","n1821015231","n1821015157","n1821014812","n1821015381","n1821014887","n1821015138","n1821014704","n1821014787","n1821014922","n1821015290","n1821015343","n1821014651","n1821014980","n1821014960","n1821015244","n1821015236","n1821015006","n1821014694","n1821014759","n1821015207","n1821015276","n1821015065","n1821014863","n1821014660","n1821014902","n1821014645","n1821015339","n1821014871","n1821015096","n1821015299","n1821014798","n1821014638","n1821015392","n1821014835","n1821014762","n1821014642","n1821015433","n1821014786","n1821015134","n1821014855","n1821015184","n1821014850","n1821015293","n1821015233","n1821015227","n1821014876","n1821014985","n1821014843","n1821015420","n1821015197","n1821015192","n1821015292","n1821015344","n1821014742","n1821014726","n1821015237","n1821014796","n1821014908","n1821014975","n1821014769","n1821014688","n1821014860","n1821014895","n1821014676","n1821015411","n1821014736","n1821015164","n1821014647","n1821015144","n1821014919","n1821015220","n1821015254","n1821015435","n1821015308","n1821015342","n1821014830","n1821015273","n1821014658","n1821014781","n1821015087","n1821015139","n1821015304","n1821014839","n1821015048","n1821015115","n1821015355","n1821015226","n1821015177","n1821015430","n1821014965","n1821014725","n1821015365","n1821015171","n1821015073","n1821015125","n1821015338","n1821015111","n1821014950","n1821015378","n1821015258","n1821015456","n1821015106","n1821014832","n1821014888","n1821014795","n1821014872","n1821014810","n1821014705","n1821014804","n1821014820","n1821015283","n1821014938","n1821014689","n1821015259","n1821015334","n1821015348","n1821014635","n1821015179","n1821014864","n1821014890","n1821015020","n1821014898","n1821015287","n1821015120","n1821014984","n1821014743","n1821014790","n1821014765","n1821014777","n1821015095","n1821014653","n1821015135","n1821014836","n1821014964","n1821014974","n1821014636","n1821014682","n1821014663","n1821014665","n1821015109","n1821015155","n1821014930","n1821014669","n1821015004","n1821015427","n1821014916","n1821015093","n1821015086","n1821015386","n1821014799","n1821014913","n1821015434","n1821014728","n1821014900","n1821015068","n1821015039","n1821015443","n1821015406","n1821015280","n1821015319","n1821015368","n1821014774","n1821015090","n1821015175","n1821015195","n1821014687","n1821015359","n1821015449","n1821014956","n1821014838","n1821014768","n1821014698","n1821015323","n1821014756","n1821015255","n1821015400","n1821014717","n1821014868","n1821014778","n1821015214","n1821014944","n1821014697","n1821014671","n1821014928","n1821015294","n1821014822","n1821015284","n1821015351","n1821015022","n1821015133","n1821014644","n1821015010","n1821014625","n1821014657","n1821014946","n1821015099","n1821015114","n1821014629","n1821014865","n1821014997","n1821014926","n1821014933","n1821015199","n1821014819","n1821015080","n1821014692","n1821014677","n1821015358","n1821015367","n1821015360","n1821015105","n1821015247","n1821015005","n1821014809","n1821014794","n1821014761","n1821014879","n1821014801","n1821015377","n1821015059","n1821014730","n1821015050","n1821015271","n1821015143","n1821014989","n1821015019","n1821014672","n1821014649","n1821014684","n1821014703","n1821015021","n1821015382","n1821014842","n1821014720","n1821014847","n1821015104","n1821014987","n1821014886","n1821015267","n1821015221","n1821015015","n1821015423","n1821014954","n1821014903","n1821014939","n1821015212","n1821014789","n1821014712","n1821014708","n1821015078","n1821015277","n1821015249","n1821014646","n1821014793","n1821015053","n1821014707","n1821015306","n1821015112","n1821015288","n1821015380","n1821015437","n1821015178","n1821015158","n1821015272","n1821015235","n1821015163","n1821015154","n1821015253","n1821014632","n1821015372","n1821015103","n1821015311","n1821015301","n1821014885","n1821014811","n1821014977","n1821015051","n1821014942","n1821014745","n1821015432","n1821015075","n1821014664","n1821014695","n1821015116","n1821014639","n1821015421","n1821015248","n1821014758","n1821014834","n1821015083","n1821015455","n1821015241","n1821015108","n1821014713","n1821015137","n1821015055","n1821015211","n1821014904","n1821015376","n1821015398","n1821014771","n1821014840","n1821015062","n1819790554","n1819790560","n1819790767","n1819790696","n1819790706","n1819790606","n1819790607","n1819790544","n1819790779","n1819790760","n1819790926","n1819790927","n1819790647","n1819790657","n1819790649","n1819790679","n1819790915","n1819790739","n1819790549","n1819790671","n1819790686","n1819790798","n1819790791","n1819790563","n1819790720","n1819790704","n1819790795","n1819790836","n1819790622","n1819790615","n1819790654","n1819790931","n1819790595","n1819790753","n1819790612","n1819790623","n1819790564","n1819790552","n1819790645","n1819790625","n1819790605","n1819790668","n1819790731","n1819790718","n1819790781","n1819790665","n1819790659","n1819790726","n1819790642","n1819790854","n1819790697","n1819790867","n1819790833","n1819790555","n1819790774","n1819790881","n1819790530","n1819790909","n1819790891","n1819790590","n1819790738","n1819790609","n1819790528","n1819790674","n1819790583","n1819790559","n1819790863","n1819790912","n1819790685","n1819790913"]},"n185955128":{"id":"n185955128","loc":[-85.6189367,41.9519432],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185948818":{"id":"n185948818","loc":[-85.616755,41.952231],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:53:44Z","tags":{}},"n185978819":{"id":"n185978819","loc":[-85.616773,41.954737],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n185978821":{"id":"n185978821","loc":[-85.616699,41.954742],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:35Z","tags":{}},"n2138420714":{"id":"n2138420714","loc":[-85.6176304,41.9515154],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420715":{"id":"n2138420715","loc":[-85.6177355,41.9515717],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420716":{"id":"n2138420716","loc":[-85.6192901,41.951573],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420718":{"id":"n2138420718","loc":[-85.6171481,41.9513579],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420719":{"id":"n2138420719","loc":[-85.6165981,41.9519199],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420720":{"id":"n2138420720","loc":[-85.6165719,41.9519922],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420721":{"id":"n2138420721","loc":[-85.6165832,41.9520757],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420722":{"id":"n2138420722","loc":[-85.6166355,41.9521453],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420723":{"id":"n2138420723","loc":[-85.6169161,41.9522788],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420724":{"id":"n2138420724","loc":[-85.6170882,41.9522538],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420725":{"id":"n2138420725","loc":[-85.6189204,41.9514674],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420726":{"id":"n2138420726","loc":[-85.6180346,41.9514735],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420727":{"id":"n2138420727","loc":[-85.6180362,41.9515719],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420728":{"id":"n2138420728","loc":[-85.6189204,41.9515727],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420744":{"id":"n2138420744","loc":[-85.618919,41.9519571],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420745":{"id":"n2138420745","loc":[-85.6194575,41.9522374],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420746":{"id":"n2138420746","loc":[-85.6181777,41.9536179],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420747":{"id":"n2138420747","loc":[-85.6176582,41.9533658],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420748":{"id":"n2138420748","loc":[-85.6179871,41.9530242],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420749":{"id":"n2138420749","loc":[-85.618429,41.9532476],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420750":{"id":"n2138420750","loc":[-85.6185538,41.9531194],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420751":{"id":"n2138420751","loc":[-85.6180765,41.9528677],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420752":{"id":"n2138420752","loc":[-85.6180394,41.9528855],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420753":{"id":"n2138420753","loc":[-85.6193752,41.9521695],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420754":{"id":"n2138420754","loc":[-85.6181374,41.9535376],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420755":{"id":"n2138420755","loc":[-85.6179898,41.9535545],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420756":{"id":"n2138420756","loc":[-85.6177286,41.9534228],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420757":{"id":"n2138420757","loc":[-85.6181011,41.9530292],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420759":{"id":"n2138420759","loc":[-85.6185158,41.9531194],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420760":{"id":"n2138420760","loc":[-85.6191318,41.9520425],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420761":{"id":"n2138420761","loc":[-85.6182348,41.9529815],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420762":{"id":"n2138420762","loc":[-85.6184853,41.9524248],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420763":{"id":"n2138420763","loc":[-85.6186764,41.9525193],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420764":{"id":"n2138420764","loc":[-85.6189421,41.9526483],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420765":{"id":"n2138420765","loc":[-85.6182875,41.9531222],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420766":{"id":"n2138420766","loc":[-85.6179141,41.9535163],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420767":{"id":"n2138420767","loc":[-85.6178363,41.9535735],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n185948824":{"id":"n185948824","loc":[-85.6165667,41.9529715],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n2138420758":{"id":"n2138420758","loc":[-85.6184408,41.953201],"version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:47Z","tags":{}},"n2138422349":{"id":"n2138422349","loc":[-85.6175136,41.9533346],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422350":{"id":"n2138422350","loc":[-85.6171867,41.9531679],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422351":{"id":"n2138422351","loc":[-85.61722,41.9531305],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422352":{"id":"n2138422352","loc":[-85.6171889,41.9531158],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422353":{"id":"n2138422353","loc":[-85.6171733,41.9531284],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422354":{"id":"n2138422354","loc":[-85.616765,41.9529207],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422355":{"id":"n2138422355","loc":[-85.6167565,41.9529355],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422356":{"id":"n2138422356","loc":[-85.6164772,41.9527911],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422357":{"id":"n2138422357","loc":[-85.6168227,41.9524261],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422358":{"id":"n2138422358","loc":[-85.6171913,41.9526158],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422359":{"id":"n2138422359","loc":[-85.6172403,41.9525589],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422360":{"id":"n2138422360","loc":[-85.6172097,41.952542],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422361":{"id":"n2138422361","loc":[-85.6173948,41.9523512],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422362":{"id":"n2138422362","loc":[-85.6174256,41.9523678],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422363":{"id":"n2138422363","loc":[-85.6174831,41.9523086],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:27Z","tags":{}},"n2138422364":{"id":"n2138422364","loc":[-85.6173316,41.9522289],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422365":{"id":"n2138422365","loc":[-85.6174507,41.9521024],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422366":{"id":"n2138422366","loc":[-85.6174773,41.9521155],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422367":{"id":"n2138422367","loc":[-85.6176577,41.9519232],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422368":{"id":"n2138422368","loc":[-85.6176336,41.9519105],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422369":{"id":"n2138422369","loc":[-85.617747,41.9517861],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422370":{"id":"n2138422370","loc":[-85.6182675,41.9520559],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422371":{"id":"n2138422371","loc":[-85.6182105,41.9521219],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422372":{"id":"n2138422372","loc":[-85.6183863,41.9522203],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422373":{"id":"n2138422373","loc":[-85.6180984,41.9525266],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422374":{"id":"n2138422374","loc":[-85.6179159,41.9524295],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422375":{"id":"n2138422375","loc":[-85.617854,41.9524979],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422376":{"id":"n2138422376","loc":[-85.6177686,41.9524531],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422377":{"id":"n2138422377","loc":[-85.6174716,41.9527765],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138422378":{"id":"n2138422378","loc":[-85.6178545,41.9529756],"version":"1","changeset":"14878856","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:12:28Z","tags":{}},"n2138425424":{"id":"n2138425424","loc":[-85.6171736,41.9536385],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425425":{"id":"n2138425425","loc":[-85.6180159,41.9535782],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425426":{"id":"n2138425426","loc":[-85.6181068,41.9536282],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425427":{"id":"n2138425427","loc":[-85.6180673,41.9542678],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425428":{"id":"n2138425428","loc":[-85.6178636,41.9542634],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425429":{"id":"n2138425429","loc":[-85.6176204,41.9542046],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425430":{"id":"n2138425430","loc":[-85.6174366,41.9541031],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425431":{"id":"n2138425431","loc":[-85.6172942,41.9539781],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425432":{"id":"n2138425432","loc":[-85.6172171,41.9538399],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425433":{"id":"n2138425433","loc":[-85.6168138,41.9543266],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425434":{"id":"n2138425434","loc":[-85.6167779,41.9538098],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425435":{"id":"n2138425435","loc":[-85.6165849,41.9537073],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425441":{"id":"n2138425441","loc":[-85.616458,41.9543184],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425442":{"id":"n2138425442","loc":[-85.6166428,41.954345],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425445":{"id":"n2138425445","loc":[-85.6181332,41.9514117],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425446":{"id":"n2138425446","loc":[-85.6183263,41.9514111],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425447":{"id":"n2138425447","loc":[-85.6185033,41.9514102],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425449":{"id":"n2138425449","loc":[-85.6186809,41.9514093],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425451":{"id":"n2138425451","loc":[-85.6188681,41.9514082],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138436008":{"id":"n2138436008","loc":[-85.6170474,41.9513604],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436009":{"id":"n2138436009","loc":[-85.6164937,41.9519586],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436010":{"id":"n2138436010","loc":[-85.616497,41.9520725],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436011":{"id":"n2138436011","loc":[-85.6165654,41.9521645],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436012":{"id":"n2138436012","loc":[-85.6166631,41.9522178],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436013":{"id":"n2138436013","loc":[-85.6167327,41.9522554],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436014":{"id":"n2138436014","loc":[-85.6172383,41.9525125],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138439319":{"id":"n2138439319","loc":[-85.6170432,41.9524057],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439320":{"id":"n2138439320","loc":[-85.617691,41.9517107],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439321":{"id":"n2138439321","loc":[-85.6177727,41.9516794],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439322":{"id":"n2138439322","loc":[-85.619085,41.9516811],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439323":{"id":"n2138439323","loc":[-85.6179432,41.952895],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439324":{"id":"n2138439324","loc":[-85.6180389,41.9529384],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439325":{"id":"n2138439325","loc":[-85.6176303,41.9533604],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439326":{"id":"n2138439326","loc":[-85.6175538,41.9534396],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439327":{"id":"n2138439327","loc":[-85.6173806,41.9523658],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439328":{"id":"n2138439328","loc":[-85.6171841,41.9522542],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439329":{"id":"n2138439329","loc":[-85.6172077,41.9524958],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439330":{"id":"n2138439330","loc":[-85.6171235,41.9525809],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439331":{"id":"n2138439331","loc":[-85.6180938,41.9527349],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439332":{"id":"n2138439332","loc":[-85.6177023,41.9525253],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439333":{"id":"n2138439333","loc":[-85.6175543,41.9526865],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n2138439334":{"id":"n2138439334","loc":[-85.6179589,41.9528783],"version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{}},"n185948820":{"id":"n185948820","loc":[-85.6163249,41.952701],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185948822":{"id":"n185948822","loc":[-85.6163757,41.952855],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185955123":{"id":"n185955123","loc":[-85.6198103,41.9510408],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185958839":{"id":"n185958839","loc":[-85.611651,41.954761],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185965033":{"id":"n185965033","loc":[-85.614195,41.954754],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185976502":{"id":"n185976502","loc":[-85.617375,41.947559],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:07:32Z","tags":{}},"n185976504":{"id":"n185976504","loc":[-85.6174164,41.9510804],"version":"3","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{}},"n185978828":{"id":"n185978828","loc":[-85.613542,41.954756],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:36Z","tags":{}},"n185978830":{"id":"n185978830","loc":[-85.610373,41.954774],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:08:36Z","tags":{}},"n2138420713":{"id":"n2138420713","loc":[-85.6174641,41.9506942],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:11Z","tags":{}},"n2138420717":{"id":"n2138420717","loc":[-85.6173027,41.9512895],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:12Z","tags":{}},"n2138420768":{"id":"n2138420768","loc":[-85.61745,41.9501974],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138420773":{"id":"n2138420773","loc":[-85.6174135,41.9489136],"version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{}},"n2138425436":{"id":"n2138425436","loc":[-85.6159148,41.9538036],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:40Z","tags":{}},"n2138425437":{"id":"n2138425437","loc":[-85.6159534,41.9539677],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425438":{"id":"n2138425438","loc":[-85.6160306,41.9540846],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425439":{"id":"n2138425439","loc":[-85.6161354,41.954181],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425440":{"id":"n2138425440","loc":[-85.6162733,41.954263],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425443":{"id":"n2138425443","loc":[-85.6183273,41.9510826],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425444":{"id":"n2138425444","loc":[-85.6181354,41.9510835],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425448":{"id":"n2138425448","loc":[-85.6185033,41.9510816],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425450":{"id":"n2138425450","loc":[-85.6186816,41.9510808],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138425452":{"id":"n2138425452","loc":[-85.6188641,41.9510818],"version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:41Z","tags":{}},"n2138435984":{"id":"n2138435984","loc":[-85.6167607,41.9501009],"version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:47Z","tags":{}},"n2138436000":{"id":"n2138436000","loc":[-85.6173169,41.947558],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436001":{"id":"n2138436001","loc":[-85.6173362,41.948883],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436002":{"id":"n2138436002","loc":[-85.6167791,41.9492952],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436003":{"id":"n2138436003","loc":[-85.6167543,41.949349],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436004":{"id":"n2138436004","loc":[-85.6167648,41.9509125],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436005":{"id":"n2138436005","loc":[-85.6168832,41.9510412],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436006":{"id":"n2138436006","loc":[-85.6170045,41.9511417],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:01Z","tags":{}},"n2138436007":{"id":"n2138436007","loc":[-85.6170624,41.9512483],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436017":{"id":"n2138436017","loc":[-85.6168094,41.9492729],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436021":{"id":"n2138436021","loc":[-85.6167553,41.9494886],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436023":{"id":"n2138436023","loc":[-85.6167585,41.9499707],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"n2138436025":{"id":"n2138436025","loc":[-85.6167567,41.9497018],"version":"1","changeset":"14878954","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:47:02Z","tags":{}},"w203838284":{"id":"w203838284","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"baseball"},"nodes":["n2138425424","n2138425425","n2138425426","n2138425427","n2138425428","n2138425429","n2138425430","n2138425431","n2138425432","n2138425424"]},"w203837928":{"id":"w203837928","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"highway":"service"},"nodes":["n2138420717","n2138420718","n2138420719","n2138420720","n2138420721","n2138420722","n185948818","n2138420723","n2138420724","n2138420715"]},"w203839364":{"id":"w203839364","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439331","n2138439332"]},"w203837932":{"id":"w203837932","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2138420744","n2138420745","n2138420746","n2138420747","n2138420748","n2138420749","n2138420750","n2138420751","n2138420744"]},"w203839362":{"id":"w203839362","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439327","n2138439328"]},"w203839363":{"id":"w203839363","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439329","n2138439330"]},"w203837933":{"id":"w203837933","version":"2","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:42Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n185955128","n2138420760","n2138420753","n2138420764","n2138420759","n2138420758","n2138420754","n2138420755","n2138420766","n2138420756"]},"w203837936":{"id":"w203837936","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420765","n2138420766"]},"w17966364":{"id":"w17966364","version":"2","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"access":"private","highway":"service","name":"Collins Dr","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Collins","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313686","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185961362","n185976502","n2138420773","n2138420768","n2138420713","n185976504","n2138420717","n2138420714","n2138420715","n2138420727","n2138420728","n2138420716"]},"w203838040":{"id":"w203838040","version":"3","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:19Z","tags":{"amenity":"school","area":"yes","building":"yes","name":"Three Rivers Middle School"},"nodes":["n2138422349","n2138422350","n2138422351","n2138422352","n2138422353","n2138422354","n2138422355","n2138422356","n2138422357","n2138439330","n2138422358","n2138422359","n2138422360","n2138436014","n2138439327","n2138422361","n2138422362","n2138422363","n2138422364","n2138422365","n2138422366","n2138422367","n2138422368","n2138422369","n2138422370","n2138422371","n2138422372","n2138422373","n2138422374","n2138422375","n2138422376","n2138439332","n2138439333","n2138422377","n2138422378","n2138422349"]},"w17964049":{"id":"w17964049","version":"3","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:46Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15335181","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955120","n185955123","n2138420716","n185955128","n2138420762","n2138420752","n2138420761","n2138420759"]},"w41074899":{"id":"w41074899","version":"4","changeset":"14676554","user":"bbmiller","uid":"451048","visible":"true","timestamp":"2013-01-16T20:05:18Z","tags":{"highway":"secondary","name":"E Hoffman St","ref":"M 60","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Hoffman","tiger:name_direction_prefix":"E","tiger:name_type":"St","tiger:reviewed":"no","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978817","n185978819","n185978821","n185965033","n185978828","n185958839","n185978830"]},"w203839365":{"id":"w203839365","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439333","n2138439334"]},"w203837935":{"id":"w203837935","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420762","n2138420763","n2138420764"]},"w203838287":{"id":"w203838287","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425446","n2138425447","n2138425448","n2138425443","n2138425446"]},"w203837934":{"id":"w203837934","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:14Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420760","n2138420763","n2138420761"]},"w203838289":{"id":"w203838289","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425449","n2138425451","n2138425452","n2138425450","n2138425449"]},"w17963047":{"id":"w17963047","version":"4","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:19Z","tags":{"highway":"service","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15331535","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185948818","n2138436013","n185948820","n185948822","n185948824","n2138439326","n2138420767","n2138420766"]},"w203839091":{"id":"w203839091","version":"3","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:44Z","tags":{"highway":"footway"},"nodes":["n185976502","n2138436000","n2138436001","n2138436017","n2138436002","n2138436003","n2138436021","n2138436025","n2138436023","n2138435984","n2138436004","n2138436005","n2138436006","n2138436007","n2138436008","n2138436009","n2138436010","n2138436011","n2138436012","n2138436013","n2138439319","n2138439329","n2138436014"]},"w204830797":{"id":"w204830797","version":"1","changeset":"14970854","user":"oldtopos","uid":"169004","visible":"true","timestamp":"2013-02-09T18:25:37Z","tags":{"highway":"service","service":"parking_aisle"},"nodes":["n2138420756","n2138420757","n2138420765","n2138420758"]},"w203838288":{"id":"w203838288","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425447","n2138425449","n2138425450","n2138425448","n2138425447"]},"w203838285":{"id":"w203838285","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"baseball"},"nodes":["n2138425433","n2138425434","n2138425435","n2138425436","n2138425437","n2138425438","n2138425439","n2138425440","n2138425441","n2138425442","n2138425433"]},"w203838286":{"id":"w203838286","version":"1","changeset":"14878914","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:33:42Z","tags":{"area":"yes","leisure":"pitch","sport":"tennis"},"nodes":["n2138425443","n2138425444","n2138425445","n2138425446","n2138425443"]},"w203837929":{"id":"w203837929","version":"1","changeset":"14878832","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:00:13Z","tags":{"amenity":"parking","area":"yes"},"nodes":["n2138420725","n2138420726","n2138420727","n2138420728","n2138420725"]},"w203839361":{"id":"w203839361","version":"1","changeset":"14878967","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T04:54:18Z","tags":{"highway":"footway"},"nodes":["n2138439319","n2138439328","n2138439320","n2138439321","n2138439322","n2138439331","n2138439334","n2138439323","n2138439324","n2138439325","n2138439326"]},"n394381698":{"id":"n394381698","loc":[-85.614471,41.954755],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381699":{"id":"n394381699","loc":[-85.6152,41.954744],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381700":{"id":"n394381700","loc":[-85.615201,41.954081],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381701":{"id":"n394381701","loc":[-85.614426,41.954042],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381702":{"id":"n394381702","loc":[-85.616319,41.954749],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381704":{"id":"n394381704","loc":[-85.616152,41.954752],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381706":{"id":"n394381706","loc":[-85.615201,41.95483],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394490775":{"id":"n394490775","loc":[-85.613971,41.954839],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490782":{"id":"n394490782","loc":[-85.614372,41.954841],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n185958835":{"id":"n185958835","loc":[-85.611615,41.953704],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958837":{"id":"n185958837","loc":[-85.611636,41.953938],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958842":{"id":"n185958842","loc":[-85.611187,41.951686],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958844":{"id":"n185958844","loc":[-85.611087,41.951741],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958845":{"id":"n185958845","loc":[-85.611034,41.951852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958847":{"id":"n185958847","loc":[-85.611016,41.95196],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958849":{"id":"n185958849","loc":[-85.610989,41.95328],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958851":{"id":"n185958851","loc":[-85.611021,41.953484],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958852":{"id":"n185958852","loc":[-85.611091,41.953603],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958853":{"id":"n185958853","loc":[-85.6112,41.953661],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185958855":{"id":"n185958855","loc":[-85.611364,41.953686],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:58:34Z","tags":{}},"n185965031":{"id":"n185965031","loc":[-85.614204,41.953696],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965032":{"id":"n185965032","loc":[-85.6142,41.953978],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:42Z","tags":{}},"n185965062":{"id":"n185965062","loc":[-85.614617,41.951639],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965064":{"id":"n185965064","loc":[-85.61463,41.951852],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965066":{"id":"n185965066","loc":[-85.614642,41.953436],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965068":{"id":"n185965068","loc":[-85.6146,41.953551],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965071":{"id":"n185965071","loc":[-85.614487,41.95363],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185965073":{"id":"n185965073","loc":[-85.614354,41.953672],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:01:43Z","tags":{}},"n185966288":{"id":"n185966288","loc":[-85.61179,41.953695],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966290":{"id":"n185966290","loc":[-85.612232,41.953685],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966293":{"id":"n185966293","loc":[-85.613438,41.953677],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:33Z","tags":{}},"n185966349":{"id":"n185966349","loc":[-85.611323,41.951653],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966351":{"id":"n185966351","loc":[-85.611892,41.951642],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966352":{"id":"n185966352","loc":[-85.612216,41.951641],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966353":{"id":"n185966353","loc":[-85.613111,41.951639],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966354":{"id":"n185966354","loc":[-85.613396,41.95164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185966355":{"id":"n185966355","loc":[-85.614221,41.95164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:02:34Z","tags":{}},"n185973839":{"id":"n185973839","loc":[-85.61341,41.951919],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185973840":{"id":"n185973840","loc":[-85.613438,41.953308],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:06:03Z","tags":{}},"n185980222":{"id":"n185980222","loc":[-85.613781,41.955164],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980223":{"id":"n185980223","loc":[-85.613815,41.955237],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980225":{"id":"n185980225","loc":[-85.613837,41.955316],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185990345":{"id":"n185990345","loc":[-85.612211,41.951977],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:15:01Z","tags":{}},"n185955743":{"id":"n185955743","loc":[-85.613873,41.95635],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185980227":{"id":"n185980227","loc":[-85.613851,41.955415],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n185980229":{"id":"n185980229","loc":[-85.613918,41.957134],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T05:09:33Z","tags":{}},"n394381703":{"id":"n394381703","loc":[-85.616287,41.955674],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394381705":{"id":"n394381705","loc":[-85.615164,41.955676],"version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{}},"n394490777":{"id":"n394490777","loc":[-85.613973,41.955979],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"n394490780":{"id":"n394490780","loc":[-85.614364,41.955987],"version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{}},"w17965307":{"id":"w17965307","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:58Z","tags":{"highway":"residential","name":"Bates Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Bates","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313640:15313641","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958842","n185966349","n185966351","n185966352","n185966353","n185966354","n185966355","n185965062"]},"w17967957":{"id":"w17967957","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:55:16Z","tags":{"highway":"residential","name":"Krum Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Krum","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313643","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966352","n185990345","n185966290"]},"w17964508":{"id":"w17964508","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:11Z","tags":{"highway":"residential","name":"Blossom Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Blossom","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15324628","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958842","n185958844","n185958845","n185958847","n185958849","n185958851","n185958852","n185958853","n185958855","n185958835"]},"w17964507":{"id":"w17964507","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:30:10Z","tags":{"highway":"residential","name":"Blossom Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Blossom","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313629","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958835","n185958837","n185958839"]},"w34367080":{"id":"w34367080","version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394381699","n394381706","n394381705","n394381703","n394381702","n394381704","n394381699"]},"w17965302":{"id":"w17965302","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:35:55Z","tags":{"highway":"residential","name":"Clausen Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Clausen","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313630:15313631:15313632","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185958835","n185966288","n185966290","n185966293","n185965031"]},"w17965156":{"id":"w17965156","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:54Z","tags":{"highway":"residential","name":"Orchard Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Orchard","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15327962","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965062","n185965064","n185965066","n185965068","n185965071","n185965073","n185965031"]},"w34369812":{"id":"w34369812","version":"1","changeset":"1160580","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T06:07:58Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394490775","n394490777","n394490780","n394490782","n394490775"]},"w17965151":{"id":"w17965151","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:34:52Z","tags":{"highway":"residential","name":"Orchard Dr","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Orchard","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313628","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185965031","n185965032","n185965033"]},"w17966756":{"id":"w17966756","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:47:10Z","tags":{"access":"private","highway":"service","name":"Lockport Dr","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Lockport","tiger:name_type":"Dr","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313621:15314402","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185978828","n185980222","n185980223","n185980225","n185980227","n185955743","n185980229"]},"w17966056":{"id":"w17966056","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:41:57Z","tags":{"highway":"residential","name":"Angell Ave","tiger:cfcc":"A41","tiger:county":"St. Joseph, MI","tiger:name_base":"Angell","tiger:name_type":"Ave","tiger:reviewed":"no","tiger:separated":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15313639","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185966354","n185973839","n185973840","n185966293"]},"w34367079":{"id":"w34367079","version":"1","changeset":"1160198","user":"TIGERcnl","uid":"120146","visible":"true","timestamp":"2009-05-12T04:27:13Z","tags":{"admin_level":"8","boundary":"administrative","created_by":"polyshp2osm-multipoly","source":"TIGER/Line® 2008 Place Shapefiles (http://www.census.gov/geo/www/tiger/)"},"nodes":["n394381700","n394381701","n394381698","n394381699","n394381700"]},"n185955744":{"id":"n185955744","loc":[-85.611753,41.956208],"version":"2","changeset":"2196690","user":"woodpeck_fixbot","uid":"147510","visible":"true","timestamp":"2009-08-19T04:56:55Z","tags":{}},"n185988932":{"id":"n185988932","loc":[-85.6159,41.956336],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185988934":{"id":"n185988934","loc":[-85.6159158,41.9590646],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{}},"n185988935":{"id":"n185988935","loc":[-85.6157358,41.959364],"version":"3","changeset":"12169723","user":"Tom Layo","uid":"280679","visible":"true","timestamp":"2012-07-10T06:59:04Z","tags":{"highway":"turning_circle","source":"Bing"}},"n2138447007":{"id":"n2138447007","loc":[-85.6130784,41.9590689],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447008":{"id":"n2138447008","loc":[-85.6133328,41.9593805],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447003":{"id":"n2138447003","loc":[-85.610238,41.9547745],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447004":{"id":"n2138447004","loc":[-85.6102652,41.9566041],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447005":{"id":"n2138447005","loc":[-85.610325,41.9568823],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447006":{"id":"n2138447006","loc":[-85.6105644,41.9571383],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447009":{"id":"n2138447009","loc":[-85.6135946,41.959948],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447010":{"id":"n2138447010","loc":[-85.6136071,41.9629372],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447011":{"id":"n2138447011","loc":[-85.6134392,41.9633182],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447012":{"id":"n2138447012","loc":[-85.6130151,41.9636073],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447013":{"id":"n2138447013","loc":[-85.6122729,41.9637125],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"n2138447014":{"id":"n2138447014","loc":[-85.6056682,41.963752],"version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{}},"w17964174":{"id":"w17964174","version":"1","changeset":"402341","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:27:41Z","tags":{"access":"private","highway":"service","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15314401","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7"},"nodes":["n185955743","n185955744"]},"w17967743":{"id":"w17967743","version":"1","changeset":"402580","user":"DaveHansenTiger","uid":"7168","visible":"true","timestamp":"2007-12-23T20:54:06Z","tags":{"access":"private","highway":"service","name":"Manistee River Rd","tiger:cfcc":"A74","tiger:county":"St. Joseph, MI","tiger:name_base":"Manistee River","tiger:name_type":"Rd","tiger:reviewed":"no","tiger:source":"tiger_import_dch_v0.6_20070813","tiger:tlid":"15326121:15326126:15326127:15326116","tiger:upload_uuid":"bulk_upload.pl-b79f893a-0be1-4a5f-a183-6aea114c9af7","tiger:zip_left":"49093","tiger:zip_right":"49093"},"nodes":["n185971574","n185988932","n185971407","n185981301","n185967987","n185988934","n185988935"]},"w203839666":{"id":"w203839666","version":"1","changeset":"14878989","user":"ansis","uid":"1193517","visible":"true","timestamp":"2013-02-02T05:02:39Z","tags":{"highway":"residential","name":"Hov Aire Drive"},"nodes":["n2138447003","n2138447004","n2138447005","n2138447006","n2138447007","n2138447008","n2138447009","n2138447010","n2138447011","n2138447012","n2138447013","n2138447014"]}}';iD.data = {
39234     "deprecated": [
39235         {
39236             "old": {
39237                 "amenity": "firepit"
39238             },
39239             "replace": {
39240                 "leisure": "firepit"
39241             }
39242         },
39243         {
39244             "old": {
39245                 "barrier": "wire_fence"
39246             },
39247             "replace": {
39248                 "barrier": "fence",
39249                 "fence_type": "chain"
39250             }
39251         },
39252         {
39253             "old": {
39254                 "barrier": "wood_fence"
39255             },
39256             "replace": {
39257                 "barrier": "fence",
39258                 "fence_type": "wood"
39259             }
39260         },
39261         {
39262             "old": {
39263                 "highway": "ford"
39264             },
39265             "replace": {
39266                 "ford": "yes"
39267             }
39268         },
39269         {
39270             "old": {
39271                 "highway": "stile"
39272             },
39273             "replace": {
39274                 "barrier": "stile"
39275             }
39276         },
39277         {
39278             "old": {
39279                 "highway": "incline"
39280             },
39281             "replace": {
39282                 "highway": "road",
39283                 "incline": "up"
39284             }
39285         },
39286         {
39287             "old": {
39288                 "highway": "incline_steep"
39289             },
39290             "replace": {
39291                 "highway": "road",
39292                 "incline": "up"
39293             }
39294         },
39295         {
39296             "old": {
39297                 "highway": "unsurfaced"
39298             },
39299             "replace": {
39300                 "highway": "road",
39301                 "incline": "unpaved"
39302             }
39303         },
39304         {
39305             "old": {
39306                 "landuse": "wood"
39307             },
39308             "replace": {
39309                 "landuse": "forest",
39310                 "natural": "wood"
39311             }
39312         },
39313         {
39314             "old": {
39315                 "natural": "marsh"
39316             },
39317             "replace": {
39318                 "natural": "wetland",
39319                 "wetland": "marsh"
39320             }
39321         },
39322         {
39323             "old": {
39324                 "power_source": "*"
39325             },
39326             "replace": {
39327                 "generator:source": "$1"
39328             }
39329         },
39330         {
39331             "old": {
39332                 "power_rating": "*"
39333             },
39334             "replace": {
39335                 "generator:output": "$1"
39336             }
39337         },
39338         {
39339             "old": {
39340                 "shop": "organic"
39341             },
39342             "replace": {
39343                 "shop": "supermarket",
39344                 "organic": "only"
39345             }
39346         }
39347     ],
39348     "discarded": [
39349         "created_by",
39350         "odbl",
39351         "odbl:note",
39352         "tiger:upload_uuid",
39353         "tiger:tlid",
39354         "tiger:source",
39355         "tiger:separated",
39356         "geobase:datasetName",
39357         "geobase:uuid",
39358         "sub_sea:type",
39359         "KSJ2:ADS",
39360         "KSJ2:ARE",
39361         "KSJ2:AdminArea",
39362         "KSJ2:COP_label",
39363         "KSJ2:DFD",
39364         "KSJ2:INT",
39365         "KSJ2:INT_label",
39366         "KSJ2:LOC",
39367         "KSJ2:LPN",
39368         "KSJ2:OPC",
39369         "KSJ2:PubFacAdmin",
39370         "KSJ2:RAC",
39371         "KSJ2:RAC_label",
39372         "KSJ2:RIC",
39373         "KSJ2:RIN",
39374         "KSJ2:WSC",
39375         "KSJ2:coordinate",
39376         "KSJ2:curve_id",
39377         "KSJ2:curve_type",
39378         "KSJ2:filename",
39379         "KSJ2:lake_id",
39380         "KSJ2:lat",
39381         "KSJ2:long",
39382         "KSJ2:river_id",
39383         "yh:LINE_NAME",
39384         "yh:LINE_NUM",
39385         "yh:STRUCTURE",
39386         "yh:TOTYUMONO",
39387         "yh:TYPE",
39388         "yh:WIDTH_RANK",
39389         "SK53_bulk:load"
39390     ],
39391     "wikipedia": [
39392         [
39393             "English",
39394             "English",
39395             "en"
39396         ],
39397         [
39398             "German",
39399             "Deutsch",
39400             "de"
39401         ],
39402         [
39403             "Dutch",
39404             "Nederlands",
39405             "nl"
39406         ],
39407         [
39408             "French",
39409             "Français",
39410             "fr"
39411         ],
39412         [
39413             "Italian",
39414             "Italiano",
39415             "it"
39416         ],
39417         [
39418             "Russian",
39419             "Русский",
39420             "ru"
39421         ],
39422         [
39423             "Spanish",
39424             "Español",
39425             "es"
39426         ],
39427         [
39428             "Polish",
39429             "Polski",
39430             "pl"
39431         ],
39432         [
39433             "Swedish",
39434             "Svenska",
39435             "sv"
39436         ],
39437         [
39438             "Japanese",
39439             "日本語",
39440             "ja"
39441         ],
39442         [
39443             "Portuguese",
39444             "Português",
39445             "pt"
39446         ],
39447         [
39448             "Chinese",
39449             "中文",
39450             "zh"
39451         ],
39452         [
39453             "Vietnamese",
39454             "Tiếng Việt",
39455             "vi"
39456         ],
39457         [
39458             "Ukrainian",
39459             "Українська",
39460             "uk"
39461         ],
39462         [
39463             "Catalan",
39464             "Català",
39465             "ca"
39466         ],
39467         [
39468             "Norwegian (Bokmål)",
39469             "Norsk (Bokmål)",
39470             "no"
39471         ],
39472         [
39473             "Waray-Waray",
39474             "Winaray",
39475             "war"
39476         ],
39477         [
39478             "Cebuano",
39479             "Sinugboanong Binisaya",
39480             "ceb"
39481         ],
39482         [
39483             "Finnish",
39484             "Suomi",
39485             "fi"
39486         ],
39487         [
39488             "Persian",
39489             "فارسی",
39490             "fa"
39491         ],
39492         [
39493             "Czech",
39494             "Čeština",
39495             "cs"
39496         ],
39497         [
39498             "Hungarian",
39499             "Magyar",
39500             "hu"
39501         ],
39502         [
39503             "Korean",
39504             "한국어",
39505             "ko"
39506         ],
39507         [
39508             "Romanian",
39509             "Română",
39510             "ro"
39511         ],
39512         [
39513             "Arabic",
39514             "العربية",
39515             "ar"
39516         ],
39517         [
39518             "Turkish",
39519             "Türkçe",
39520             "tr"
39521         ],
39522         [
39523             "Indonesian",
39524             "Bahasa Indonesia",
39525             "id"
39526         ],
39527         [
39528             "Kazakh",
39529             "Қазақша",
39530             "kk"
39531         ],
39532         [
39533             "Malay",
39534             "Bahasa Melayu",
39535             "ms"
39536         ],
39537         [
39538             "Serbian",
39539             "Српски / Srpski",
39540             "sr"
39541         ],
39542         [
39543             "Slovak",
39544             "Slovenčina",
39545             "sk"
39546         ],
39547         [
39548             "Esperanto",
39549             "Esperanto",
39550             "eo"
39551         ],
39552         [
39553             "Danish",
39554             "Dansk",
39555             "da"
39556         ],
39557         [
39558             "Lithuanian",
39559             "Lietuvių",
39560             "lt"
39561         ],
39562         [
39563             "Basque",
39564             "Euskara",
39565             "eu"
39566         ],
39567         [
39568             "Bulgarian",
39569             "Български",
39570             "bg"
39571         ],
39572         [
39573             "Hebrew",
39574             "עברית",
39575             "he"
39576         ],
39577         [
39578             "Slovenian",
39579             "Slovenščina",
39580             "sl"
39581         ],
39582         [
39583             "Croatian",
39584             "Hrvatski",
39585             "hr"
39586         ],
39587         [
39588             "Volapük",
39589             "Volapük",
39590             "vo"
39591         ],
39592         [
39593             "Estonian",
39594             "Eesti",
39595             "et"
39596         ],
39597         [
39598             "Hindi",
39599             "हिन्दी",
39600             "hi"
39601         ],
39602         [
39603             "Uzbek",
39604             "O‘zbek",
39605             "uz"
39606         ],
39607         [
39608             "Galician",
39609             "Galego",
39610             "gl"
39611         ],
39612         [
39613             "Norwegian (Nynorsk)",
39614             "Nynorsk",
39615             "nn"
39616         ],
39617         [
39618             "Simple English",
39619             "Simple English",
39620             "simple"
39621         ],
39622         [
39623             "Azerbaijani",
39624             "Azərbaycanca",
39625             "az"
39626         ],
39627         [
39628             "Latin",
39629             "Latina",
39630             "la"
39631         ],
39632         [
39633             "Greek",
39634             "Ελληνικά",
39635             "el"
39636         ],
39637         [
39638             "Thai",
39639             "ไทย",
39640             "th"
39641         ],
39642         [
39643             "Serbo-Croatian",
39644             "Srpskohrvatski / Српскохрватски",
39645             "sh"
39646         ],
39647         [
39648             "Georgian",
39649             "ქართული",
39650             "ka"
39651         ],
39652         [
39653             "Occitan",
39654             "Occitan",
39655             "oc"
39656         ],
39657         [
39658             "Macedonian",
39659             "Македонски",
39660             "mk"
39661         ],
39662         [
39663             "Newar / Nepal Bhasa",
39664             "नेपाल भाषा",
39665             "new"
39666         ],
39667         [
39668             "Tagalog",
39669             "Tagalog",
39670             "tl"
39671         ],
39672         [
39673             "Piedmontese",
39674             "Piemontèis",
39675             "pms"
39676         ],
39677         [
39678             "Belarusian",
39679             "Беларуская",
39680             "be"
39681         ],
39682         [
39683             "Haitian",
39684             "Krèyol ayisyen",
39685             "ht"
39686         ],
39687         [
39688             "Tamil",
39689             "தமிழ்",
39690             "ta"
39691         ],
39692         [
39693             "Telugu",
39694             "తెలుగు",
39695             "te"
39696         ],
39697         [
39698             "Belarusian (Taraškievica)",
39699             "Беларуская (тарашкевіца)",
39700             "be-x-old"
39701         ],
39702         [
39703             "Latvian",
39704             "Latviešu",
39705             "lv"
39706         ],
39707         [
39708             "Breton",
39709             "Brezhoneg",
39710             "br"
39711         ],
39712         [
39713             "Malagasy",
39714             "Malagasy",
39715             "mg"
39716         ],
39717         [
39718             "Albanian",
39719             "Shqip",
39720             "sq"
39721         ],
39722         [
39723             "Armenian",
39724             "Հայերեն",
39725             "hy"
39726         ],
39727         [
39728             "Tatar",
39729             "Tatarça / Татарча",
39730             "tt"
39731         ],
39732         [
39733             "Javanese",
39734             "Basa Jawa",
39735             "jv"
39736         ],
39737         [
39738             "Welsh",
39739             "Cymraeg",
39740             "cy"
39741         ],
39742         [
39743             "Marathi",
39744             "मराठी",
39745             "mr"
39746         ],
39747         [
39748             "Luxembourgish",
39749             "Lëtzebuergesch",
39750             "lb"
39751         ],
39752         [
39753             "Icelandic",
39754             "Íslenska",
39755             "is"
39756         ],
39757         [
39758             "Bosnian",
39759             "Bosanski",
39760             "bs"
39761         ],
39762         [
39763             "Burmese",
39764             "မြန်မာဘာသာ",
39765             "my"
39766         ],
39767         [
39768             "Yoruba",
39769             "Yorùbá",
39770             "yo"
39771         ],
39772         [
39773             "Bashkir",
39774             "Башҡорт",
39775             "ba"
39776         ],
39777         [
39778             "Malayalam",
39779             "മലയാളം",
39780             "ml"
39781         ],
39782         [
39783             "Aragonese",
39784             "Aragonés",
39785             "an"
39786         ],
39787         [
39788             "Lombard",
39789             "Lumbaart",
39790             "lmo"
39791         ],
39792         [
39793             "Afrikaans",
39794             "Afrikaans",
39795             "af"
39796         ],
39797         [
39798             "West Frisian",
39799             "Frysk",
39800             "fy"
39801         ],
39802         [
39803             "Western Panjabi",
39804             "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)",
39805             "pnb"
39806         ],
39807         [
39808             "Bengali",
39809             "বাংলা",
39810             "bn"
39811         ],
39812         [
39813             "Swahili",
39814             "Kiswahili",
39815             "sw"
39816         ],
39817         [
39818             "Bishnupriya Manipuri",
39819             "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী",
39820             "bpy"
39821         ],
39822         [
39823             "Ido",
39824             "Ido",
39825             "io"
39826         ],
39827         [
39828             "Kirghiz",
39829             "Кыргызча",
39830             "ky"
39831         ],
39832         [
39833             "Urdu",
39834             "اردو",
39835             "ur"
39836         ],
39837         [
39838             "Nepali",
39839             "नेपाली",
39840             "ne"
39841         ],
39842         [
39843             "Sicilian",
39844             "Sicilianu",
39845             "scn"
39846         ],
39847         [
39848             "Gujarati",
39849             "ગુજરાતી",
39850             "gu"
39851         ],
39852         [
39853             "Cantonese",
39854             "粵語",
39855             "zh-yue"
39856         ],
39857         [
39858             "Low Saxon",
39859             "Plattdüütsch",
39860             "nds"
39861         ],
39862         [
39863             "Kurdish",
39864             "Kurdî / كوردی",
39865             "ku"
39866         ],
39867         [
39868             "Irish",
39869             "Gaeilge",
39870             "ga"
39871         ],
39872         [
39873             "Asturian",
39874             "Asturianu",
39875             "ast"
39876         ],
39877         [
39878             "Quechua",
39879             "Runa Simi",
39880             "qu"
39881         ],
39882         [
39883             "Sundanese",
39884             "Basa Sunda",
39885             "su"
39886         ],
39887         [
39888             "Chuvash",
39889             "Чăваш",
39890             "cv"
39891         ],
39892         [
39893             "Scots",
39894             "Scots",
39895             "sco"
39896         ],
39897         [
39898             "Interlingua",
39899             "Interlingua",
39900             "ia"
39901         ],
39902         [
39903             "Alemannic",
39904             "Alemannisch",
39905             "als"
39906         ],
39907         [
39908             "Buginese",
39909             "Basa Ugi",
39910             "bug"
39911         ],
39912         [
39913             "Neapolitan",
39914             "Nnapulitano",
39915             "nap"
39916         ],
39917         [
39918             "Samogitian",
39919             "Žemaitėška",
39920             "bat-smg"
39921         ],
39922         [
39923             "Kannada",
39924             "ಕನ್ನಡ",
39925             "kn"
39926         ],
39927         [
39928             "Banyumasan",
39929             "Basa Banyumasan",
39930             "map-bms"
39931         ],
39932         [
39933             "Walloon",
39934             "Walon",
39935             "wa"
39936         ],
39937         [
39938             "Amharic",
39939             "አማርኛ",
39940             "am"
39941         ],
39942         [
39943             "Sorani",
39944             "Soranî / کوردی",
39945             "ckb"
39946         ],
39947         [
39948             "Scottish Gaelic",
39949             "Gàidhlig",
39950             "gd"
39951         ],
39952         [
39953             "Fiji Hindi",
39954             "Fiji Hindi",
39955             "hif"
39956         ],
39957         [
39958             "Min Nan",
39959             "Bân-lâm-gú",
39960             "zh-min-nan"
39961         ],
39962         [
39963             "Tajik",
39964             "Тоҷикӣ",
39965             "tg"
39966         ],
39967         [
39968             "Mazandarani",
39969             "مَزِروني",
39970             "mzn"
39971         ],
39972         [
39973             "Egyptian Arabic",
39974             "مصرى (Maṣrī)",
39975             "arz"
39976         ],
39977         [
39978             "Yiddish",
39979             "ייִדיש",
39980             "yi"
39981         ],
39982         [
39983             "Venetian",
39984             "Vèneto",
39985             "vec"
39986         ],
39987         [
39988             "Mongolian",
39989             "Монгол",
39990             "mn"
39991         ],
39992         [
39993             "Tarantino",
39994             "Tarandíne",
39995             "roa-tara"
39996         ],
39997         [
39998             "Sanskrit",
39999             "संस्कृतम्",
40000             "sa"
40001         ],
40002         [
40003             "Nahuatl",
40004             "Nāhuatl",
40005             "nah"
40006         ],
40007         [
40008             "Ossetian",
40009             "Иронау",
40010             "os"
40011         ],
40012         [
40013             "Sakha",
40014             "Саха тыла (Saxa Tyla)",
40015             "sah"
40016         ],
40017         [
40018             "Kapampangan",
40019             "Kapampangan",
40020             "pam"
40021         ],
40022         [
40023             "Upper Sorbian",
40024             "Hornjoserbsce",
40025             "hsb"
40026         ],
40027         [
40028             "Sinhalese",
40029             "සිංහල",
40030             "si"
40031         ],
40032         [
40033             "Northern Sami",
40034             "Sámegiella",
40035             "se"
40036         ],
40037         [
40038             "Limburgish",
40039             "Limburgs",
40040             "li"
40041         ],
40042         [
40043             "Maori",
40044             "Māori",
40045             "mi"
40046         ],
40047         [
40048             "Bavarian",
40049             "Boarisch",
40050             "bar"
40051         ],
40052         [
40053             "Corsican",
40054             "Corsu",
40055             "co"
40056         ],
40057         [
40058             "Ilokano",
40059             "Ilokano",
40060             "ilo"
40061         ],
40062         [
40063             "Gan",
40064             "贛語",
40065             "gan"
40066         ],
40067         [
40068             "Tibetan",
40069             "བོད་སྐད",
40070             "bo"
40071         ],
40072         [
40073             "Gilaki",
40074             "گیلکی",
40075             "glk"
40076         ],
40077         [
40078             "Faroese",
40079             "Føroyskt",
40080             "fo"
40081         ],
40082         [
40083             "Rusyn",
40084             "русиньскый язык",
40085             "rue"
40086         ],
40087         [
40088             "Punjabi",
40089             "ਪੰਜਾਬੀ",
40090             "pa"
40091         ],
40092         [
40093             "Central_Bicolano",
40094             "Bikol",
40095             "bcl"
40096         ],
40097         [
40098             "Hill Mari",
40099             "Кырык Мары (Kyryk Mary) ",
40100             "mrj"
40101         ],
40102         [
40103             "Võro",
40104             "Võro",
40105             "fiu-vro"
40106         ],
40107         [
40108             "Dutch Low Saxon",
40109             "Nedersaksisch",
40110             "nds-nl"
40111         ],
40112         [
40113             "Turkmen",
40114             "تركمن / Туркмен",
40115             "tk"
40116         ],
40117         [
40118             "Pashto",
40119             "پښتو",
40120             "ps"
40121         ],
40122         [
40123             "West Flemish",
40124             "West-Vlams",
40125             "vls"
40126         ],
40127         [
40128             "Mingrelian",
40129             "მარგალური (Margaluri)",
40130             "xmf"
40131         ],
40132         [
40133             "Manx",
40134             "Gaelg",
40135             "gv"
40136         ],
40137         [
40138             "Zazaki",
40139             "Zazaki",
40140             "diq"
40141         ],
40142         [
40143             "Pangasinan",
40144             "Pangasinan",
40145             "pag"
40146         ],
40147         [
40148             "Komi",
40149             "Коми",
40150             "kv"
40151         ],
40152         [
40153             "Zeelandic",
40154             "Zeêuws",
40155             "zea"
40156         ],
40157         [
40158             "Divehi",
40159             "ދިވެހިބަސް",
40160             "dv"
40161         ],
40162         [
40163             "Oriya",
40164             "ଓଡ଼ିଆ",
40165             "or"
40166         ],
40167         [
40168             "Khmer",
40169             "ភាសាខ្មែរ",
40170             "km"
40171         ],
40172         [
40173             "Norman",
40174             "Nouormand/Normaund",
40175             "nrm"
40176         ],
40177         [
40178             "Romansh",
40179             "Rumantsch",
40180             "rm"
40181         ],
40182         [
40183             "Komi-Permyak",
40184             "Перем Коми (Perem Komi)",
40185             "koi"
40186         ],
40187         [
40188             "Udmurt",
40189             "Удмурт кыл",
40190             "udm"
40191         ],
40192         [
40193             "Meadow Mari",
40194             "Олык Марий (Olyk Marij)",
40195             "mhr"
40196         ],
40197         [
40198             "Ladino",
40199             "Dzhudezmo",
40200             "lad"
40201         ],
40202         [
40203             "North Frisian",
40204             "Nordfriisk",
40205             "frr"
40206         ],
40207         [
40208             "Kashubian",
40209             "Kaszëbsczi",
40210             "csb"
40211         ],
40212         [
40213             "Ligurian",
40214             "Líguru",
40215             "lij"
40216         ],
40217         [
40218             "Wu",
40219             "吴语",
40220             "wuu"
40221         ],
40222         [
40223             "Friulian",
40224             "Furlan",
40225             "fur"
40226         ],
40227         [
40228             "Vepsian",
40229             "Vepsän",
40230             "vep"
40231         ],
40232         [
40233             "Classical Chinese",
40234             "古文 / 文言文",
40235             "zh-classical"
40236         ],
40237         [
40238             "Uyghur",
40239             "ئۇيغۇر تىلى",
40240             "ug"
40241         ],
40242         [
40243             "Saterland Frisian",
40244             "Seeltersk",
40245             "stq"
40246         ],
40247         [
40248             "Sardinian",
40249             "Sardu",
40250             "sc"
40251         ],
40252         [
40253             "Aromanian",
40254             "Armãneashce",
40255             "roa-rup"
40256         ],
40257         [
40258             "Pali",
40259             "पाऴि",
40260             "pi"
40261         ],
40262         [
40263             "Somali",
40264             "Soomaaliga",
40265             "so"
40266         ],
40267         [
40268             "Bihari",
40269             "भोजपुरी",
40270             "bh"
40271         ],
40272         [
40273             "Maltese",
40274             "Malti",
40275             "mt"
40276         ],
40277         [
40278             "Aymara",
40279             "Aymar",
40280             "ay"
40281         ],
40282         [
40283             "Ripuarian",
40284             "Ripoarisch",
40285             "ksh"
40286         ],
40287         [
40288             "Novial",
40289             "Novial",
40290             "nov"
40291         ],
40292         [
40293             "Anglo-Saxon",
40294             "Englisc",
40295             "ang"
40296         ],
40297         [
40298             "Cornish",
40299             "Kernewek/Karnuack",
40300             "kw"
40301         ],
40302         [
40303             "Navajo",
40304             "Diné bizaad",
40305             "nv"
40306         ],
40307         [
40308             "Picard",
40309             "Picard",
40310             "pcd"
40311         ],
40312         [
40313             "Hakka",
40314             "Hak-kâ-fa / 客家話",
40315             "hak"
40316         ],
40317         [
40318             "Guarani",
40319             "Avañe'ẽ",
40320             "gn"
40321         ],
40322         [
40323             "Extremaduran",
40324             "Estremeñu",
40325             "ext"
40326         ],
40327         [
40328             "Franco-Provençal/Arpitan",
40329             "Arpitan",
40330             "frp"
40331         ],
40332         [
40333             "Assamese",
40334             "অসমীয়া",
40335             "as"
40336         ],
40337         [
40338             "Silesian",
40339             "Ślůnski",
40340             "szl"
40341         ],
40342         [
40343             "Gagauz",
40344             "Gagauz",
40345             "gag"
40346         ],
40347         [
40348             "Interlingue",
40349             "Interlingue",
40350             "ie"
40351         ],
40352         [
40353             "Lingala",
40354             "Lingala",
40355             "ln"
40356         ],
40357         [
40358             "Emilian-Romagnol",
40359             "Emiliàn e rumagnòl",
40360             "eml"
40361         ],
40362         [
40363             "Chechen",
40364             "Нохчийн",
40365             "ce"
40366         ],
40367         [
40368             "Kalmyk",
40369             "Хальмг",
40370             "xal"
40371         ],
40372         [
40373             "Palatinate German",
40374             "Pfälzisch",
40375             "pfl"
40376         ],
40377         [
40378             "Hawaiian",
40379             "Hawai`i",
40380             "haw"
40381         ],
40382         [
40383             "Karachay-Balkar",
40384             "Къарачай-Малкъар (Qarachay-Malqar)",
40385             "krc"
40386         ],
40387         [
40388             "Pennsylvania German",
40389             "Deitsch",
40390             "pdc"
40391         ],
40392         [
40393             "Kinyarwanda",
40394             "Ikinyarwanda",
40395             "rw"
40396         ],
40397         [
40398             "Crimean Tatar",
40399             "Qırımtatarca",
40400             "crh"
40401         ],
40402         [
40403             "Acehnese",
40404             "Bahsa Acèh",
40405             "ace"
40406         ],
40407         [
40408             "Tongan",
40409             "faka Tonga",
40410             "to"
40411         ],
40412         [
40413             "Greenlandic",
40414             "Kalaallisut",
40415             "kl"
40416         ],
40417         [
40418             "Lower Sorbian",
40419             "Dolnoserbski",
40420             "dsb"
40421         ],
40422         [
40423             "Aramaic",
40424             "ܐܪܡܝܐ",
40425             "arc"
40426         ],
40427         [
40428             "Erzya",
40429             "Эрзянь (Erzjanj Kelj)",
40430             "myv"
40431         ],
40432         [
40433             "Lezgian",
40434             "Лезги чІал (Lezgi č’al)",
40435             "lez"
40436         ],
40437         [
40438             "Banjar",
40439             "Bahasa Banjar",
40440             "bjn"
40441         ],
40442         [
40443             "Shona",
40444             "chiShona",
40445             "sn"
40446         ],
40447         [
40448             "Papiamentu",
40449             "Papiamentu",
40450             "pap"
40451         ],
40452         [
40453             "Kabyle",
40454             "Taqbaylit",
40455             "kab"
40456         ],
40457         [
40458             "Tok Pisin",
40459             "Tok Pisin",
40460             "tpi"
40461         ],
40462         [
40463             "Lak",
40464             "Лакку",
40465             "lbe"
40466         ],
40467         [
40468             "Buryat (Russia)",
40469             "Буряад",
40470             "bxr"
40471         ],
40472         [
40473             "Lojban",
40474             "Lojban",
40475             "jbo"
40476         ],
40477         [
40478             "Wolof",
40479             "Wolof",
40480             "wo"
40481         ],
40482         [
40483             "Moksha",
40484             "Мокшень (Mokshanj Kälj)",
40485             "mdf"
40486         ],
40487         [
40488             "Zamboanga Chavacano",
40489             "Chavacano de Zamboanga",
40490             "cbk-zam"
40491         ],
40492         [
40493             "Avar",
40494             "Авар",
40495             "av"
40496         ],
40497         [
40498             "Sranan",
40499             "Sranantongo",
40500             "srn"
40501         ],
40502         [
40503             "Mirandese",
40504             "Mirandés",
40505             "mwl"
40506         ],
40507         [
40508             "Kabardian Circassian",
40509             "Адыгэбзэ (Adighabze)",
40510             "kbd"
40511         ],
40512         [
40513             "Tahitian",
40514             "Reo Mā`ohi",
40515             "ty"
40516         ],
40517         [
40518             "Lao",
40519             "ລາວ",
40520             "lo"
40521         ],
40522         [
40523             "Abkhazian",
40524             "Аҧсуа",
40525             "ab"
40526         ],
40527         [
40528             "Tetum",
40529             "Tetun",
40530             "tet"
40531         ],
40532         [
40533             "Latgalian",
40534             "Latgaļu",
40535             "ltg"
40536         ],
40537         [
40538             "Nauruan",
40539             "dorerin Naoero",
40540             "na"
40541         ],
40542         [
40543             "Kongo",
40544             "KiKongo",
40545             "kg"
40546         ],
40547         [
40548             "Igbo",
40549             "Igbo",
40550             "ig"
40551         ],
40552         [
40553             "Northern Sotho",
40554             "Sesotho sa Leboa",
40555             "nso"
40556         ],
40557         [
40558             "Zhuang",
40559             "Cuengh",
40560             "za"
40561         ],
40562         [
40563             "Karakalpak",
40564             "Qaraqalpaqsha",
40565             "kaa"
40566         ],
40567         [
40568             "Zulu",
40569             "isiZulu",
40570             "zu"
40571         ],
40572         [
40573             "Cheyenne",
40574             "Tsetsêhestâhese",
40575             "chy"
40576         ],
40577         [
40578             "Romani",
40579             "romani - रोमानी",
40580             "rmy"
40581         ],
40582         [
40583             "Old Church Slavonic",
40584             "Словѣньскъ",
40585             "cu"
40586         ],
40587         [
40588             "Tswana",
40589             "Setswana",
40590             "tn"
40591         ],
40592         [
40593             "Cherokee",
40594             "ᏣᎳᎩ",
40595             "chr"
40596         ],
40597         [
40598             "Bislama",
40599             "Bislama",
40600             "bi"
40601         ],
40602         [
40603             "Min Dong",
40604             "Mìng-dĕ̤ng-ngṳ̄",
40605             "cdo"
40606         ],
40607         [
40608             "Gothic",
40609             "𐌲𐌿𐍄𐌹𐍃𐌺",
40610             "got"
40611         ],
40612         [
40613             "Samoan",
40614             "Gagana Samoa",
40615             "sm"
40616         ],
40617         [
40618             "Moldovan",
40619             "Молдовеняскэ",
40620             "mo"
40621         ],
40622         [
40623             "Bambara",
40624             "Bamanankan",
40625             "bm"
40626         ],
40627         [
40628             "Inuktitut",
40629             "ᐃᓄᒃᑎᑐᑦ",
40630             "iu"
40631         ],
40632         [
40633             "Norfolk",
40634             "Norfuk",
40635             "pih"
40636         ],
40637         [
40638             "Pontic",
40639             "Ποντιακά",
40640             "pnt"
40641         ],
40642         [
40643             "Sindhi",
40644             "سنڌي، سندھی ، सिन्ध",
40645             "sd"
40646         ],
40647         [
40648             "Swati",
40649             "SiSwati",
40650             "ss"
40651         ],
40652         [
40653             "Kikuyu",
40654             "Gĩkũyũ",
40655             "ki"
40656         ],
40657         [
40658             "Ewe",
40659             "Eʋegbe",
40660             "ee"
40661         ],
40662         [
40663             "Hausa",
40664             "هَوُسَ",
40665             "ha"
40666         ],
40667         [
40668             "Oromo",
40669             "Oromoo",
40670             "om"
40671         ],
40672         [
40673             "Fijian",
40674             "Na Vosa Vakaviti",
40675             "fj"
40676         ],
40677         [
40678             "Tigrinya",
40679             "ትግርኛ",
40680             "ti"
40681         ],
40682         [
40683             "Tsonga",
40684             "Xitsonga",
40685             "ts"
40686         ],
40687         [
40688             "Kashmiri",
40689             "कश्मीरी / كشميري",
40690             "ks"
40691         ],
40692         [
40693             "Venda",
40694             "Tshivenda",
40695             "ve"
40696         ],
40697         [
40698             "Sango",
40699             "Sängö",
40700             "sg"
40701         ],
40702         [
40703             "Kirundi",
40704             "Kirundi",
40705             "rn"
40706         ],
40707         [
40708             "Sesotho",
40709             "Sesotho",
40710             "st"
40711         ],
40712         [
40713             "Dzongkha",
40714             "ཇོང་ཁ",
40715             "dz"
40716         ],
40717         [
40718             "Cree",
40719             "Nehiyaw",
40720             "cr"
40721         ],
40722         [
40723             "Akan",
40724             "Akana",
40725             "ak"
40726         ],
40727         [
40728             "Tumbuka",
40729             "chiTumbuka",
40730             "tum"
40731         ],
40732         [
40733             "Luganda",
40734             "Luganda",
40735             "lg"
40736         ],
40737         [
40738             "Chichewa",
40739             "Chi-Chewa",
40740             "ny"
40741         ],
40742         [
40743             "Fula",
40744             "Fulfulde",
40745             "ff"
40746         ],
40747         [
40748             "Inupiak",
40749             "Iñupiak",
40750             "ik"
40751         ],
40752         [
40753             "Chamorro",
40754             "Chamoru",
40755             "ch"
40756         ],
40757         [
40758             "Twi",
40759             "Twi",
40760             "tw"
40761         ],
40762         [
40763             "Xhosa",
40764             "isiXhosa",
40765             "xh"
40766         ],
40767         [
40768             "Ndonga",
40769             "Oshiwambo",
40770             "ng"
40771         ],
40772         [
40773             "Sichuan Yi",
40774             "ꆇꉙ",
40775             "ii"
40776         ],
40777         [
40778             "Choctaw",
40779             "Choctaw",
40780             "cho"
40781         ],
40782         [
40783             "Marshallese",
40784             "Ebon",
40785             "mh"
40786         ],
40787         [
40788             "Afar",
40789             "Afar",
40790             "aa"
40791         ],
40792         [
40793             "Kuanyama",
40794             "Kuanyama",
40795             "kj"
40796         ],
40797         [
40798             "Hiri Motu",
40799             "Hiri Motu",
40800             "ho"
40801         ],
40802         [
40803             "Muscogee",
40804             "Muskogee",
40805             "mus"
40806         ],
40807         [
40808             "Kanuri",
40809             "Kanuri",
40810             "kr"
40811         ],
40812         [
40813             "Herero",
40814             "Otsiherero",
40815             "hz"
40816         ]
40817     ],
40818     "imperial": {
40819         "type": "FeatureCollection",
40820         "features": [
40821             {
40822                 "type": "Feature",
40823                 "properties": {
40824                     "id": 0
40825                 },
40826                 "geometry": {
40827                     "type": "MultiPolygon",
40828                     "coordinates": [
40829                         [
40830                             [
40831                                 [
40832                                     -1.426496,
40833                                     50.639342
40834                                 ],
40835                                 [
40836                                     -1.445953,
40837                                     50.648139
40838                                 ],
40839                                 [
40840                                     -1.452789,
40841                                     50.654283
40842                                 ],
40843                                 [
40844                                     -1.485951,
40845                                     50.669338
40846                                 ],
40847                                 [
40848                                     -1.497426,
40849                                     50.672309
40850                                 ],
40851                                 [
40852                                     -1.535146,
40853                                     50.669379
40854                                 ],
40855                                 [
40856                                     -1.551503,
40857                                     50.665107
40858                                 ],
40859                                 [
40860                                     -1.569488,
40861                                     50.658026
40862                                 ],
40863                                 [
40864                                     -1.545318,
40865                                     50.686103
40866                                 ],
40867                                 [
40868                                     -1.50593,
40869                                     50.707709
40870                                 ],
40871                                 [
40872                                     -1.418691,
40873                                     50.733791
40874                                 ],
40875                                 [
40876                                     -1.420888,
40877                                     50.730455
40878                                 ],
40879                                 [
40880                                     -1.423451,
40881                                     50.7237
40882                                 ],
40883                                 [
40884                                     -1.425364,
40885                                     50.72012
40886                                 ],
40887                                 [
40888                                     -1.400868,
40889                                     50.721991
40890                                 ],
40891                                 [
40892                                     -1.377553,
40893                                     50.734198
40894                                 ],
40895                                 [
40896                                     -1.343495,
40897                                     50.761054
40898                                 ],
40899                                 [
40900                                     -1.318512,
40901                                     50.772162
40902                                 ],
40903                                 [
40904                                     -1.295766,
40905                                     50.773179
40906                                 ],
40907                                 [
40908                                     -1.144276,
40909                                     50.733791
40910                                 ],
40911                                 [
40912                                     -1.119537,
40913                                     50.734198
40914                                 ],
40915                                 [
40916                                     -1.10912,
40917                                     50.732856
40918                                 ],
40919                                 [
40920                                     -1.097035,
40921                                     50.726955
40922                                 ],
40923                                 [
40924                                     -1.096425,
40925                                     50.724433
40926                                 ],
40927                                 [
40928                                     -1.097646,
40929                                     50.71601
40930                                 ],
40931                                 [
40932                                     -1.097035,
40933                                     50.713324
40934                                 ],
40935                                 [
40936                                     -1.094228,
40937                                     50.712633
40938                                 ],
40939                                 [
40940                                     -1.085561,
40941                                     50.714016
40942                                 ],
40943                                 [
40944                                     -1.082753,
40945                                     50.713324
40946                                 ],
40947                                 [
40948                                     -1.062327,
40949                                     50.692816
40950                                 ],
40951                                 [
40952                                     -1.062327,
40953                                     50.685289
40954                                 ],
40955                                 [
40956                                     -1.066965,
40957                                     50.685248
40958                                 ],
40959                                 [
40960                                     -1.069651,
40961                                     50.683498
40962                                 ],
40963                                 [
40964                                     -1.071889,
40965                                     50.680976
40966                                 ],
40967                                 [
40968                                     -1.075307,
40969                                     50.678534
40970                                 ],
40971                                 [
40972                                     -1.112701,
40973                                     50.671454
40974                                 ],
40975                                 [
40976                                     -1.128651,
40977                                     50.666449
40978                                 ],
40979                                 [
40980                                     -1.156361,
40981                                     50.650784
40982                                 ],
40983                                 [
40984                                     -1.162221,
40985                                     50.645982
40986                                 ],
40987                                 [
40988                                     -1.164703,
40989                                     50.640937
40990                                 ],
40991                                 [
40992                                     -1.164666,
40993                                     50.639543
40994                                 ],
40995                                 [
40996                                     -1.426496,
40997                                     50.639342
40998                                 ]
40999                             ]
41000                         ],
41001                         [
41002                             [
41003                                 [
41004                                     -7.240314,
41005                                     55.050389
41006                                 ],
41007                                 [
41008                                     -7.013736,
41009                                     55.1615
41010                                 ],
41011                                 [
41012                                     -6.958913,
41013                                     55.20349
41014                                 ],
41015                                 [
41016                                     -6.571562,
41017                                     55.268366
41018                                 ],
41019                                 [
41020                                     -6.509633,
41021                                     55.31398
41022                                 ],
41023                                 [
41024                                     -6.226158,
41025                                     55.344406
41026                                 ],
41027                                 [
41028                                     -6.07105,
41029                                     55.25001
41030                                 ],
41031                                 [
41032                                     -5.712696,
41033                                     55.017635
41034                                 ],
41035                                 [
41036                                     -5.242021,
41037                                     54.415204
41038                                 ],
41039                                 [
41040                                     -5.695554,
41041                                     54.14284
41042                                 ],
41043                                 [
41044                                     -5.72473,
41045                                     54.07455
41046                                 ],
41047                                 [
41048                                     -6.041633,
41049                                     54.006238
41050                                 ],
41051                                 [
41052                                     -6.153953,
41053                                     54.054931
41054                                 ],
41055                                 [
41056                                     -6.220539,
41057                                     54.098803
41058                                 ],
41059                                 [
41060                                     -6.242502,
41061                                     54.099758
41062                                 ],
41063                                 [
41064                                     -6.263661,
41065                                     54.104682
41066                                 ],
41067                                 [
41068                                     -6.269887,
41069                                     54.097927
41070                                 ],
41071                                 [
41072                                     -6.28465,
41073                                     54.105226
41074                                 ],
41075                                 [
41076                                     -6.299585,
41077                                     54.104037
41078                                 ],
41079                                 [
41080                                     -6.313796,
41081                                     54.099696
41082                                 ],
41083                                 [
41084                                     -6.327128,
41085                                     54.097888
41086                                 ],
41087                                 [
41088                                     -6.338962,
41089                                     54.102952
41090                                 ],
41091                                 [
41092                                     -6.346662,
41093                                     54.109877
41094                                 ],
41095                                 [
41096                                     -6.354827,
41097                                     54.110652
41098                                 ],
41099                                 [
41100                                     -6.368108,
41101                                     54.097319
41102                                 ],
41103                                 [
41104                                     -6.369348,
41105                                     54.091118
41106                                 ],
41107                                 [
41108                                     -6.367643,
41109                                     54.083418
41110                                 ],
41111                                 [
41112                                     -6.366919,
41113                                     54.075098
41114                                 ],
41115                                 [
41116                                     -6.371157,
41117                                     54.066778
41118                                 ],
41119                                 [
41120                                     -6.377513,
41121                                     54.063264
41122                                 ],
41123                                 [
41124                                     -6.401026,
41125                                     54.060887
41126                                 ],
41127                                 [
41128                                     -6.426761,
41129                                     54.05541
41130                                 ],
41131                                 [
41132                                     -6.433892,
41133                                     54.055306
41134                                 ],
41135                                 [
41136                                     -6.4403,
41137                                     54.057993
41138                                 ],
41139                                 [
41140                                     -6.446243,
41141                                     54.062438
41142                                 ],
41143                                 [
41144                                     -6.450222,
41145                                     54.066675
41146                                 ],
41147                                 [
41148                                     -6.450894,
41149                                     54.068432
41150                                 ],
41151                                 [
41152                                     -6.47854,
41153                                     54.067709
41154                                 ],
41155                                 [
41156                                     -6.564013,
41157                                     54.04895
41158                                 ],
41159                                 [
41160                                     -6.571868,
41161                                     54.049519
41162                                 ],
41163                                 [
41164                                     -6.587164,
41165                                     54.053343
41166                                 ],
41167                                 [
41168                                     -6.595071,
41169                                     54.052412
41170                                 ],
41171                                 [
41172                                     -6.60029,
41173                                     54.04895
41174                                 ],
41175                                 [
41176                                     -6.605217,
41177                                     54.044475
41178                                 ],
41179                                 [
41180                                     -6.610987,
41181                                     54.039235
41182                                 ],
41183                                 [
41184                                     -6.616465,
41185                                     54.037271
41186                                 ],
41187                                 [
41188                                     -6.630624,
41189                                     54.041819
41190                                 ],
41191                                 [
41192                                     -6.657289,
41193                                     54.061146
41194                                 ],
41195                                 [
41196                                     -6.672534,
41197                                     54.068432
41198                                 ],
41199                                 [
41200                                     -6.657082,
41201                                     54.091945
41202                                 ],
41203                                 [
41204                                     -6.655791,
41205                                     54.103314
41206                                 ],
41207                                 [
41208                                     -6.666436,
41209                                     54.114786
41210                                 ],
41211                                 [
41212                                     -6.643957,
41213                                     54.131839
41214                                 ],
41215                                 [
41216                                     -6.634552,
41217                                     54.150133
41218                                 ],
41219                                 [
41220                                     -6.640339,
41221                                     54.168013
41222                                 ],
41223                                 [
41224                                     -6.648448,
41225                                     54.173665
41226                                 ],
41227                                 [
41228                                     -6.663025,
41229                                     54.183826
41230                                 ],
41231                                 [
41232                                     -6.683954,
41233                                     54.194368
41234                                 ],
41235                                 [
41236                                     -6.694651,
41237                                     54.197985
41238                                 ],
41239                                 [
41240                                     -6.706537,
41241                                     54.198915
41242                                 ],
41243                                 [
41244                                     -6.717234,
41245                                     54.195143
41246                                 ],
41247                                 [
41248                                     -6.724779,
41249                                     54.188631
41250                                 ],
41251                                 [
41252                                     -6.73284,
41253                                     54.183567
41254                                 ],
41255                                 [
41256                                     -6.744777,
41257                                     54.184187
41258                                 ],
41259                                 [
41260                                     -6.766481,
41261                                     54.192352
41262                                 ],
41263                                 [
41264                                     -6.787824,
41265                                     54.202998
41266                                 ],
41267                                 [
41268                                     -6.807358,
41269                                     54.21633
41270                                 ],
41271                                 [
41272                                     -6.823946,
41273                                     54.23235
41274                                 ],
41275                                 [
41276                                     -6.829733,
41277                                     54.242375
41278                                 ],
41279                                 [
41280                                     -6.833196,
41281                                     54.25209
41282                                 ],
41283                                 [
41284                                     -6.837743,
41285                                     54.260513
41286                                 ],
41287                                 [
41288                                     -6.846683,
41289                                     54.266456
41290                                 ],
41291                                 [
41292                                     -6.882185,
41293                                     54.277257
41294                                 ],
41295                                 [
41296                                     -6.864667,
41297                                     54.282734
41298                                 ],
41299                                 [
41300                                     -6.856657,
41301                                     54.292811
41302                                 ],
41303                                 [
41304                                     -6.858414,
41305                                     54.307332
41306                                 ],
41307                                 [
41308                                     -6.870015,
41309                                     54.326001
41310                                 ],
41311                                 [
41312                                     -6.879705,
41313                                     54.341594
41314                                 ],
41315                                 [
41316                                     -6.885957,
41317                                     54.345624
41318                                 ],
41319                                 [
41320                                     -6.897895,
41321                                     54.346193
41322                                 ],
41323                                 [
41324                                     -6.905956,
41325                                     54.349035
41326                                 ],
41327                                 [
41328                                     -6.915051,
41329                                     54.365933
41330                                 ],
41331                                 [
41332                                     -6.922028,
41333                                     54.372703
41334                                 ],
41335                                 [
41336                                     -6.984091,
41337                                     54.403089
41338                                 ],
41339                                 [
41340                                     -7.017836,
41341                                     54.413166
41342                                 ],
41343                                 [
41344                                     -7.049255,
41345                                     54.411512
41346                                 ],
41347                                 [
41348                                     -7.078504,
41349                                     54.394717
41350                                 ],
41351                                 [
41352                                     -7.127028,
41353                                     54.349759
41354                                 ],
41355                                 [
41356                                     -7.159894,
41357                                     54.335186
41358                                 ],
41359                                 [
41360                                     -7.168059,
41361                                     54.335031
41362                                 ],
41363                                 [
41364                                     -7.185629,
41365                                     54.336943
41366                                 ],
41367                                 [
41368                                     -7.18947,
41369                                     54.335692
41370                                 ],
41371                                 [
41372                                     -7.19245,
41373                                     54.334721
41374                                 ],
41375                                 [
41376                                     -7.193949,
41377                                     54.329967
41378                                 ],
41379                                 [
41380                                     -7.191468,
41381                                     54.323869
41382                                 ],
41383                                 [
41384                                     -7.187644,
41385                                     54.318804
41386                                 ],
41387                                 [
41388                                     -7.185009,
41389                                     54.317254
41390                                 ],
41391                                 [
41392                                     -7.184647,
41393                                     54.316634
41394                                 ],
41395                                 [
41396                                     -7.192399,
41397                                     54.307384
41398                                 ],
41399                                 [
41400                                     -7.193691,
41401                                     54.307539
41402                                 ],
41403                                 [
41404                                     -7.199168,
41405                                     54.303457
41406                                 ],
41407                                 [
41408                                     -7.206661,
41409                                     54.304903
41410                                 ],
41411                                 [
41412                                     -7.211467,
41413                                     54.30418
41414                                 ],
41415                                 [
41416                                     -7.209038,
41417                                     54.293431
41418                                 ],
41419                                 [
41420                                     -7.1755,
41421                                     54.283664
41422                                 ],
41423                                 [
41424                                     -7.181495,
41425                                     54.269763
41426                                 ],
41427                                 [
41428                                     -7.14589,
41429                                     54.25209
41430                                 ],
41431                                 [
41432                                     -7.159739,
41433                                     54.24067
41434                                 ],
41435                                 [
41436                                     -7.153331,
41437                                     54.224237
41438                                 ],
41439                                 [
41440                                     -7.174725,
41441                                     54.216072
41442                                 ],
41443                                 [
41444                                     -7.229502,
41445                                     54.207545
41446                                 ],
41447                                 [
41448                                     -7.240871,
41449                                     54.202326
41450                                 ],
41451                                 [
41452                                     -7.249088,
41453                                     54.197416
41454                                 ],
41455                                 [
41456                                     -7.255496,
41457                                     54.190854
41458                                 ],
41459                                 [
41460                                     -7.261128,
41461                                     54.18088
41462                                 ],
41463                                 [
41464                                     -7.256322,
41465                                     54.176901
41466                                 ],
41467                                 [
41468                                     -7.247021,
41469                                     54.17225
41470                                 ],
41471                                 [
41472                                     -7.24578,
41473                                     54.166979
41474                                 ],
41475                                 [
41476                                     -7.265366,
41477                                     54.16114
41478                                 ],
41479                                 [
41480                                     -7.26087,
41481                                     54.151166
41482                                 ],
41483                                 [
41484                                     -7.263505,
41485                                     54.140986
41486                                 ],
41487                                 [
41488                                     -7.27074,
41489                                     54.132253
41490                                 ],
41491                                 [
41492                                     -7.280042,
41493                                     54.126155
41494                                 ],
41495                                 [
41496                                     -7.293788,
41497                                     54.122021
41498                                 ],
41499                                 [
41500                                     -7.297353,
41501                                     54.125896
41502                                 ],
41503                                 [
41504                                     -7.29632,
41505                                     54.134991
41506                                 ],
41507                                 [
41508                                     -7.296423,
41509                                     54.146515
41510                                 ],
41511                                 [
41512                                     -7.295028,
41513                                     54.155404
41514                                 ],
41515                                 [
41516                                     -7.292134,
41517                                     54.162638
41518                                 ],
41519                                 [
41520                                     -7.295545,
41521                                     54.165119
41522                                 ],
41523                                 [
41524                                     -7.325982,
41525                                     54.154577
41526                                 ],
41527                                 [
41528                                     -7.333165,
41529                                     54.149409
41530                                 ],
41531                                 [
41532                                     -7.333165,
41533                                     54.142743
41534                                 ],
41535                                 [
41536                                     -7.310324,
41537                                     54.114683
41538                                 ],
41539                                 [
41540                                     -7.316489,
41541                                     54.11428
41542                                 ],
41543                                 [
41544                                     -7.326964,
41545                                     54.113597
41546                                 ],
41547                                 [
41548                                     -7.375488,
41549                                     54.123312
41550                                 ],
41551                                 [
41552                                     -7.390216,
41553                                     54.121194
41554                                 ],
41555                                 [
41556                                     -7.39466,
41557                                     54.121917
41558                                 ],
41559                                 [
41560                                     -7.396624,
41561                                     54.126258
41562                                 ],
41563                                 [
41564                                     -7.403962,
41565                                     54.135043
41566                                 ],
41567                                 [
41568                                     -7.41223,
41569                                     54.136438
41570                                 ],
41571                                 [
41572                                     -7.422255,
41573                                     54.135456
41574                                 ],
41575                                 [
41576                                     -7.425769,
41577                                     54.136955
41578                                 ],
41579                                 [
41580                                     -7.414659,
41581                                     54.145688
41582                                 ],
41583                                 [
41584                                     -7.439619,
41585                                     54.146929
41586                                 ],
41587                                 [
41588                                     -7.480753,
41589                                     54.127653
41590                                 ],
41591                                 [
41592                                     -7.502302,
41593                                     54.125121
41594                                 ],
41595                                 [
41596                                     -7.609014,
41597                                     54.139901
41598                                 ],
41599                                 [
41600                                     -7.620796,
41601                                     54.144965
41602                                 ],
41603                                 [
41604                                     -7.624052,
41605                                     54.153336
41606                                 ],
41607                                 [
41608                                     -7.625706,
41609                                     54.162173
41610                                 ],
41611                                 [
41612                                     -7.632682,
41613                                     54.168529
41614                                 ],
41615                                 [
41616                                     -7.70477,
41617                                     54.200362
41618                                 ],
41619                                 [
41620                                     -7.722599,
41621                                     54.202326
41622                                 ],
41623                                 [
41624                                     -7.782078,
41625                                     54.2
41626                                 ],
41627                                 [
41628                                     -7.836959,
41629                                     54.204341
41630                                 ],
41631                                 [
41632                                     -7.856441,
41633                                     54.211421
41634                                 ],
41635                                 [
41636                                     -7.86967,
41637                                     54.226872
41638                                 ],
41639                                 [
41640                                     -7.873649,
41641                                     54.271055
41642                                 ],
41643                                 [
41644                                     -7.880264,
41645                                     54.287023
41646                                 ],
41647                                 [
41648                                     -7.894966,
41649                                     54.293586
41650                                 ],
41651                                 [
41652                                     -7.93411,
41653                                     54.297049
41654                                 ],
41655                                 [
41656                                     -7.942075,
41657                                     54.298873
41658                                 ],
41659                                 [
41660                                     -7.950802,
41661                                     54.300873
41662                                 ],
41663                                 [
41664                                     -7.96801,
41665                                     54.31219
41666                                 ],
41667                                 [
41668                                     -7.981033,
41669                                     54.326556
41670                                 ],
41671                                 [
41672                                     -8.002194,
41673                                     54.357923
41674                                 ],
41675                                 [
41676                                     -8.03134,
41677                                     54.358027
41678                                 ],
41679                                 [
41680                                     -8.05648,
41681                                     54.365882
41682                                 ],
41683                                 [
41684                                     -8.079941,
41685                                     54.380196
41686                                 ],
41687                                 [
41688                                     -8.122419,
41689                                     54.415233
41690                                 ],
41691                                 [
41692                                     -8.146346,
41693                                     54.430736
41694                                 ],
41695                                 [
41696                                     -8.156035,
41697                                     54.439055
41698                                 ],
41699                                 [
41700                                     -8.158128,
41701                                     54.447117
41702                                 ],
41703                                 [
41704                                     -8.161177,
41705                                     54.454817
41706                                 ],
41707                                 [
41708                                     -8.173837,
41709                                     54.461741
41710                                 ],
41711                                 [
41712                                     -8.168467,
41713                                     54.463477
41714                                 ],
41715                                 [
41716                                     -8.15017,
41717                                     54.46939
41718                                 ],
41719                                 [
41720                                     -8.097046,
41721                                     54.478588
41722                                 ],
41723                                 [
41724                                     -8.072448,
41725                                     54.487063
41726                                 ],
41727                                 [
41728                                     -8.060976,
41729                                     54.493316
41730                                 ],
41731                                 [
41732                                     -8.05586,
41733                                     54.497553
41734                                 ],
41735                                 [
41736                                     -8.043561,
41737                                     54.512229
41738                                 ],
41739                                 [
41740                                     -8.023278,
41741                                     54.529696
41742                                 ],
41743                                 [
41744                                     -8.002194,
41745                                     54.543442
41746                                 ],
41747                                 [
41748                                     -7.926411,
41749                                     54.533055
41750                                 ],
41751                                 [
41752                                     -7.887137,
41753                                     54.532125
41754                                 ],
41755                                 [
41756                                     -7.848844,
41757                                     54.54091
41758                                 ],
41759                                 [
41760                                     -7.749264,
41761                                     54.596152
41762                                 ],
41763                                 [
41764                                     -7.707871,
41765                                     54.604162
41766                                 ],
41767                                 [
41768                                     -7.707944,
41769                                     54.604708
41770                                 ],
41771                                 [
41772                                     -7.707951,
41773                                     54.604763
41774                                 ],
41775                                 [
41776                                     -7.710558,
41777                                     54.624264
41778                                 ],
41779                                 [
41780                                     -7.721204,
41781                                     54.625866
41782                                 ],
41783                                 [
41784                                     -7.736758,
41785                                     54.619251
41786                                 ],
41787                                 [
41788                                     -7.753553,
41789                                     54.614497
41790                                 ],
41791                                 [
41792                                     -7.769159,
41793                                     54.618011
41794                                 ],
41795                                 [
41796                                     -7.801199,
41797                                     54.634806
41798                                 ],
41799                                 [
41800                                     -7.814996,
41801                                     54.639457
41802                                 ],
41803                                 [
41804                                     -7.822541,
41805                                     54.638113
41806                                 ],
41807                                 [
41808                                     -7.838044,
41809                                     54.63124
41810                                 ],
41811                                 [
41812                                     -7.846416,
41813                                     54.631447
41814                                 ],
41815                                 [
41816                                     -7.85427,
41817                                     54.636408
41818                                 ],
41819                                 [
41820                                     -7.864347,
41821                                     54.649069
41822                                 ],
41823                                 [
41824                                     -7.872771,
41825                                     54.652221
41826                                 ],
41827                                 [
41828                                     -7.890082,
41829                                     54.655063
41830                                 ],
41831                                 [
41832                                     -7.906619,
41833                                     54.661316
41834                                 ],
41835                                 [
41836                                     -7.914835,
41837                                     54.671651
41838                                 ],
41839                                 [
41840                                     -7.907135,
41841                                     54.686689
41842                                 ],
41843                                 [
41844                                     -7.913233,
41845                                     54.688653
41846                                 ],
41847                                 [
41848                                     -7.929666,
41849                                     54.696714
41850                                 ],
41851                                 [
41852                                     -7.880109,
41853                                     54.711029
41854                                 ],
41855                                 [
41856                                     -7.845899,
41857                                     54.731027
41858                                 ],
41859                                 [
41860                                     -7.832153,
41861                                     54.730614
41862                                 ],
41863                                 [
41864                                     -7.803576,
41865                                     54.716145
41866                                 ],
41867                                 [
41868                                     -7.770503,
41869                                     54.706016
41870                                 ],
41871                                 [
41872                                     -7.736603,
41873                                     54.707463
41874                                 ],
41875                                 [
41876                                     -7.70229,
41877                                     54.718883
41878                                 ],
41879                                 [
41880                                     -7.667512,
41881                                     54.738779
41882                                 ],
41883                                 [
41884                                     -7.649683,
41885                                     54.744877
41886                                 ],
41887                                 [
41888                                     -7.61537,
41889                                     54.739347
41890                                 ],
41891                                 [
41892                                     -7.585398,
41893                                     54.744722
41894                                 ],
41895                                 [
41896                                     -7.566639,
41897                                     54.738675
41898                                 ],
41899                                 [
41900                                     -7.556149,
41901                                     54.738365
41902                                 ],
41903                                 [
41904                                     -7.543075,
41905                                     54.741673
41906                                 ],
41907                                 [
41908                                     -7.543023,
41909                                     54.743791
41910                                 ],
41911                                 [
41912                                     -7.548398,
41913                                     54.747202
41914                                 ],
41915                                 [
41916                                     -7.551705,
41917                                     54.754695
41918                                 ],
41919                                 [
41920                                     -7.549741,
41921                                     54.779603
41922                                 ],
41923                                 [
41924                                     -7.543385,
41925                                     54.793091
41926                                 ],
41927                                 [
41928                                     -7.470831,
41929                                     54.845284
41930                                 ],
41931                                 [
41932                                     -7.45507,
41933                                     54.863009
41934                                 ],
41935                                 [
41936                                     -7.444735,
41937                                     54.884455
41938                                 ],
41939                                 [
41940                                     -7.444735,
41941                                     54.894893
41942                                 ],
41943                                 [
41944                                     -7.448972,
41945                                     54.920318
41946                                 ],
41947                                 [
41948                                     -7.445251,
41949                                     54.932152
41950                                 ],
41951                                 [
41952                                     -7.436983,
41953                                     54.938301
41954                                 ],
41955                                 [
41956                                     -7.417139,
41957                                     54.943056
41958                                 ],
41959                                 [
41960                                     -7.415755,
41961                                     54.944372
41962                                 ],
41963                                 [
41964                                     -7.408665,
41965                                     54.951117
41966                                 ],
41967                                 [
41968                                     -7.407424,
41969                                     54.959437
41970                                 ],
41971                                 [
41972                                     -7.413109,
41973                                     54.984965
41974                                 ],
41975                                 [
41976                                     -7.409078,
41977                                     54.992045
41978                                 ],
41979                                 [
41980                                     -7.403755,
41981                                     54.99313
41982                                 ],
41983                                 [
41984                                     -7.40112,
41985                                     54.994836
41986                                 ],
41987                                 [
41988                                     -7.405254,
41989                                     55.003569
41990                                 ],
41991                                 [
41992                                     -7.376987,
41993                                     55.02889
41994                                 ],
41995                                 [
41996                                     -7.366962,
41997                                     55.035557
41998                                 ],
41999                                 [
42000                                     -7.355024,
42001                                     55.040931
42002                                 ],
42003                                 [
42004                                     -7.291152,
42005                                     55.046615
42006                                 ],
42007                                 [
42008                                     -7.282987,
42009                                     55.051835
42010                                 ],
42011                                 [
42012                                     -7.275288,
42013                                     55.058863
42014                                 ],
42015                                 [
42016                                     -7.266503,
42017                                     55.065167
42018                                 ],
42019                                 [
42020                                     -7.247097,
42021                                     55.069328
42022                                 ],
42023                                 [
42024                                     -7.2471,
42025                                     55.069322
42026                                 ],
42027                                 [
42028                                     -7.256744,
42029                                     55.050686
42030                                 ],
42031                                 [
42032                                     -7.240956,
42033                                     55.050279
42034                                 ],
42035                                 [
42036                                     -7.240314,
42037                                     55.050389
42038                                 ]
42039                             ]
42040                         ],
42041                         [
42042                             [
42043                                 [
42044                                     -13.688588,
42045                                     57.596259
42046                                 ],
42047                                 [
42048                                     -13.690419,
42049                                     57.596259
42050                                 ],
42051                                 [
42052                                     -13.691314,
42053                                     57.596503
42054                                 ],
42055                                 [
42056                                     -13.691314,
42057                                     57.597154
42058                                 ],
42059                                 [
42060                                     -13.690419,
42061                                     57.597805
42062                                 ],
42063                                 [
42064                                     -13.688588,
42065                                     57.597805
42066                                 ],
42067                                 [
42068                                     -13.687652,
42069                                     57.597154
42070                                 ],
42071                                 [
42072                                     -13.687652,
42073                                     57.596869
42074                                 ],
42075                                 [
42076                                     -13.688588,
42077                                     57.596259
42078                                 ]
42079                             ]
42080                         ],
42081                         [
42082                             [
42083                                 [
42084                                     -4.839121,
42085                                     54.469789
42086                                 ],
42087                                 [
42088                                     -4.979941,
42089                                     54.457977
42090                                 ],
42091                                 [
42092                                     -5.343644,
42093                                     54.878637
42094                                 ],
42095                                 [
42096                                     -5.308469,
42097                                     55.176452
42098                                 ],
42099                                 [
42100                                     -6.272566,
42101                                     55.418443
42102                                 ],
42103                                 [
42104                                     -8.690528,
42105                                     57.833706
42106                                 ],
42107                                 [
42108                                     -6.344705,
42109                                     59.061083
42110                                 ],
42111                                 [
42112                                     -4.204785,
42113                                     58.63305
42114                                 ],
42115                                 [
42116                                     -2.31566,
42117                                     60.699068
42118                                 ],
42119                                 [
42120                                     -1.695335,
42121                                     60.76432
42122                                 ],
42123                                 [
42124                                     -1.58092,
42125                                     60.866001
42126                                 ],
42127                                 [
42128                                     -0.17022,
42129                                     60.897204
42130                                 ],
42131                                 [
42132                                     -0.800508,
42133                                     59.770037
42134                                 ],
42135                                 [
42136                                     -1.292368,
42137                                     57.732574
42138                                 ],
42139                                 [
42140                                     -1.850077,
42141                                     55.766368
42142                                 ],
42143                                 [
42144                                     -1.73054,
42145                                     55.782219
42146                                 ],
42147                                 [
42148                                     1.892395,
42149                                     52.815229
42150                                 ],
42151                                 [
42152                                     1.742775,
42153                                     51.364209
42154                                 ],
42155                                 [
42156                                     1.080173,
42157                                     50.847526
42158                                 ],
42159                                 [
42160                                     0.000774,
42161                                     50.664982
42162                                 ],
42163                                 [
42164                                     -0.162997,
42165                                     50.752401
42166                                 ],
42167                                 [
42168                                     -0.725152,
42169                                     50.731879
42170                                 ],
42171                                 [
42172                                     -0.768853,
42173                                     50.741516
42174                                 ],
42175                                 [
42176                                     -0.770985,
42177                                     50.736884
42178                                 ],
42179                                 [
42180                                     -0.789947,
42181                                     50.730048
42182                                 ],
42183                                 [
42184                                     -0.812815,
42185                                     50.734768
42186                                 ],
42187                                 [
42188                                     -0.877742,
42189                                     50.761156
42190                                 ],
42191                                 [
42192                                     -0.942879,
42193                                     50.758338
42194                                 ],
42195                                 [
42196                                     -0.992581,
42197                                     50.737379
42198                                 ],
42199                                 [
42200                                     -1.18513,
42201                                     50.766989
42202                                 ],
42203                                 [
42204                                     -1.282741,
42205                                     50.792353
42206                                 ],
42207                                 [
42208                                     -1.375004,
42209                                     50.772063
42210                                 ],
42211                                 [
42212                                     -1.523427,
42213                                     50.719605
42214                                 ],
42215                                 [
42216                                     -1.630649,
42217                                     50.695128
42218                                 ],
42219                                 [
42220                                     -1.663617,
42221                                     50.670508
42222                                 ],
42223                                 [
42224                                     -1.498021,
42225                                     50.40831
42226                                 ],
42227                                 [
42228                                     -4.097427,
42229                                     49.735486
42230                                 ],
42231                                 [
42232                                     -6.825199,
42233                                     49.700905
42234                                 ],
42235                                 [
42236                                     -5.541541,
42237                                     51.446591
42238                                 ],
42239                                 [
42240                                     -6.03361,
42241                                     51.732369
42242                                 ],
42243                                 [
42244                                     -4.791746,
42245                                     52.635365
42246                                 ],
42247                                 [
42248                                     -4.969244,
42249                                     52.637413
42250                                 ],
42251                                 [
42252                                     -5.049473,
42253                                     53.131209
42254                                 ],
42255                                 [
42256                                     -4.787393,
42257                                     53.409491
42258                                 ],
42259                                 [
42260                                     -4.734148,
42261                                     53.424866
42262                                 ],
42263                                 [
42264                                     -4.917096,
42265                                     53.508212
42266                                 ],
42267                                 [
42268                                     -4.839121,
42269                                     54.469789
42270                                 ]
42271                             ]
42272                         ]
42273                     ]
42274                 }
42275             },
42276             {
42277                 "type": "Feature",
42278                 "properties": {
42279                     "id": 0
42280                 },
42281                 "geometry": {
42282                     "type": "MultiPolygon",
42283                     "coordinates": [
42284                         [
42285                             [
42286                                 [
42287                                     -157.018938,
42288                                     19.300864
42289                                 ],
42290                                 [
42291                                     -179.437336,
42292                                     27.295312
42293                                 ],
42294                                 [
42295                                     -179.480084,
42296                                     28.991459
42297                                 ],
42298                                 [
42299                                     -168.707465,
42300                                     26.30325
42301                                 ],
42302                                 [
42303                                     -163.107414,
42304                                     24.60499
42305                                 ],
42306                                 [
42307                                     -153.841679,
42308                                     20.079306
42309                                 ],
42310                                 [
42311                                     -154.233846,
42312                                     19.433391
42313                                 ],
42314                                 [
42315                                     -153.61725,
42316                                     18.900587
42317                                 ],
42318                                 [
42319                                     -154.429471,
42320                                     18.171036
42321                                 ],
42322                                 [
42323                                     -156.780638,
42324                                     18.718492
42325                                 ],
42326                                 [
42327                                     -157.018938,
42328                                     19.300864
42329                                 ]
42330                             ]
42331                         ],
42332                         [
42333                             [
42334                                 [
42335                                     -78.91269,
42336                                     43.037032
42337                                 ],
42338                                 [
42339                                     -78.964351,
42340                                     42.976393
42341                                 ],
42342                                 [
42343                                     -78.981718,
42344                                     42.979043
42345                                 ],
42346                                 [
42347                                     -78.998055,
42348                                     42.991111
42349                                 ],
42350                                 [
42351                                     -79.01189,
42352                                     43.004358
42353                                 ],
42354                                 [
42355                                     -79.022046,
42356                                     43.010539
42357                                 ],
42358                                 [
42359                                     -79.023076,
42360                                     43.017015
42361                                 ],
42362                                 [
42363                                     -79.00983,
42364                                     43.050867
42365                                 ],
42366                                 [
42367                                     -79.011449,
42368                                     43.065291
42369                                 ],
42370                                 [
42371                                     -78.993051,
42372                                     43.066174
42373                                 ],
42374                                 [
42375                                     -78.975536,
42376                                     43.069707
42377                                 ],
42378                                 [
42379                                     -78.958905,
42380                                     43.070884
42381                                 ],
42382                                 [
42383                                     -78.943304,
42384                                     43.065291
42385                                 ],
42386                                 [
42387                                     -78.917399,
42388                                     43.058521
42389                                 ],
42390                                 [
42391                                     -78.908569,
42392                                     43.049396
42393                                 ],
42394                                 [
42395                                     -78.91269,
42396                                     43.037032
42397                                 ]
42398                             ]
42399                         ],
42400                         [
42401                             [
42402                                 [
42403                                     -123.03529,
42404                                     48.992515
42405                                 ],
42406                                 [
42407                                     -123.035308,
42408                                     48.992499
42409                                 ],
42410                                 [
42411                                     -123.045277,
42412                                     48.984361
42413                                 ],
42414                                 [
42415                                     -123.08849,
42416                                     48.972235
42417                                 ],
42418                                 [
42419                                     -123.089345,
42420                                     48.987982
42421                                 ],
42422                                 [
42423                                     -123.090484,
42424                                     48.992499
42425                                 ],
42426                                 [
42427                                     -123.090488,
42428                                     48.992515
42429                                 ],
42430                                 [
42431                                     -123.035306,
42432                                     48.992515
42433                                 ],
42434                                 [
42435                                     -123.03529,
42436                                     48.992515
42437                                 ]
42438                             ]
42439                         ],
42440                         [
42441                             [
42442                                 [
42443                                     -103.837038,
42444                                     29.279906
42445                                 ],
42446                                 [
42447                                     -103.864121,
42448                                     29.281366
42449                                 ],
42450                                 [
42451                                     -103.928122,
42452                                     29.293019
42453                                 ],
42454                                 [
42455                                     -104.01915,
42456                                     29.32033
42457                                 ],
42458                                 [
42459                                     -104.057313,
42460                                     29.339037
42461                                 ],
42462                                 [
42463                                     -104.105424,
42464                                     29.385675
42465                                 ],
42466                                 [
42467                                     -104.139789,
42468                                     29.400584
42469                                 ],
42470                                 [
42471                                     -104.161648,
42472                                     29.416759
42473                                 ],
42474                                 [
42475                                     -104.194514,
42476                                     29.448927
42477                                 ],
42478                                 [
42479                                     -104.212291,
42480                                     29.484661
42481                                 ],
42482                                 [
42483                                     -104.218698,
42484                                     29.489829
42485                                 ],
42486                                 [
42487                                     -104.227148,
42488                                     29.493033
42489                                 ],
42490                                 [
42491                                     -104.251022,
42492                                     29.508588
42493                                 ],
42494                                 [
42495                                     -104.267171,
42496                                     29.526571
42497                                 ],
42498                                 [
42499                                     -104.292751,
42500                                     29.532824
42501                                 ],
42502                                 [
42503                                     -104.320604,
42504                                     29.532255
42505                                 ],
42506                                 [
42507                                     -104.338484,
42508                                     29.524013
42509                                 ],
42510                                 [
42511                                     -104.349026,
42512                                     29.537578
42513                                 ],
42514                                 [
42515                                     -104.430443,
42516                                     29.582795
42517                                 ],
42518                                 [
42519                                     -104.437832,
42520                                     29.58543
42521                                 ],
42522                                 [
42523                                     -104.444008,
42524                                     29.589203
42525                                 ],
42526                                 [
42527                                     -104.448555,
42528                                     29.597678
42529                                 ],
42530                                 [
42531                                     -104.452069,
42532                                     29.607109
42533                                 ],
42534                                 [
42535                                     -104.455222,
42536                                     29.613387
42537                                 ],
42538                                 [
42539                                     -104.469381,
42540                                     29.625402
42541                                 ],
42542                                 [
42543                                     -104.516639,
42544                                     29.654315
42545                                 ],
42546                                 [
42547                                     -104.530824,
42548                                     29.667906
42549                                 ],
42550                                 [
42551                                     -104.535036,
42552                                     29.677802
42553                                 ],
42554                                 [
42555                                     -104.535191,
42556                                     29.687853
42557                                 ],
42558                                 [
42559                                     -104.537103,
42560                                     29.702116
42561                                 ],
42562                                 [
42563                                     -104.543666,
42564                                     29.71643
42565                                 ],
42566                                 [
42567                                     -104.561391,
42568                                     29.745421
42569                                 ],
42570                                 [
42571                                     -104.570279,
42572                                     29.787511
42573                                 ],
42574                                 [
42575                                     -104.583586,
42576                                     29.802575
42577                                 ],
42578                                 [
42579                                     -104.601207,
42580                                     29.81477
42581                                 ],
42582                                 [
42583                                     -104.619682,
42584                                     29.833064
42585                                 ],
42586                                 [
42587                                     -104.623764,
42588                                     29.841487
42589                                 ],
42590                                 [
42591                                     -104.637588,
42592                                     29.887996
42593                                 ],
42594                                 [
42595                                     -104.656346,
42596                                     29.908201
42597                                 ],
42598                                 [
42599                                     -104.660635,
42600                                     29.918433
42601                                 ],
42602                                 [
42603                                     -104.663478,
42604                                     29.923084
42605                                 ],
42606                                 [
42607                                     -104.676526,
42608                                     29.93683
42609                                 ],
42610                                 [
42611                                     -104.680479,
42612                                     29.942308
42613                                 ],
42614                                 [
42615                                     -104.682469,
42616                                     29.952126
42617                                 ],
42618                                 [
42619                                     -104.680117,
42620                                     29.967784
42621                                 ],
42622                                 [
42623                                     -104.680479,
42624                                     29.976466
42625                                 ],
42626                                 [
42627                                     -104.699108,
42628                                     30.03145
42629                                 ],
42630                                 [
42631                                     -104.701589,
42632                                     30.055324
42633                                 ],
42634                                 [
42635                                     -104.698592,
42636                                     30.075271
42637                                 ],
42638                                 [
42639                                     -104.684639,
42640                                     30.111135
42641                                 ],
42642                                 [
42643                                     -104.680479,
42644                                     30.134131
42645                                 ],
42646                                 [
42647                                     -104.67867,
42648                                     30.170356
42649                                 ],
42650                                 [
42651                                     -104.681564,
42652                                     30.192939
42653                                 ],
42654                                 [
42655                                     -104.695853,
42656                                     30.208441
42657                                 ],
42658                                 [
42659                                     -104.715231,
42660                                     30.243995
42661                                 ],
42662                                 [
42663                                     -104.724585,
42664                                     30.252211
42665                                 ],
42666                                 [
42667                                     -104.742155,
42668                                     30.25986
42669                                 ],
42670                                 [
42671                                     -104.74939,
42672                                     30.264459
42673                                 ],
42674                                 [
42675                                     -104.761689,
42676                                     30.284199
42677                                 ],
42678                                 [
42679                                     -104.774143,
42680                                     30.311588
42681                                 ],
42682                                 [
42683                                     -104.788767,
42684                                     30.335927
42685                                 ],
42686                                 [
42687                                     -104.807732,
42688                                     30.346418
42689                                 ],
42690                                 [
42691                                     -104.8129,
42692                                     30.350707
42693                                 ],
42694                                 [
42695                                     -104.814967,
42696                                     30.360577
42697                                 ],
42698                                 [
42699                                     -104.816001,
42700                                     30.371997
42701                                 ],
42702                                 [
42703                                     -104.818274,
42704                                     30.380524
42705                                 ],
42706                                 [
42707                                     -104.824269,
42708                                     30.38719
42709                                 ],
42710                                 [
42711                                     -104.83755,
42712                                     30.394063
42713                                 ],
42714                                 [
42715                                     -104.844939,
42716                                     30.40104
42717                                 ],
42718                                 [
42719                                     -104.853259,
42720                                     30.41215
42721                                 ],
42722                                 [
42723                                     -104.855016,
42724                                     30.417473
42725                                 ],
42726                                 [
42727                                     -104.853621,
42728                                     30.423984
42729                                 ],
42730                                 [
42731                                     -104.852432,
42732                                     30.438867
42733                                 ],
42734                                 [
42735                                     -104.854655,
42736                                     30.448737
42737                                 ],
42738                                 [
42739                                     -104.864473,
42740                                     30.462018
42741                                 ],
42742                                 [
42743                                     -104.866695,
42744                                     30.473025
42745                                 ],
42746                                 [
42747                                     -104.865248,
42748                                     30.479898
42749                                 ],
42750                                 [
42751                                     -104.859615,
42752                                     30.491112
42753                                 ],
42754                                 [
42755                                     -104.859254,
42756                                     30.497261
42757                                 ],
42758                                 [
42759                                     -104.863026,
42760                                     30.502377
42761                                 ],
42762                                 [
42763                                     -104.879718,
42764                                     30.510852
42765                                 ],
42766                                 [
42767                                     -104.882146,
42768                                     30.520929
42769                                 ],
42770                                 [
42771                                     -104.884007,
42772                                     30.541858
42773                                 ],
42774                                 [
42775                                     -104.886591,
42776                                     30.551883
42777                                 ],
42778                                 [
42779                                     -104.898166,
42780                                     30.569401
42781                                 ],
42782                                 [
42783                                     -104.928242,
42784                                     30.599529
42785                                 ],
42786                                 [
42787                                     -104.93434,
42788                                     30.610536
42789                                 ],
42790                                 [
42791                                     -104.941057,
42792                                     30.61405
42793                                 ],
42794                                 [
42795                                     -104.972735,
42796                                     30.618029
42797                                 ],
42798                                 [
42799                                     -104.98276,
42800                                     30.620716
42801                                 ],
42802                                 [
42803                                     -104.989117,
42804                                     30.629553
42805                                 ],
42806                                 [
42807                                     -104.991649,
42808                                     30.640301
42809                                 ],
42810                                 [
42811                                     -104.992941,
42812                                     30.651464
42813                                 ],
42814                                 [
42815                                     -104.995783,
42816                                     30.661747
42817                                 ],
42818                                 [
42819                                     -105.008495,
42820                                     30.676992
42821                                 ],
42822                                 [
42823                                     -105.027977,
42824                                     30.690117
42825                                 ],
42826                                 [
42827                                     -105.049475,
42828                                     30.699264
42829                                 ],
42830                                 [
42831                                     -105.06813,
42832                                     30.702675
42833                                 ],
42834                                 [
42835                                     -105.087043,
42836                                     30.709806
42837                                 ],
42838                                 [
42839                                     -105.133604,
42840                                     30.757917
42841                                 ],
42842                                 [
42843                                     -105.140425,
42844                                     30.750476
42845                                 ],
42846                                 [
42847                                     -105.153241,
42848                                     30.763188
42849                                 ],
42850                                 [
42851                                     -105.157788,
42852                                     30.76572
42853                                 ],
42854                                 [
42855                                     -105.160889,
42856                                     30.764118
42857                                 ],
42858                                 [
42859                                     -105.162698,
42860                                     30.774919
42861                                 ],
42862                                 [
42863                                     -105.167297,
42864                                     30.781171
42865                                 ],
42866                                 [
42867                                     -105.17479,
42868                                     30.783962
42869                                 ],
42870                                 [
42871                                     -105.185125,
42872                                     30.784634
42873                                 ],
42874                                 [
42875                                     -105.195306,
42876                                     30.787941
42877                                 ],
42878                                 [
42879                                     -105.204917,
42880                                     30.80241
42881                                 ],
42882                                 [
42883                                     -105.2121,
42884                                     30.805718
42885                                 ],
42886                                 [
42887                                     -105.21825,
42888                                     30.806803
42889                                 ],
42890                                 [
42891                                     -105.229257,
42892                                     30.810214
42893                                 ],
42894                                 [
42895                                     -105.232874,
42896                                     30.809128
42897                                 ],
42898                                 [
42899                                     -105.239851,
42900                                     30.801532
42901                                 ],
42902                                 [
42903                                     -105.243985,
42904                                     30.799103
42905                                 ],
42906                                 [
42907                                     -105.249049,
42908                                     30.798845
42909                                 ],
42910                                 [
42911                                     -105.259488,
42912                                     30.802979
42913                                 ],
42914                                 [
42915                                     -105.265844,
42916                                     30.808405
42917                                 ],
42918                                 [
42919                                     -105.270753,
42920                                     30.814348
42921                                 ],
42922                                 [
42923                                     -105.277006,
42924                                     30.819412
42925                                 ],
42926                                 [
42927                                     -105.334315,
42928                                     30.843803
42929                                 ],
42930                                 [
42931                                     -105.363771,
42932                                     30.850366
42933                                 ],
42934                                 [
42935                                     -105.376173,
42936                                     30.859565
42937                                 ],
42938                                 [
42939                                     -105.41555,
42940                                     30.902456
42941                                 ],
42942                                 [
42943                                     -105.496682,
42944                                     30.95651
42945                                 ],
42946                                 [
42947                                     -105.530789,
42948                                     30.991701
42949                                 ],
42950                                 [
42951                                     -105.555955,
42952                                     31.002605
42953                                 ],
42954                                 [
42955                                     -105.565722,
42956                                     31.016661
42957                                 ],
42958                                 [
42959                                     -105.578641,
42960                                     31.052163
42961                                 ],
42962                                 [
42963                                     -105.59094,
42964                                     31.071438
42965                                 ],
42966                                 [
42967                                     -105.605875,
42968                                     31.081928
42969                                 ],
42970                                 [
42971                                     -105.623496,
42972                                     31.090351
42973                                 ],
42974                                 [
42975                                     -105.643805,
42976                                     31.103684
42977                                 ],
42978                                 [
42979                                     -105.668042,
42980                                     31.127869
42981                                 ],
42982                                 [
42983                                     -105.675225,
42984                                     31.131951
42985                                 ],
42986                                 [
42987                                     -105.692278,
42988                                     31.137635
42989                                 ],
42990                                 [
42991                                     -105.76819,
42992                                     31.18001
42993                                 ],
42994                                 [
42995                                     -105.777854,
42996                                     31.192722
42997                                 ],
42998                                 [
42999                                     -105.78483,
43000                                     31.211016
43001                                 ],
43002                                 [
43003                                     -105.861983,
43004                                     31.288376
43005                                 ],
43006                                 [
43007                                     -105.880147,
43008                                     31.300881
43009                                 ],
43010                                 [
43011                                     -105.896994,
43012                                     31.305997
43013                                 ],
43014                                 [
43015                                     -105.897149,
43016                                     31.309511
43017                                 ],
43018                                 [
43019                                     -105.908802,
43020                                     31.317004
43021                                 ],
43022                                 [
43023                                     -105.928052,
43024                                     31.326461
43025                                 ],
43026                                 [
43027                                     -105.934563,
43028                                     31.335504
43029                                 ],
43030                                 [
43031                                     -105.941772,
43032                                     31.352351
43033                                 ],
43034                                 [
43035                                     -105.948515,
43036                                     31.361239
43037                                 ],
43038                                 [
43039                                     -105.961202,
43040                                     31.371006
43041                                 ],
43042                                 [
43043                                     -106.004739,
43044                                     31.396948
43045                                 ],
43046                                 [
43047                                     -106.021147,
43048                                     31.402167
43049                                 ],
43050                                 [
43051                                     -106.046261,
43052                                     31.404648
43053                                 ],
43054                                 [
43055                                     -106.065304,
43056                                     31.410952
43057                                 ],
43058                                 [
43059                                     -106.099385,
43060                                     31.428884
43061                                 ],
43062                                 [
43063                                     -106.141113,
43064                                     31.439167
43065                                 ],
43066                                 [
43067                                     -106.164316,
43068                                     31.447797
43069                                 ],
43070                                 [
43071                                     -106.174471,
43072                                     31.460251
43073                                 ],
43074                                 [
43075                                     -106.209249,
43076                                     31.477305
43077                                 ],
43078                                 [
43079                                     -106.215424,
43080                                     31.483919
43081                                 ],
43082                                 [
43083                                     -106.21744,
43084                                     31.488725
43085                                 ],
43086                                 [
43087                                     -106.218731,
43088                                     31.494616
43089                                 ],
43090                                 [
43091                                     -106.222891,
43092                                     31.50459
43093                                 ],
43094                                 [
43095                                     -106.232658,
43096                                     31.519938
43097                                 ],
43098                                 [
43099                                     -106.274749,
43100                                     31.562622
43101                                 ],
43102                                 [
43103                                     -106.286298,
43104                                     31.580141
43105                                 ],
43106                                 [
43107                                     -106.312292,
43108                                     31.648612
43109                                 ],
43110                                 [
43111                                     -106.331309,
43112                                     31.68215
43113                                 ],
43114                                 [
43115                                     -106.35849,
43116                                     31.717548
43117                                 ],
43118                                 [
43119                                     -106.39177,
43120                                     31.745919
43121                                 ],
43122                                 [
43123                                     -106.428951,
43124                                     31.758476
43125                                 ],
43126                                 [
43127                                     -106.473135,
43128                                     31.755065
43129                                 ],
43130                                 [
43131                                     -106.492797,
43132                                     31.759044
43133                                 ],
43134                                 [
43135                                     -106.501425,
43136                                     31.766344
43137                                 ],
43138                                 [
43139                                     -106.506052,
43140                                     31.770258
43141                                 ],
43142                                 [
43143                                     -106.517189,
43144                                     31.773824
43145                                 ],
43146                                 [
43147                                     -106.558969,
43148                                     31.773876
43149                                 ],
43150                                 [
43151                                     -106.584859,
43152                                     31.773927
43153                                 ],
43154                                 [
43155                                     -106.610697,
43156                                     31.773979
43157                                 ],
43158                                 [
43159                                     -106.636587,
43160                                     31.774082
43161                                 ],
43162                                 [
43163                                     -106.662477,
43164                                     31.774134
43165                                 ],
43166                                 [
43167                                     -106.688315,
43168                                     31.774237
43169                                 ],
43170                                 [
43171                                     -106.714205,
43172                                     31.774237
43173                                 ],
43174                                 [
43175                                     -106.740095,
43176                                     31.774289
43177                                 ],
43178                                 [
43179                                     -106.765933,
43180                                     31.774392
43181                                 ],
43182                                 [
43183                                     -106.791823,
43184                                     31.774444
43185                                 ],
43186                                 [
43187                                     -106.817713,
43188                                     31.774496
43189                                 ],
43190                                 [
43191                                     -106.843603,
43192                                     31.774547
43193                                 ],
43194                                 [
43195                                     -106.869441,
43196                                     31.774599
43197                                 ],
43198                                 [
43199                                     -106.895331,
43200                                     31.774702
43201                                 ],
43202                                 [
43203                                     -106.921221,
43204                                     31.774702
43205                                 ],
43206                                 [
43207                                     -106.947111,
43208                                     31.774754
43209                                 ],
43210                                 [
43211                                     -106.973001,
43212                                     31.774857
43213                                 ],
43214                                 [
43215                                     -106.998891,
43216                                     31.774909
43217                                 ],
43218                                 [
43219                                     -107.02478,
43220                                     31.774961
43221                                 ],
43222                                 [
43223                                     -107.05067,
43224                                     31.775013
43225                                 ],
43226                                 [
43227                                     -107.076509,
43228                                     31.775064
43229                                 ],
43230                                 [
43231                                     -107.102398,
43232                                     31.775168
43233                                 ],
43234                                 [
43235                                     -107.128288,
43236                                     31.775168
43237                                 ],
43238                                 [
43239                                     -107.154127,
43240                                     31.775219
43241                                 ],
43242                                 [
43243                                     -107.180016,
43244                                     31.775374
43245                                 ],
43246                                 [
43247                                     -107.205906,
43248                                     31.775374
43249                                 ],
43250                                 [
43251                                     -107.231796,
43252                                     31.775426
43253                                 ],
43254                                 [
43255                                     -107.257634,
43256                                     31.775478
43257                                 ],
43258                                 [
43259                                     -107.283524,
43260                                     31.775529
43261                                 ],
43262                                 [
43263                                     -107.309414,
43264                                     31.775633
43265                                 ],
43266                                 [
43267                                     -107.335252,
43268                                     31.775684
43269                                 ],
43270                                 [
43271                                     -107.361142,
43272                                     31.775788
43273                                 ],
43274                                 [
43275                                     -107.387032,
43276                                     31.775788
43277                                 ],
43278                                 [
43279                                     -107.412896,
43280                                     31.775839
43281                                 ],
43282                                 [
43283                                     -107.438786,
43284                                     31.775943
43285                                 ],
43286                                 [
43287                                     -107.464676,
43288                                     31.775994
43289                                 ],
43290                                 [
43291                                     -107.490566,
43292                                     31.776098
43293                                 ],
43294                                 [
43295                                     -107.516404,
43296                                     31.776149
43297                                 ],
43298                                 [
43299                                     -107.542294,
43300                                     31.776201
43301                                 ],
43302                                 [
43303                                     -107.568184,
43304                                     31.776253
43305                                 ],
43306                                 [
43307                                     -107.594074,
43308                                     31.776304
43309                                 ],
43310                                 [
43311                                     -107.619964,
43312                                     31.776408
43313                                 ],
43314                                 [
43315                                     -107.645854,
43316                                     31.776459
43317                                 ],
43318                                 [
43319                                     -107.671744,
43320                                     31.776459
43321                                 ],
43322                                 [
43323                                     -107.697633,
43324                                     31.776563
43325                                 ],
43326                                 [
43327                                     -107.723472,
43328                                     31.776614
43329                                 ],
43330                                 [
43331                                     -107.749362,
43332                                     31.776666
43333                                 ],
43334                                 [
43335                                     -107.775251,
43336                                     31.776718
43337                                 ],
43338                                 [
43339                                     -107.801141,
43340                                     31.77677
43341                                 ],
43342                                 [
43343                                     -107.82698,
43344                                     31.776873
43345                                 ],
43346                                 [
43347                                     -107.852869,
43348                                     31.776925
43349                                 ],
43350                                 [
43351                                     -107.878759,
43352                                     31.776925
43353                                 ],
43354                                 [
43355                                     -107.904598,
43356                                     31.777028
43357                                 ],
43358                                 [
43359                                     -107.930487,
43360                                     31.77708
43361                                 ],
43362                                 [
43363                                     -107.956377,
43364                                     31.777131
43365                                 ],
43366                                 [
43367                                     -107.982216,
43368                                     31.777183
43369                                 ],
43370                                 [
43371                                     -108.008105,
43372                                     31.777235
43373                                 ],
43374                                 [
43375                                     -108.033995,
43376                                     31.777338
43377                                 ],
43378                                 [
43379                                     -108.059885,
43380                                     31.77739
43381                                 ],
43382                                 [
43383                                     -108.085723,
43384                                     31.77739
43385                                 ],
43386                                 [
43387                                     -108.111613,
43388                                     31.777545
43389                                 ],
43390                                 [
43391                                     -108.137503,
43392                                     31.777545
43393                                 ],
43394                                 [
43395                                     -108.163341,
43396                                     31.777648
43397                                 ],
43398                                 [
43399                                     -108.189283,
43400                                     31.7777
43401                                 ],
43402                                 [
43403                                     -108.215121,
43404                                     31.777751
43405                                 ],
43406                                 [
43407                                     -108.215121,
43408                                     31.770723
43409                                 ],
43410                                 [
43411                                     -108.215121,
43412                                     31.763695
43413                                 ],
43414                                 [
43415                                     -108.215121,
43416                                     31.756667
43417                                 ],
43418                                 [
43419                                     -108.215121,
43420                                     31.749639
43421                                 ],
43422                                 [
43423                                     -108.215121,
43424                                     31.74256
43425                                 ],
43426                                 [
43427                                     -108.215121,
43428                                     31.735583
43429                                 ],
43430                                 [
43431                                     -108.215121,
43432                                     31.728555
43433                                 ],
43434                                 [
43435                                     -108.215121,
43436                                     31.721476
43437                                 ],
43438                                 [
43439                                     -108.215121,
43440                                     31.714396
43441                                 ],
43442                                 [
43443                                     -108.215121,
43444                                     31.70742
43445                                 ],
43446                                 [
43447                                     -108.215121,
43448                                     31.700392
43449                                 ],
43450                                 [
43451                                     -108.215121,
43452                                     31.693312
43453                                 ],
43454                                 [
43455                                     -108.215121,
43456                                     31.686284
43457                                 ],
43458                                 [
43459                                     -108.215121,
43460                                     31.679256
43461                                 ],
43462                                 [
43463                                     -108.215121,
43464                                     31.672176
43465                                 ],
43466                                 [
43467                                     -108.21507,
43468                                     31.665148
43469                                 ],
43470                                 [
43471                                     -108.215018,
43472                                     31.658172
43473                                 ],
43474                                 [
43475                                     -108.215018,
43476                                     31.651092
43477                                 ],
43478                                 [
43479                                     -108.215018,
43480                                     31.644064
43481                                 ],
43482                                 [
43483                                     -108.215018,
43484                                     31.637036
43485                                 ],
43486                                 [
43487                                     -108.215018,
43488                                     31.630008
43489                                 ],
43490                                 [
43491                                     -108.215018,
43492                                     31.62298
43493                                 ],
43494                                 [
43495                                     -108.215018,
43496                                     31.615952
43497                                 ],
43498                                 [
43499                                     -108.215018,
43500                                     31.608873
43501                                 ],
43502                                 [
43503                                     -108.215018,
43504                                     31.601845
43505                                 ],
43506                                 [
43507                                     -108.215018,
43508                                     31.594817
43509                                 ],
43510                                 [
43511                                     -108.215018,
43512                                     31.587789
43513                                 ],
43514                                 [
43515                                     -108.215018,
43516                                     31.580761
43517                                 ],
43518                                 [
43519                                     -108.215018,
43520                                     31.573733
43521                                 ],
43522                                 [
43523                                     -108.215018,
43524                                     31.566653
43525                                 ],
43526                                 [
43527                                     -108.215018,
43528                                     31.559625
43529                                 ],
43530                                 [
43531                                     -108.214966,
43532                                     31.552597
43533                                 ],
43534                                 [
43535                                     -108.214966,
43536                                     31.545569
43537                                 ],
43538                                 [
43539                                     -108.214966,
43540                                     31.538489
43541                                 ],
43542                                 [
43543                                     -108.214966,
43544                                     31.531461
43545                                 ],
43546                                 [
43547                                     -108.214966,
43548                                     31.524485
43549                                 ],
43550                                 [
43551                                     -108.214966,
43552                                     31.517405
43553                                 ],
43554                                 [
43555                                     -108.214966,
43556                                     31.510378
43557                                 ],
43558                                 [
43559                                     -108.214966,
43560                                     31.503401
43561                                 ],
43562                                 [
43563                                     -108.214966,
43564                                     31.496322
43565                                 ],
43566                                 [
43567                                     -108.214966,
43568                                     31.489242
43569                                 ],
43570                                 [
43571                                     -108.214966,
43572                                     31.482214
43573                                 ],
43574                                 [
43575                                     -108.214966,
43576                                     31.475238
43577                                 ],
43578                                 [
43579                                     -108.214966,
43580                                     31.468158
43581                                 ],
43582                                 [
43583                                     -108.214966,
43584                                     31.46113
43585                                 ],
43586                                 [
43587                                     -108.214966,
43588                                     31.454102
43589                                 ],
43590                                 [
43591                                     -108.214966,
43592                                     31.447074
43593                                 ],
43594                                 [
43595                                     -108.214915,
43596                                     31.440046
43597                                 ],
43598                                 [
43599                                     -108.214863,
43600                                     31.432966
43601                                 ],
43602                                 [
43603                                     -108.214863,
43604                                     31.425938
43605                                 ],
43606                                 [
43607                                     -108.214863,
43608                                     31.41891
43609                                 ],
43610                                 [
43611                                     -108.214863,
43612                                     31.411882
43613                                 ],
43614                                 [
43615                                     -108.214863,
43616                                     31.404803
43617                                 ],
43618                                 [
43619                                     -108.214863,
43620                                     31.397826
43621                                 ],
43622                                 [
43623                                     -108.214863,
43624                                     31.390798
43625                                 ],
43626                                 [
43627                                     -108.214863,
43628                                     31.383719
43629                                 ],
43630                                 [
43631                                     -108.214863,
43632                                     31.376639
43633                                 ],
43634                                 [
43635                                     -108.214863,
43636                                     31.369663
43637                                 ],
43638                                 [
43639                                     -108.214863,
43640                                     31.362635
43641                                 ],
43642                                 [
43643                                     -108.214863,
43644                                     31.355555
43645                                 ],
43646                                 [
43647                                     -108.214863,
43648                                     31.348527
43649                                 ],
43650                                 [
43651                                     -108.214863,
43652                                     31.341551
43653                                 ],
43654                                 [
43655                                     -108.214863,
43656                                     31.334471
43657                                 ],
43658                                 [
43659                                     -108.214811,
43660                                     31.327443
43661                                 ],
43662                                 [
43663                                     -108.257573,
43664                                     31.327391
43665                                 ],
43666                                 [
43667                                     -108.300336,
43668                                     31.327391
43669                                 ],
43670                                 [
43671                                     -108.34302,
43672                                     31.327391
43673                                 ],
43674                                 [
43675                                     -108.385731,
43676                                     31.327391
43677                                 ],
43678                                 [
43679                                     -108.428442,
43680                                     31.327391
43681                                 ],
43682                                 [
43683                                     -108.471152,
43684                                     31.327391
43685                                 ],
43686                                 [
43687                                     -108.513837,
43688                                     31.327391
43689                                 ],
43690                                 [
43691                                     -108.556547,
43692                                     31.327391
43693                                 ],
43694                                 [
43695                                     -108.59931,
43696                                     31.327391
43697                                 ],
43698                                 [
43699                                     -108.64202,
43700                                     31.327391
43701                                 ],
43702                                 [
43703                                     -108.684757,
43704                                     31.327391
43705                                 ],
43706                                 [
43707                                     -108.727467,
43708                                     31.327391
43709                                 ],
43710                                 [
43711                                     -108.770178,
43712                                     31.327391
43713                                 ],
43714                                 [
43715                                     -108.812914,
43716                                     31.327391
43717                                 ],
43718                                 [
43719                                     -108.855625,
43720                                     31.327391
43721                                 ],
43722                                 [
43723                                     -108.898335,
43724                                     31.327391
43725                                 ],
43726                                 [
43727                                     -108.941046,
43728                                     31.327391
43729                                 ],
43730                                 [
43731                                     -108.968282,
43732                                     31.327391
43733                                 ],
43734                                 [
43735                                     -108.983731,
43736                                     31.327391
43737                                 ],
43738                                 [
43739                                     -109.026493,
43740                                     31.327391
43741                                 ],
43742                                 [
43743                                     -109.04743,
43744                                     31.327391
43745                                 ],
43746                                 [
43747                                     -109.069203,
43748                                     31.327391
43749                                 ],
43750                                 [
43751                                     -109.111914,
43752                                     31.327391
43753                                 ],
43754                                 [
43755                                     -109.154599,
43756                                     31.327391
43757                                 ],
43758                                 [
43759                                     -109.197361,
43760                                     31.327391
43761                                 ],
43762                                 [
43763                                     -109.240072,
43764                                     31.32734
43765                                 ],
43766                                 [
43767                                     -109.282782,
43768                                     31.32734
43769                                 ],
43770                                 [
43771                                     -109.325519,
43772                                     31.32734
43773                                 ],
43774                                 [
43775                                     -109.368229,
43776                                     31.32734
43777                                 ],
43778                                 [
43779                                     -109.410914,
43780                                     31.32734
43781                                 ],
43782                                 [
43783                                     -109.45365,
43784                                     31.32734
43785                                 ],
43786                                 [
43787                                     -109.496387,
43788                                     31.32734
43789                                 ],
43790                                 [
43791                                     -109.539071,
43792                                     31.32734
43793                                 ],
43794                                 [
43795                                     -109.581808,
43796                                     31.32734
43797                                 ],
43798                                 [
43799                                     -109.624493,
43800                                     31.32734
43801                                 ],
43802                                 [
43803                                     -109.667177,
43804                                     31.32734
43805                                 ],
43806                                 [
43807                                     -109.709965,
43808                                     31.32734
43809                                 ],
43810                                 [
43811                                     -109.75265,
43812                                     31.32734
43813                                 ],
43814                                 [
43815                                     -109.795335,
43816                                     31.32734
43817                                 ],
43818                                 [
43819                                     -109.838123,
43820                                     31.32734
43821                                 ],
43822                                 [
43823                                     -109.880808,
43824                                     31.32734
43825                                 ],
43826                                 [
43827                                     -109.923596,
43828                                     31.327288
43829                                 ],
43830                                 [
43831                                     -109.96628,
43832                                     31.327236
43833                                 ],
43834                                 [
43835                                     -110.008965,
43836                                     31.327236
43837                                 ],
43838                                 [
43839                                     -110.051702,
43840                                     31.327236
43841                                 ],
43842                                 [
43843                                     -110.094386,
43844                                     31.327236
43845                                 ],
43846                                 [
43847                                     -110.137071,
43848                                     31.327236
43849                                 ],
43850                                 [
43851                                     -110.179807,
43852                                     31.327236
43853                                 ],
43854                                 [
43855                                     -110.222544,
43856                                     31.327236
43857                                 ],
43858                                 [
43859                                     -110.265229,
43860                                     31.327236
43861                                 ],
43862                                 [
43863                                     -110.308017,
43864                                     31.327236
43865                                 ],
43866                                 [
43867                                     -110.350753,
43868                                     31.327236
43869                                 ],
43870                                 [
43871                                     -110.39349,
43872                                     31.327236
43873                                 ],
43874                                 [
43875                                     -110.436174,
43876                                     31.327236
43877                                 ],
43878                                 [
43879                                     -110.478859,
43880                                     31.327236
43881                                 ],
43882                                 [
43883                                     -110.521595,
43884                                     31.327236
43885                                 ],
43886                                 [
43887                                     -110.56428,
43888                                     31.327236
43889                                 ],
43890                                 [
43891                                     -110.606965,
43892                                     31.327236
43893                                 ],
43894                                 [
43895                                     -110.649727,
43896                                     31.327236
43897                                 ],
43898                                 [
43899                                     -110.692438,
43900                                     31.327236
43901                                 ],
43902                                 [
43903                                     -110.7352,
43904                                     31.327236
43905                                 ],
43906                                 [
43907                                     -110.777885,
43908                                     31.327236
43909                                 ],
43910                                 [
43911                                     -110.820595,
43912                                     31.327236
43913                                 ],
43914                                 [
43915                                     -110.863358,
43916                                     31.327236
43917                                 ],
43918                                 [
43919                                     -110.906068,
43920                                     31.327236
43921                                 ],
43922                                 [
43923                                     -110.948753,
43924                                     31.327185
43925                                 ],
43926                                 [
43927                                     -111.006269,
43928                                     31.327185
43929                                 ],
43930                                 [
43931                                     -111.067118,
43932                                     31.333644
43933                                 ],
43934                                 [
43935                                     -111.094455,
43936                                     31.342532
43937                                 ],
43938                                 [
43939                                     -111.145924,
43940                                     31.359069
43941                                 ],
43942                                 [
43943                                     -111.197446,
43944                                     31.375554
43945                                 ],
43946                                 [
43947                                     -111.248864,
43948                                     31.392142
43949                                 ],
43950                                 [
43951                                     -111.300333,
43952                                     31.40873
43953                                 ],
43954                                 [
43955                                     -111.351803,
43956                                     31.425318
43957                                 ],
43958                                 [
43959                                     -111.403299,
43960                                     31.441855
43961                                 ],
43962                                 [
43963                                     -111.454768,
43964                                     31.458339
43965                                 ],
43966                                 [
43967                                     -111.506238,
43968                                     31.474979
43969                                 ],
43970                                 [
43971                                     -111.915464,
43972                                     31.601431
43973                                 ],
43974                                 [
43975                                     -112.324715,
43976                                     31.727987
43977                                 ],
43978                                 [
43979                                     -112.733967,
43980                                     31.854543
43981                                 ],
43982                                 [
43983                                     -113.143218,
43984                                     31.981046
43985                                 ],
43986                                 [
43987                                     -113.552444,
43988                                     32.107602
43989                                 ],
43990                                 [
43991                                     -113.961696,
43992                                     32.234132
43993                                 ],
43994                                 [
43995                                     -114.370921,
43996                                     32.360687
43997                                 ],
43998                                 [
43999                                     -114.780147,
44000                                     32.487243
44001                                 ],
44002                                 [
44003                                     -114.816785,
44004                                     32.498534
44005                                 ],
44006                                 [
44007                                     -114.819373,
44008                                     32.499363
44009                                 ],
44010                                 [
44011                                     -114.822108,
44012                                     32.50024
44013                                 ],
44014                                 [
44015                                     -114.809447,
44016                                     32.511324
44017                                 ],
44018                                 [
44019                                     -114.795546,
44020                                     32.552226
44021                                 ],
44022                                 [
44023                                     -114.794203,
44024                                     32.574111
44025                                 ],
44026                                 [
44027                                     -114.802678,
44028                                     32.594497
44029                                 ],
44030                                 [
44031                                     -114.786813,
44032                                     32.621033
44033                                 ],
44034                                 [
44035                                     -114.781542,
44036                                     32.628061
44037                                 ],
44038                                 [
44039                                     -114.758804,
44040                                     32.64483
44041                                 ],
44042                                 [
44043                                     -114.751156,
44044                                     32.65222
44045                                 ],
44046                                 [
44047                                     -114.739477,
44048                                     32.669066
44049                                 ],
44050                                 [
44051                                     -114.731209,
44052                                     32.686636
44053                                 ],
44054                                 [
44055                                     -114.723871,
44056                                     32.711519
44057                                 ],
44058                                 [
44059                                     -114.724284,
44060                                     32.712835
44061                                 ],
44062                                 [
44063                                     -114.724285,
44064                                     32.712836
44065                                 ],
44066                                 [
44067                                     -114.764541,
44068                                     32.709839
44069                                 ],
44070                                 [
44071                                     -114.838076,
44072                                     32.704206
44073                                 ],
44074                                 [
44075                                     -114.911612,
44076                                     32.698703
44077                                 ],
44078                                 [
44079                                     -114.985199,
44080                                     32.693122
44081                                 ],
44082                                 [
44083                                     -115.058734,
44084                                     32.687567
44085                                 ],
44086                                 [
44087                                     -115.13227,
44088                                     32.681986
44089                                 ],
44090                                 [
44091                                     -115.205806,
44092                                     32.676456
44093                                 ],
44094                                 [
44095                                     -115.27929,
44096                                     32.670823
44097                                 ],
44098                                 [
44099                                     -115.352851,
44100                                     32.665346
44101                                 ],
44102                                 [
44103                                     -115.426386,
44104                                     32.659765
44105                                 ],
44106                                 [
44107                                     -115.499922,
44108                                     32.654209
44109                                 ],
44110                                 [
44111                                     -115.573535,
44112                                     32.648654
44113                                 ],
44114                                 [
44115                                     -115.647019,
44116                                     32.643073
44117                                 ],
44118                                 [
44119                                     -115.720529,
44120                                     32.637518
44121                                 ],
44122                                 [
44123                                     -115.794064,
44124                                     32.631963
44125                                 ],
44126                                 [
44127                                     -115.8676,
44128                                     32.626408
44129                                 ],
44130                                 [
44131                                     -115.941213,
44132                                     32.620827
44133                                 ],
44134                                 [
44135                                     -116.014748,
44136                                     32.615271
44137                                 ],
44138                                 [
44139                                     -116.088232,
44140                                     32.609664
44141                                 ],
44142                                 [
44143                                     -116.161742,
44144                                     32.604161
44145                                 ],
44146                                 [
44147                                     -116.235329,
44148                                     32.598554
44149                                 ],
44150                                 [
44151                                     -116.308891,
44152                                     32.593025
44153                                 ],
44154                                 [
44155                                     -116.382426,
44156                                     32.587469
44157                                 ],
44158                                 [
44159                                     -116.455962,
44160                                     32.581888
44161                                 ],
44162                                 [
44163                                     -116.529472,
44164                                     32.576333
44165                                 ],
44166                                 [
44167                                     -116.603007,
44168                                     32.570804
44169                                 ],
44170                                 [
44171                                     -116.676543,
44172                                     32.565223
44173                                 ],
44174                                 [
44175                                     -116.750104,
44176                                     32.559667
44177                                 ],
44178                                 [
44179                                     -116.82364,
44180                                     32.554086
44181                                 ],
44182                                 [
44183                                     -116.897201,
44184                                     32.548531
44185                                 ],
44186                                 [
44187                                     -116.970737,
44188                                     32.542976
44189                                 ],
44190                                 [
44191                                     -117.044221,
44192                                     32.537421
44193                                 ],
44194                                 [
44195                                     -117.125121,
44196                                     32.531669
44197                                 ],
44198                                 [
44199                                     -117.125969,
44200                                     32.538258
44201                                 ],
44202                                 [
44203                                     -117.239623,
44204                                     32.531308
44205                                 ],
44206                                 [
44207                                     -120.274098,
44208                                     32.884264
44209                                 ],
44210                                 [
44211                                     -121.652736,
44212                                     34.467248
44213                                 ],
44214                                 [
44215                                     -124.367265,
44216                                     37.662798
44217                                 ],
44218                                 [
44219                                     -126.739806,
44220                                     41.37928
44221                                 ],
44222                                 [
44223                                     -126.996297,
44224                                     45.773888
44225                                 ],
44226                                 [
44227                                     -124.770704,
44228                                     48.44258
44229                                 ],
44230                                 [
44231                                     -123.734053,
44232                                     48.241906
44233                                 ],
44234                                 [
44235                                     -123.1663,
44236                                     48.27837
44237                                 ],
44238                                 [
44239                                     -123.193018,
44240                                     48.501035
44241                                 ],
44242                                 [
44243                                     -123.176987,
44244                                     48.65482
44245                                 ],
44246                                 [
44247                                     -122.912481,
44248                                     48.753561
44249                                 ],
44250                                 [
44251                                     -122.899122,
44252                                     48.897797
44253                                 ],
44254                                 [
44255                                     -122.837671,
44256                                     48.97502
44257                                 ],
44258                                 [
44259                                     -122.743986,
44260                                     48.980582
44261                                 ],
44262                                 [
44263                                     -122.753,
44264                                     48.992499
44265                                 ],
44266                                 [
44267                                     -122.753012,
44268                                     48.992515
44269                                 ],
44270                                 [
44271                                     -122.653258,
44272                                     48.992515
44273                                 ],
44274                                 [
44275                                     -122.433375,
44276                                     48.992515
44277                                 ],
44278                                 [
44279                                     -122.213517,
44280                                     48.992515
44281                                 ],
44282                                 [
44283                                     -121.993763,
44284                                     48.992515
44285                                 ],
44286                                 [
44287                                     -121.773958,
44288                                     48.992515
44289                                 ],
44290                                 [
44291                                     -121.554152,
44292                                     48.992515
44293                                 ],
44294                                 [
44295                                     -121.33432,
44296                                     48.992515
44297                                 ],
44298                                 [
44299                                     -121.114515,
44300                                     48.992515
44301                                 ],
44302                                 [
44303                                     -95.396937,
44304                                     48.99267
44305                                 ],
44306                                 [
44307                                     -95.177106,
44308                                     48.99267
44309                                 ],
44310                                 [
44311                                     -95.168527,
44312                                     48.995047
44313                                 ],
44314                                 [
44315                                     -95.161887,
44316                                     49.001145
44317                                 ],
44318                                 [
44319                                     -95.159329,
44320                                     49.01179
44321                                 ],
44322                                 [
44323                                     -95.159665,
44324                                     49.10951
44325                                 ],
44326                                 [
44327                                     -95.160027,
44328                                     49.223353
44329                                 ],
44330                                 [
44331                                     -95.160337,
44332                                     49.313012
44333                                 ],
44334                                 [
44335                                     -95.160569,
44336                                     49.369494
44337                                 ],
44338                                 [
44339                                     -95.102821,
44340                                     49.35394
44341                                 ],
44342                                 [
44343                                     -94.982518,
44344                                     49.356162
44345                                 ],
44346                                 [
44347                                     -94.926087,
44348                                     49.345568
44349                                 ],
44350                                 [
44351                                     -94.856195,
44352                                     49.318283
44353                                 ],
44354                                 [
44355                                     -94.839142,
44356                                     49.308878
44357                                 ],
44358                                 [
44359                                     -94.827256,
44360                                     49.292858
44361                                 ],
44362                                 [
44363                                     -94.819892,
44364                                     49.252034
44365                                 ],
44366                                 [
44367                                     -94.810358,
44368                                     49.229606
44369                                 ],
44370                                 [
44371                                     -94.806121,
44372                                     49.210899
44373                                 ],
44374                                 [
44375                                     -94.811185,
44376                                     49.166561
44377                                 ],
44378                                 [
44379                                     -94.803743,
44380                                     49.146407
44381                                 ],
44382                                 [
44383                                     -94.792039,
44384                                     49.12646
44385                                 ],
44386                                 [
44387                                     -94.753772,
44388                                     49.026156
44389                                 ],
44390                                 [
44391                                     -94.711217,
44392                                     48.914586
44393                                 ],
44394                                 [
44395                                     -94.711734,
44396                                     48.862755
44397                                 ],
44398                                 [
44399                                     -94.712147,
44400                                     48.842446
44401                                 ],
44402                                 [
44403                                     -94.713284,
44404                                     48.823843
44405                                 ],
44406                                 [
44407                                     -94.710907,
44408                                     48.807513
44409                                 ],
44410                                 [
44411                                     -94.701786,
44412                                     48.790098
44413                                 ],
44414                                 [
44415                                     -94.688893,
44416                                     48.778832
44417                                 ],
44418                                 [
44419                                     -94.592852,
44420                                     48.726433
44421                                 ],
44422                                 [
44423                                     -94.519161,
44424                                     48.70447
44425                                 ],
44426                                 [
44427                                     -94.4795,
44428                                     48.700698
44429                                 ],
44430                                 [
44431                                     -94.311577,
44432                                     48.713927
44433                                 ],
44434                                 [
44435                                     -94.292586,
44436                                     48.711912
44437                                 ],
44438                                 [
44439                                     -94.284034,
44440                                     48.709069
44441                                 ],
44442                                 [
44443                                     -94.274499,
44444                                     48.704108
44445                                 ],
44446                                 [
44447                                     -94.265482,
44448                                     48.697752
44449                                 ],
44450                                 [
44451                                     -94.258454,
44452                                     48.690828
44453                                 ],
44454                                 [
44455                                     -94.255767,
44456                                     48.683541
44457                                 ],
44458                                 [
44459                                     -94.252459,
44460                                     48.662405
44461                                 ],
44462                                 [
44463                                     -94.251038,
44464                                     48.65729
44465                                 ],
44466                                 [
44467                                     -94.23215,
44468                                     48.652019
44469                                 ],
44470                                 [
44471                                     -94.03485,
44472                                     48.643311
44473                                 ],
44474                                 [
44475                                     -93.874885,
44476                                     48.636206
44477                                 ],
44478                                 [
44479                                     -93.835741,
44480                                     48.617137
44481                                 ],
44482                                 [
44483                                     -93.809386,
44484                                     48.543576
44485                                 ],
44486                                 [
44487                                     -93.778664,
44488                                     48.519468
44489                                 ],
44490                                 [
44491                                     -93.756779,
44492                                     48.516549
44493                                 ],
44494                                 [
44495                                     -93.616297,
44496                                     48.531302
44497                                 ],
44498                                 [
44499                                     -93.599889,
44500                                     48.526341
44501                                 ],
44502                                 [
44503                                     -93.566584,
44504                                     48.538279
44505                                 ],
44506                                 [
44507                                     -93.491756,
44508                                     48.542309
44509                                 ],
44510                                 [
44511                                     -93.459924,
44512                                     48.557399
44513                                 ],
44514                                 [
44515                                     -93.45225,
44516                                     48.572721
44517                                 ],
44518                                 [
44519                                     -93.453774,
44520                                     48.586958
44521                                 ],
44522                                 [
44523                                     -93.451475,
44524                                     48.597422
44525                                 ],
44526                                 [
44527                                     -93.417316,
44528                                     48.604114
44529                                 ],
44530                                 [
44531                                     -93.385716,
44532                                     48.614863
44533                                 ],
44534                                 [
44535                                     -93.25774,
44536                                     48.630314
44537                                 ],
44538                                 [
44539                                     -93.131701,
44540                                     48.62463
44541                                 ],
44542                                 [
44543                                     -92.97972,
44544                                     48.61768
44545                                 ],
44546                                 [
44547                                     -92.955588,
44548                                     48.612228
44549                                 ],
44550                                 [
44551                                     -92.884197,
44552                                     48.579878
44553                                 ],
44554                                 [
44555                                     -92.72555,
44556                                     48.548692
44557                                 ],
44558                                 [
44559                                     -92.648604,
44560                                     48.536263
44561                                 ],
44562                                 [
44563                                     -92.630181,
44564                                     48.519468
44565                                 ],
44566                                 [
44567                                     -92.627468,
44568                                     48.502777
44569                                 ],
44570                                 [
44571                                     -92.646743,
44572                                     48.497428
44573                                 ],
44574                                 [
44575                                     -92.691366,
44576                                     48.489858
44577                                 ],
44578                                 [
44579                                     -92.710641,
44580                                     48.482882
44581                                 ],
44582                                 [
44583                                     -92.718909,
44584                                     48.459782
44585                                 ],
44586                                 [
44587                                     -92.704052,
44588                                     48.445158
44589                                 ],
44590                                 [
44591                                     -92.677129,
44592                                     48.441747
44593                                 ],
44594                                 [
44595                                     -92.657053,
44596                                     48.438233
44597                                 ],
44598                                 [
44599                                     -92.570521,
44600                                     48.446656
44601                                 ],
44602                                 [
44603                                     -92.526932,
44604                                     48.445623
44605                                 ],
44606                                 [
44607                                     -92.490629,
44608                                     48.433117
44609                                 ],
44610                                 [
44611                                     -92.474532,
44612                                     48.410483
44613                                 ],
44614                                 [
44615                                     -92.467581,
44616                                     48.394282
44617                                 ],
44618                                 [
44619                                     -92.467064,
44620                                     48.353225
44621                                 ],
44622                                 [
44623                                     -92.462465,
44624                                     48.329299
44625                                 ],
44626                                 [
44627                                     -92.451381,
44628                                     48.312685
44629                                 ],
44630                                 [
44631                                     -92.41823,
44632                                     48.282041
44633                                 ],
44634                                 [
44635                                     -92.38464,
44636                                     48.232406
44637                                 ],
44638                                 [
44639                                     -92.371851,
44640                                     48.222587
44641                                 ],
44642                                 [
44643                                     -92.353815,
44644                                     48.222897
44645                                 ],
44646                                 [
44647                                     -92.327874,
44648                                     48.229435
44649                                 ],
44650                                 [
44651                                     -92.303663,
44652                                     48.239279
44653                                 ],
44654                                 [
44655                                     -92.291029,
44656                                     48.249562
44657                                 ],
44658                                 [
44659                                     -92.292062,
44660                                     48.270336
44661                                 ],
44662                                 [
44663                                     -92.301416,
44664                                     48.290645
44665                                 ],
44666                                 [
44667                                     -92.303095,
44668                                     48.310928
44669                                 ],
44670                                 [
44671                                     -92.281598,
44672                                     48.33178
44673                                 ],
44674                                 [
44675                                     -92.259118,
44676                                     48.339635
44677                                 ],
44678                                 [
44679                                     -92.154732,
44680                                     48.350125
44681                                 ],
44682                                 [
44683                                     -92.070499,
44684                                     48.346714
44685                                 ],
44686                                 [
44687                                     -92.043421,
44688                                     48.334596
44689                                 ],
44690                                 [
44691                                     -92.030114,
44692                                     48.313176
44693                                 ],
44694                                 [
44695                                     -92.021355,
44696                                     48.287441
44697                                 ],
44698                                 [
44699                                     -92.007997,
44700                                     48.262482
44701                                 ],
44702                                 [
44703                                     -91.992158,
44704                                     48.247909
44705                                 ],
44706                                 [
44707                                     -91.975492,
44708                                     48.236566
44709                                 ],
44710                                 [
44711                                     -91.957302,
44712                                     48.228323
44713                                 ],
44714                                 [
44715                                     -91.852244,
44716                                     48.195974
44717                                 ],
44718                                 [
44719                                     -91.764988,
44720                                     48.187344
44721                                 ],
44722                                 [
44723                                     -91.744137,
44724                                     48.179593
44725                                 ],
44726                                 [
44727                                     -91.727575,
44728                                     48.168327
44729                                 ],
44730                                 [
44731                                     -91.695509,
44732                                     48.13758
44733                                 ],
44734                                 [
44735                                     -91.716438,
44736                                     48.112051
44737                                 ],
44738                                 [
44739                                     -91.692512,
44740                                     48.097866
44741                                 ],
44742                                 [
44743                                     -91.618615,
44744                                     48.089572
44745                                 ],
44746                                 [
44747                                     -91.597479,
44748                                     48.090399
44749                                 ],
44750                                 [
44751                                     -91.589676,
44752                                     48.088332
44753                                 ],
44754                                 [
44755                                     -91.581098,
44756                                     48.080942
44757                                 ],
44758                                 [
44759                                     -91.579806,
44760                                     48.070969
44761                                 ],
44762                                 [
44763                                     -91.585129,
44764                                     48.06084
44765                                 ],
44766                                 [
44767                                     -91.586989,
44768                                     48.052572
44769                                 ],
44770                                 [
44771                                     -91.574845,
44772                                     48.048205
44773                                 ],
44774                                 [
44775                                     -91.487098,
44776                                     48.053476
44777                                 ],
44778                                 [
44779                                     -91.464722,
44780                                     48.048955
44781                                 ],
44782                                 [
44783                                     -91.446274,
44784                                     48.040738
44785                                 ],
44786                                 [
44787                                     -91.427929,
44788                                     48.036449
44789                                 ],
44790                                 [
44791                                     -91.3654,
44792                                     48.057843
44793                                 ],
44794                                 [
44795                                     -91.276362,
44796                                     48.064768
44797                                 ],
44798                                 [
44799                                     -91.23807,
44800                                     48.082648
44801                                 ],
44802                                 [
44803                                     -91.203963,
44804                                     48.107659
44805                                 ],
44806                                 [
44807                                     -91.071103,
44808                                     48.170859
44809                                 ],
44810                                 [
44811                                     -91.02816,
44812                                     48.184838
44813                                 ],
44814                                 [
44815                                     -91.008109,
44816                                     48.194372
44817                                 ],
44818                                 [
44819                                     -90.923153,
44820                                     48.227109
44821                                 ],
44822                                 [
44823                                     -90.873802,
44824                                     48.234344
44825                                 ],
44826                                 [
44827                                     -90.840678,
44828                                     48.220107
44829                                 ],
44830                                 [
44831                                     -90.837939,
44832                                     48.210547
44833                                 ],
44834                                 [
44835                                     -90.848843,
44836                                     48.198713
44837                                 ],
44838                                 [
44839                                     -90.849721,
44840                                     48.189566
44841                                 ],
44842                                 [
44843                                     -90.843003,
44844                                     48.176983
44845                                 ],
44846                                 [
44847                                     -90.83427,
44848                                     48.171789
44849                                 ],
44850                                 [
44851                                     -90.823883,
44852                                     48.168327
44853                                 ],
44854                                 [
44855                                     -90.812307,
44856                                     48.160989
44857                                 ],
44858                                 [
44859                                     -90.803057,
44860                                     48.147166
44861                                 ],
44862                                 [
44863                                     -90.796701,
44864                                     48.117064
44865                                 ],
44866                                 [
44867                                     -90.786469,
44868                                     48.10045
44869                                 ],
44870                                 [
44871                                     -90.750347,
44872                                     48.083991
44873                                 ],
44874                                 [
44875                                     -90.701307,
44876                                     48.08456
44877                                 ],
44878                                 [
44879                                     -90.611079,
44880                                     48.103499
44881                                 ],
44882                                 [
44883                                     -90.586843,
44884                                     48.104817
44885                                 ],
44886                                 [
44887                                     -90.573872,
44888                                     48.097892
44889                                 ],
44890                                 [
44891                                     -90.562194,
44892                                     48.088849
44893                                 ],
44894                                 [
44895                                     -90.542014,
44896                                     48.083733
44897                                 ],
44898                                 [
44899                                     -90.531601,
44900                                     48.08456
44901                                 ],
44902                                 [
44903                                     -90.501887,
44904                                     48.094275
44905                                 ],
44906                                 [
44907                                     -90.490493,
44908                                     48.096239
44909                                 ],
44910                                 [
44911                                     -90.483465,
44912                                     48.094482
44913                                 ],
44914                                 [
44915                                     -90.477858,
44916                                     48.091536
44917                                 ],
44918                                 [
44919                                     -90.470623,
44920                                     48.089882
44921                                 ],
44922                                 [
44923                                     -90.178625,
44924                                     48.116444
44925                                 ],
44926                                 [
44927                                     -90.120386,
44928                                     48.115359
44929                                 ],
44930                                 [
44931                                     -90.073257,
44932                                     48.101199
44933                                 ],
44934                                 [
44935                                     -90.061036,
44936                                     48.091019
44937                                 ],
44938                                 [
44939                                     -90.008222,
44940                                     48.029731
44941                                 ],
44942                                 [
44943                                     -89.995329,
44944                                     48.018595
44945                                 ],
44946                                 [
44947                                     -89.980317,
44948                                     48.010094
44949                                 ],
44950                                 [
44951                                     -89.92045,
44952                                     47.98746
44953                                 ],
44954                                 [
44955                                     -89.902441,
44956                                     47.985909
44957                                 ],
44958                                 [
44959                                     -89.803454,
44960                                     48.013763
44961                                 ],
44962                                 [
44963                                     -89.780975,
44964                                     48.017199
44965                                 ],
44966                                 [
44967                                     -89.763302,
44968                                     48.017303
44969                                 ],
44970                                 [
44971                                     -89.745964,
44972                                     48.013763
44973                                 ],
44974                                 [
44975                                     -89.724596,
44976                                     48.005908
44977                                 ],
44978                                 [
44979                                     -89.712788,
44980                                     48.003376
44981                                 ],
44982                                 [
44983                                     -89.678656,
44984                                     48.008699
44985                                 ],
44986                                 [
44987                                     -89.65659,
44988                                     48.007975
44989                                 ],
44990                                 [
44991                                     -89.593105,
44992                                     47.996503
44993                                 ],
44994                                 [
44995                                     -89.581753,
44996                                     47.996333
44997                                 ],
44998                                 [
44999                                     -89.586724,
45000                                     47.992938
45001                                 ],
45002                                 [
45003                                     -89.310872,
45004                                     47.981097
45005                                 ],
45006                                 [
45007                                     -89.072861,
45008                                     48.046842
45009                                 ],
45010                                 [
45011                                     -88.49789,
45012                                     48.212841
45013                                 ],
45014                                 [
45015                                     -88.286621,
45016                                     48.156675
45017                                 ],
45018                                 [
45019                                     -85.939935,
45020                                     47.280501
45021                                 ],
45022                                 [
45023                                     -84.784644,
45024                                     46.770068
45025                                 ],
45026                                 [
45027                                     -84.516909,
45028                                     46.435083
45029                                 ],
45030                                 [
45031                                     -84.489712,
45032                                     46.446652
45033                                 ],
45034                                 [
45035                                     -84.491052,
45036                                     46.457658
45037                                 ],
45038                                 [
45039                                     -84.478301,
45040                                     46.466467
45041                                 ],
45042                                 [
45043                                     -84.465408,
45044                                     46.478172
45045                                 ],
45046                                 [
45047                                     -84.448096,
45048                                     46.489722
45049                                 ],
45050                                 [
45051                                     -84.42324,
45052                                     46.511581
45053                                 ],
45054                                 [
45055                                     -84.389702,
45056                                     46.520262
45057                                 ],
45058                                 [
45059                                     -84.352469,
45060                                     46.522743
45061                                 ],
45062                                 [
45063                                     -84.30534,
45064                                     46.501607
45065                                 ],
45066                                 [
45067                                     -84.242011,
45068                                     46.526464
45069                                 ],
45070                                 [
45071                                     -84.197285,
45072                                     46.546359
45073                                 ],
45074                                 [
45075                                     -84.147676,
45076                                     46.541346
45077                                 ],
45078                                 [
45079                                     -84.110443,
45080                                     46.526464
45081                                 ],
45082                                 [
45083                                     -84.158812,
45084                                     46.433343
45085                                 ],
45086                                 [
45087                                     -84.147676,
45088                                     46.399882
45089                                 ],
45090                                 [
45091                                     -84.129046,
45092                                     46.375026
45093                                 ],
45094                                 [
45095                                     -84.10543,
45096                                     46.347741
45097                                 ],
45098                                 [
45099                                     -84.105944,
45100                                     46.346374
45101                                 ],
45102                                 [
45103                                     -84.117195,
45104                                     46.347157
45105                                 ],
45106                                 [
45107                                     -84.117489,
45108                                     46.338326
45109                                 ],
45110                                 [
45111                                     -84.122361,
45112                                     46.331922
45113                                 ],
45114                                 [
45115                                     -84.112061,
45116                                     46.287102
45117                                 ],
45118                                 [
45119                                     -84.092672,
45120                                     46.227469
45121                                 ],
45122                                 [
45123                                     -84.111983,
45124                                     46.20337
45125                                 ],
45126                                 [
45127                                     -84.015118,
45128                                     46.149712
45129                                 ],
45130                                 [
45131                                     -83.957038,
45132                                     46.045736
45133                                 ],
45134                                 [
45135                                     -83.676821,
45136                                     46.15388
45137                                 ],
45138                                 [
45139                                     -83.429449,
45140                                     46.086221
45141                                 ],
45142                                 [
45143                                     -83.523049,
45144                                     45.892052
45145                                 ],
45146                                 [
45147                                     -83.574563,
45148                                     45.890259
45149                                 ],
45150                                 [
45151                                     -82.551615,
45152                                     44.857931
45153                                 ],
45154                                 [
45155                                     -82.655591,
45156                                     43.968545
45157                                 ],
45158                                 [
45159                                     -82.440632,
45160                                     43.096285
45161                                 ],
45162                                 [
45163                                     -82.460131,
45164                                     43.084392
45165                                 ],
45166                                 [
45167                                     -82.458894,
45168                                     43.083247
45169                                 ],
45170                                 [
45171                                     -82.431813,
45172                                     43.039387
45173                                 ],
45174                                 [
45175                                     -82.424748,
45176                                     43.02408
45177                                 ],
45178                                 [
45179                                     -82.417242,
45180                                     43.01731
45181                                 ],
45182                                 [
45183                                     -82.416369,
45184                                     43.01742
45185                                 ],
45186                                 [
45187                                     -82.416412,
45188                                     43.017143
45189                                 ],
45190                                 [
45191                                     -82.414603,
45192                                     42.983243
45193                                 ],
45194                                 [
45195                                     -82.430442,
45196                                     42.951307
45197                                 ],
45198                                 [
45199                                     -82.453179,
45200                                     42.918983
45201                                 ],
45202                                 [
45203                                     -82.464781,
45204                                     42.883637
45205                                 ],
45206                                 [
45207                                     -82.468036,
45208                                     42.863974
45209                                 ],
45210                                 [
45211                                     -82.482325,
45212                                     42.835113
45213                                 ],
45214                                 [
45215                                     -82.485271,
45216                                     42.818524
45217                                 ],
45218                                 [
45219                                     -82.473618,
45220                                     42.798164
45221                                 ],
45222                                 [
45223                                     -82.470982,
45224                                     42.790568
45225                                 ],
45226                                 [
45227                                     -82.471344,
45228                                     42.779845
45229                                 ],
45230                                 [
45231                                     -82.476951,
45232                                     42.761474
45233                                 ],
45234                                 [
45235                                     -82.48341,
45236                                     42.719254
45237                                 ],
45238                                 [
45239                                     -82.511264,
45240                                     42.646675
45241                                 ],
45242                                 [
45243                                     -82.526224,
45244                                     42.619906
45245                                 ],
45246                                 [
45247                                     -82.549246,
45248                                     42.590941
45249                                 ],
45250                                 [
45251                                     -82.575833,
45252                                     42.571795
45253                                 ],
45254                                 [
45255                                     -82.608467,
45256                                     42.561098
45257                                 ],
45258                                 [
45259                                     -82.644331,
45260                                     42.557817
45261                                 ],
45262                                 [
45263                                     -82.644698,
45264                                     42.557533
45265                                 ],
45266                                 [
45267                                     -82.644932,
45268                                     42.561634
45269                                 ],
45270                                 [
45271                                     -82.637132,
45272                                     42.568405
45273                                 ],
45274                                 [
45275                                     -82.60902,
45276                                     42.579296
45277                                 ],
45278                                 [
45279                                     -82.616673,
45280                                     42.582828
45281                                 ],
45282                                 [
45283                                     -82.636985,
45284                                     42.599607
45285                                 ],
45286                                 [
45287                                     -82.625357,
45288                                     42.616092
45289                                 ],
45290                                 [
45291                                     -82.629331,
45292                                     42.626394
45293                                 ],
45294                                 [
45295                                     -82.638751,
45296                                     42.633459
45297                                 ],
45298                                 [
45299                                     -82.644344,
45300                                     42.640524
45301                                 ],
45302                                 [
45303                                     -82.644166,
45304                                     42.641056
45305                                 ],
45306                                 [
45307                                     -82.716083,
45308                                     42.617461
45309                                 ],
45310                                 [
45311                                     -82.777592,
45312                                     42.408506
45313                                 ],
45314                                 [
45315                                     -82.888693,
45316                                     42.406093
45317                                 ],
45318                                 [
45319                                     -82.889991,
45320                                     42.403266
45321                                 ],
45322                                 [
45323                                     -82.905739,
45324                                     42.387665
45325                                 ],
45326                                 [
45327                                     -82.923842,
45328                                     42.374419
45329                                 ],
45330                                 [
45331                                     -82.937972,
45332                                     42.366176
45333                                 ],
45334                                 [
45335                                     -82.947686,
45336                                     42.363527
45337                                 ],
45338                                 [
45339                                     -82.979624,
45340                                     42.359406
45341                                 ],
45342                                 [
45343                                     -83.042618,
45344                                     42.340861
45345                                 ],
45346                                 [
45347                                     -83.061899,
45348                                     42.32732
45349                                 ],
45350                                 [
45351                                     -83.081622,
45352                                     42.30907
45353                                 ],
45354                                 [
45355                                     -83.11342,
45356                                     42.279619
45357                                 ],
45358                                 [
45359                                     -83.145306,
45360                                     42.066968
45361                                 ],
45362                                 [
45363                                     -83.177398,
45364                                     41.960666
45365                                 ],
45366                                 [
45367                                     -83.21512,
45368                                     41.794493
45369                                 ],
45370                                 [
45371                                     -82.219051,
45372                                     41.516445
45373                                 ],
45374                                 [
45375                                     -80.345329,
45376                                     42.13344
45377                                 ],
45378                                 [
45379                                     -80.316455,
45380                                     42.123137
45381                                 ],
45382                                 [
45383                                     -79.270266,
45384                                     42.591872
45385                                 ],
45386                                 [
45387                                     -79.221058,
45388                                     42.582892
45389                                 ],
45390                                 [
45391                                     -78.871842,
45392                                     42.860012
45393                                 ],
45394                                 [
45395                                     -78.875011,
45396                                     42.867184
45397                                 ],
45398                                 [
45399                                     -78.896205,
45400                                     42.897209
45401                                 ],
45402                                 [
45403                                     -78.901651,
45404                                     42.908101
45405                                 ],
45406                                 [
45407                                     -78.90901,
45408                                     42.952255
45409                                 ],
45410                                 [
45411                                     -78.913426,
45412                                     42.957848
45413                                 ],
45414                                 [
45415                                     -78.932118,
45416                                     42.9708
45417                                 ],
45418                                 [
45419                                     -78.936386,
45420                                     42.979631
45421                                 ],
45422                                 [
45423                                     -78.927997,
45424                                     43.002003
45425                                 ],
45426                                 [
45427                                     -78.893114,
45428                                     43.029379
45429                                 ],
45430                                 [
45431                                     -78.887963,
45432                                     43.051456
45433                                 ],
45434                                 [
45435                                     -78.914897,
45436                                     43.076477
45437                                 ],
45438                                 [
45439                                     -79.026167,
45440                                     43.086485
45441                                 ],
45442                                 [
45443                                     -79.065231,
45444                                     43.10573
45445                                 ],
45446                                 [
45447                                     -79.065273,
45448                                     43.105897
45449                                 ],
45450                                 [
45451                                     -79.065738,
45452                                     43.120237
45453                                 ],
45454                                 [
45455                                     -79.061423,
45456                                     43.130288
45457                                 ],
45458                                 [
45459                                     -79.055583,
45460                                     43.138427
45461                                 ],
45462                                 [
45463                                     -79.051604,
45464                                     43.146851
45465                                 ],
45466                                 [
45467                                     -79.04933,
45468                                     43.159847
45469                                 ],
45470                                 [
45471                                     -79.048607,
45472                                     43.170622
45473                                 ],
45474                                 [
45475                                     -79.053775,
45476                                     43.260358
45477                                 ],
45478                                 [
45479                                     -79.058425,
45480                                     43.277799
45481                                 ],
45482                                 [
45483                                     -79.058631,
45484                                     43.2782
45485                                 ],
45486                                 [
45487                                     -78.990696,
45488                                     43.286947
45489                                 ],
45490                                 [
45491                                     -78.862059,
45492                                     43.324332
45493                                 ],
45494                                 [
45495                                     -78.767813,
45496                                     43.336418
45497                                 ],
45498                                 [
45499                                     -78.516117,
45500                                     43.50645
45501                                 ],
45502                                 [
45503                                     -76.363317,
45504                                     43.943219
45505                                 ],
45506                                 [
45507                                     -76.396746,
45508                                     44.106667
45509                                 ],
45510                                 [
45511                                     -76.364697,
45512                                     44.111631
45513                                 ],
45514                                 [
45515                                     -76.366146,
45516                                     44.117349
45517                                 ],
45518                                 [
45519                                     -76.357462,
45520                                     44.131478
45521                                 ],
45522                                 [
45523                                     -76.183493,
45524                                     44.223025
45525                                 ],
45526                                 [
45527                                     -76.162644,
45528                                     44.229888
45529                                 ],
45530                                 [
45531                                     -76.176117,
45532                                     44.30795
45533                                 ],
45534                                 [
45535                                     -76.046414,
45536                                     44.354817
45537                                 ],
45538                                 [
45539                                     -75.928746,
45540                                     44.391137
45541                                 ],
45542                                 [
45543                                     -75.852508,
45544                                     44.381639
45545                                 ],
45546                                 [
45547                                     -75.849095,
45548                                     44.386103
45549                                 ],
45550                                 [
45551                                     -75.847623,
45552                                     44.392579
45553                                 ],
45554                                 [
45555                                     -75.84674,
45556                                     44.398172
45557                                 ],
45558                                 [
45559                                     -75.845415,
45560                                     44.40141
45561                                 ],
45562                                 [
45563                                     -75.780803,
45564                                     44.432318
45565                                 ],
45566                                 [
45567                                     -75.770205,
45568                                     44.446153
45569                                 ],
45570                                 [
45571                                     -75.772266,
45572                                     44.463815
45573                                 ],
45574                                 [
45575                                     -75.779184,
45576                                     44.48236
45577                                 ],
45578                                 [
45579                                     -75.791496,
45580                                     44.496513
45581                                 ],
45582                                 [
45583                                     -75.791183,
45584                                     44.496768
45585                                 ],
45586                                 [
45587                                     -75.754622,
45588                                     44.527567
45589                                 ],
45590                                 [
45591                                     -75.69969,
45592                                     44.581673
45593                                 ],
45594                                 [
45595                                     -75.578199,
45596                                     44.661513
45597                                 ],
45598                                 [
45599                                     -75.455958,
45600                                     44.741766
45601                                 ],
45602                                 [
45603                                     -75.341831,
45604                                     44.816749
45605                                 ],
45606                                 [
45607                                     -75.270233,
45608                                     44.863774
45609                                 ],
45610                                 [
45611                                     -75.129647,
45612                                     44.925166
45613                                 ],
45614                                 [
45615                                     -75.075594,
45616                                     44.935501
45617                                 ],
45618                                 [
45619                                     -75.058721,
45620                                     44.941031
45621                                 ],
45622                                 [
45623                                     -75.0149,
45624                                     44.96599
45625                                 ],
45626                                 [
45627                                     -74.998647,
45628                                     44.972398
45629                                 ],
45630                                 [
45631                                     -74.940201,
45632                                     44.987746
45633                                 ],
45634                                 [
45635                                     -74.903744,
45636                                     45.005213
45637                                 ],
45638                                 [
45639                                     -74.88651,
45640                                     45.009398
45641                                 ],
45642                                 [
45643                                     -74.868474,
45644                                     45.010122
45645                                 ],
45646                                 [
45647                                     -74.741557,
45648                                     44.998857
45649                                 ],
45650                                 [
45651                                     -74.712961,
45652                                     44.999254
45653                                 ],
45654                                 [
45655                                     -74.695875,
45656                                     44.99803
45657                                 ],
45658                                 [
45659                                     -74.596114,
45660                                     44.998495
45661                                 ],
45662                                 [
45663                                     -74.496352,
45664                                     44.999012
45665                                 ],
45666                                 [
45667                                     -74.197146,
45668                                     45.000458
45669                                 ],
45670                                 [
45671                                     -71.703551,
45672                                     45.012757
45673                                 ],
45674                                 [
45675                                     -71.603816,
45676                                     45.013274
45677                                 ],
45678                                 [
45679                                     -71.505848,
45680                                     45.013731
45681                                 ],
45682                                 [
45683                                     -71.50408,
45684                                     45.013739
45685                                 ],
45686                                 [
45687                                     -71.506613,
45688                                     45.037045
45689                                 ],
45690                                 [
45691                                     -71.504752,
45692                                     45.052962
45693                                 ],
45694                                 [
45695                                     -71.497259,
45696                                     45.066553
45697                                 ],
45698                                 [
45699                                     -71.45659,
45700                                     45.110994
45701                                 ],
45702                                 [
45703                                     -71.451215,
45704                                     45.121691
45705                                 ],
45706                                 [
45707                                     -71.445996,
45708                                     45.140295
45709                                 ],
45710                                 [
45711                                     -71.441604,
45712                                     45.150682
45713                                 ],
45714                                 [
45715                                     -71.413026,
45716                                     45.186184
45717                                 ],
45718                                 [
45719                                     -71.406567,
45720                                     45.204942
45721                                 ],
45722                                 [
45723                                     -71.42269,
45724                                     45.217189
45725                                 ],
45726                                 [
45727                                     -71.449045,
45728                                     45.226905
45729                                 ],
45730                                 [
45731                                     -71.438813,
45732                                     45.233468
45733                                 ],
45734                                 [
45735                                     -71.394888,
45736                                     45.241529
45737                                 ],
45738                                 [
45739                                     -71.381245,
45740                                     45.250779
45741                                 ],
45742                                 [
45743                                     -71.3521,
45744                                     45.278323
45745                                 ],
45746                                 [
45747                                     -71.334323,
45748                                     45.28871
45749                                 ],
45750                                 [
45751                                     -71.311534,
45752                                     45.294136
45753                                 ],
45754                                 [
45755                                     -71.293396,
45756                                     45.292327
45757                                 ],
45758                                 [
45759                                     -71.20937,
45760                                     45.254758
45761                                 ],
45762                                 [
45763                                     -71.185133,
45764                                     45.248557
45765                                 ],
45766                                 [
45767                                     -71.160329,
45768                                     45.245767
45769                                 ],
45770                                 [
45771                                     -71.141725,
45772                                     45.252329
45773                                 ],
45774                                 [
45775                                     -71.111029,
45776                                     45.287108
45777                                 ],
45778                                 [
45779                                     -71.095242,
45780                                     45.300905
45781                                 ],
45782                                 [
45783                                     -71.085553,
45784                                     45.304213
45785                                 ],
45786                                 [
45787                                     -71.084952,
45788                                     45.304293
45789                                 ],
45790                                 [
45791                                     -71.064211,
45792                                     45.307055
45793                                 ],
45794                                 [
45795                                     -71.054418,
45796                                     45.310362
45797                                 ],
45798                                 [
45799                                     -71.036667,
45800                                     45.323385
45801                                 ],
45802                                 [
45803                                     -71.027598,
45804                                     45.33465
45805                                 ],
45806                                 [
45807                                     -71.016539,
45808                                     45.343125
45809                                 ],
45810                                 [
45811                                     -70.993155,
45812                                     45.347827
45813                                 ],
45814                                 [
45815                                     -70.968118,
45816                                     45.34452
45817                                 ],
45818                                 [
45819                                     -70.951608,
45820                                     45.332014
45821                                 ],
45822                                 [
45823                                     -70.906908,
45824                                     45.246232
45825                                 ],
45826                                 [
45827                                     -70.892412,
45828                                     45.234604
45829                                 ],
45830                                 [
45831                                     -70.874351,
45832                                     45.245663
45833                                 ],
45834                                 [
45835                                     -70.870605,
45836                                     45.255275
45837                                 ],
45838                                 [
45839                                     -70.872491,
45840                                     45.274189
45841                                 ],
45842                                 [
45843                                     -70.870243,
45844                                     45.283129
45845                                 ],
45846                                 [
45847                                     -70.862621,
45848                                     45.290363
45849                                 ],
45850                                 [
45851                                     -70.842389,
45852                                     45.301215
45853                                 ],
45854                                 [
45855                                     -70.835258,
45856                                     45.309794
45857                                 ],
45858                                 [
45859                                     -70.83208,
45860                                     45.328552
45861                                 ],
45862                                 [
45863                                     -70.835465,
45864                                     45.373097
45865                                 ],
45866                                 [
45867                                     -70.833837,
45868                                     45.393096
45869                                 ],
45870                                 [
45871                                     -70.825982,
45872                                     45.410459
45873                                 ],
45874                                 [
45875                                     -70.812986,
45876                                     45.42343
45877                                 ],
45878                                 [
45879                                     -70.794873,
45880                                     45.430406
45881                                 ],
45882                                 [
45883                                     -70.771877,
45884                                     45.430045
45885                                 ],
45886                                 [
45887                                     -70.75255,
45888                                     45.422345
45889                                 ],
45890                                 [
45891                                     -70.718004,
45892                                     45.397282
45893                                 ],
45894                                 [
45895                                     -70.696739,
45896                                     45.388652
45897                                 ],
45898                                 [
45899                                     -70.675785,
45900                                     45.388704
45901                                 ],
45902                                 [
45903                                     -70.65359,
45904                                     45.395473
45905                                 ],
45906                                 [
45907                                     -70.641316,
45908                                     45.408496
45909                                 ],
45910                                 [
45911                                     -70.650257,
45912                                     45.427461
45913                                 ],
45914                                 [
45915                                     -70.668162,
45916                                     45.439036
45917                                 ],
45918                                 [
45919                                     -70.707385,
45920                                     45.4564
45921                                 ],
45922                                 [
45923                                     -70.722836,
45924                                     45.470921
45925                                 ],
45926                                 [
45927                                     -70.732009,
45928                                     45.491591
45929                                 ],
45930                                 [
45931                                     -70.730329,
45932                                     45.507973
45933                                 ],
45934                                 [
45935                                     -70.686792,
45936                                     45.572723
45937                                 ],
45938                                 [
45939                                     -70.589614,
45940                                     45.651788
45941                                 ],
45942                                 [
45943                                     -70.572406,
45944                                     45.662279
45945                                 ],
45946                                 [
45947                                     -70.514735,
45948                                     45.681709
45949                                 ],
45950                                 [
45951                                     -70.484763,
45952                                     45.699641
45953                                 ],
45954                                 [
45955                                     -70.4728,
45956                                     45.703568
45957                                 ],
45958                                 [
45959                                     -70.450424,
45960                                     45.703723
45961                                 ],
45962                                 [
45963                                     -70.439132,
45964                                     45.705893
45965                                 ],
45966                                 [
45967                                     -70.419315,
45968                                     45.716901
45969                                 ],
45970                                 [
45971                                     -70.407351,
45972                                     45.731525
45973                                 ],
45974                                 [
45975                                     -70.402442,
45976                                     45.749663
45977                                 ],
45978                                 [
45979                                     -70.403941,
45980                                     45.771161
45981                                 ],
45982                                 [
45983                                     -70.408282,
45984                                     45.781651
45985                                 ],
45986                                 [
45987                                     -70.413682,
45988                                     45.787697
45989                                 ],
45990                                 [
45991                                     -70.41717,
45992                                     45.793795
45993                                 ],
45994                                 [
45995                                     -70.415232,
45996                                     45.804389
45997                                 ],
45998                                 [
45999                                     -70.409935,
46000                                     45.810745
46001                                 ],
46002                                 [
46003                                     -70.389807,
46004                                     45.825059
46005                                 ],
46006                                 [
46007                                     -70.312654,
46008                                     45.867641
46009                                 ],
46010                                 [
46011                                     -70.283173,
46012                                     45.890482
46013                                 ],
46014                                 [
46015                                     -70.262528,
46016                                     45.923038
46017                                 ],
46018                                 [
46019                                     -70.255939,
46020                                     45.948876
46021                                 ],
46022                                 [
46023                                     -70.263148,
46024                                     45.956834
46025                                 ],
46026                                 [
46027                                     -70.280434,
46028                                     45.959315
46029                                 ],
46030                                 [
46031                                     -70.303947,
46032                                     45.968616
46033                                 ],
46034                                 [
46035                                     -70.316298,
46036                                     45.982982
46037                                 ],
46038                                 [
46039                                     -70.316892,
46040                                     45.999002
46041                                 ],
46042                                 [
46043                                     -70.306143,
46044                                     46.035331
46045                                 ],
46046                                 [
46047                                     -70.303637,
46048                                     46.038483
46049                                 ],
46050                                 [
46051                                     -70.294309,
46052                                     46.044943
46053                                 ],
46054                                 [
46055                                     -70.29201,
46056                                     46.048663
46057                                 ],
46058                                 [
46059                                     -70.293017,
46060                                     46.054038
46061                                 ],
46062                                 [
46063                                     -70.296092,
46064                                     46.057862
46065                                 ],
46066                                 [
46067                                     -70.300795,
46068                                     46.061737
46069                                 ],
46070                                 [
46071                                     -70.304774,
46072                                     46.065975
46073                                 ],
46074                                 [
46075                                     -70.311362,
46076                                     46.071866
46077                                 ],
46078                                 [
46079                                     -70.312629,
46080                                     46.079566
46081                                 ],
46082                                 [
46083                                     -70.30033,
46084                                     46.089281
46085                                 ],
46086                                 [
46087                                     -70.26444,
46088                                     46.106593
46089                                 ],
46090                                 [
46091                                     -70.24948,
46092                                     46.120597
46093                                 ],
46094                                 [
46095                                     -70.244002,
46096                                     46.141009
46097                                 ],
46098                                 [
46099                                     -70.249247,
46100                                     46.162765
46101                                 ],
46102                                 [
46103                                     -70.263329,
46104                                     46.183229
46105                                 ],
46106                                 [
46107                                     -70.284801,
46108                                     46.191859
46109                                 ],
46110                                 [
46111                                     -70.280899,
46112                                     46.211857
46113                                 ],
46114                                 [
46115                                     -70.253407,
46116                                     46.251493
46117                                 ],
46118                                 [
46119                                     -70.236173,
46120                                     46.288339
46121                                 ],
46122                                 [
46123                                     -70.223693,
46124                                     46.300793
46125                                 ],
46126                                 [
46127                                     -70.201886,
46128                                     46.305495
46129                                 ],
46130                                 [
46131                                     -70.199509,
46132                                     46.315262
46133                                 ],
46134                                 [
46135                                     -70.197028,
46136                                     46.336863
46137                                 ],
46138                                 [
46139                                     -70.188398,
46140                                     46.358412
46141                                 ],
46142                                 [
46143                                     -70.167418,
46144                                     46.368179
46145                                 ],
46146                                 [
46147                                     -70.153052,
46148                                     46.372829
46149                                 ],
46150                                 [
46151                                     -70.074323,
46152                                     46.419545
46153                                 ],
46154                                 [
46155                                     -70.061817,
46156                                     46.445409
46157                                 ],
46158                                 [
46159                                     -70.050086,
46160                                     46.511271
46161                                 ],
46162                                 [
46163                                     -70.032723,
46164                                     46.609766
46165                                 ],
46166                                 [
46167                                     -70.023628,
46168                                     46.661287
46169                                 ],
46170                                 [
46171                                     -70.007763,
46172                                     46.704075
46173                                 ],
46174                                 [
46175                                     -69.989961,
46176                                     46.721697
46177                                 ],
46178                                 [
46179                                     -69.899708,
46180                                     46.811562
46181                                 ],
46182                                 [
46183                                     -69.809403,
46184                                     46.901299
46185                                 ],
46186                                 [
46187                                     -69.719099,
46188                                     46.991086
46189                                 ],
46190                                 [
46191                                     -69.628794,
46192                                     47.080797
46193                                 ],
46194                                 [
46195                                     -69.538464,
46196                                     47.17061
46197                                 ],
46198                                 [
46199                                     -69.448159,
46200                                     47.260346
46201                                 ],
46202                                 [
46203                                     -69.357906,
46204                                     47.350134
46205                                 ],
46206                                 [
46207                                     -69.267628,
46208                                     47.439844
46209                                 ],
46210                                 [
46211                                     -69.25091,
46212                                     47.452919
46213                                 ],
46214                                 [
46215                                     -69.237268,
46216                                     47.45881
46217                                 ],
46218                                 [
46219                                     -69.221972,
46220                                     47.459688
46221                                 ],
46222                                 [
46223                                     -69.069655,
46224                                     47.431886
46225                                 ],
46226                                 [
46227                                     -69.054023,
46228                                     47.418399
46229                                 ],
46230                                 [
46231                                     -69.054333,
46232                                     47.389253
46233                                 ],
46234                                 [
46235                                     -69.066193,
46236                                     47.32967
46237                                 ],
46238                                 [
46239                                     -69.065134,
46240                                     47.296339
46241                                 ],
46242                                 [
46243                                     -69.06356,
46244                                     47.290809
46245                                 ],
46246                                 [
46247                                     -69.057486,
46248                                     47.269467
46249                                 ],
46250                                 [
46251                                     -69.0402,
46252                                     47.249055
46253                                 ],
46254                                 [
46255                                     -68.906229,
46256                                     47.190221
46257                                 ],
46258                                 [
46259                                     -68.889718,
46260                                     47.190609
46261                                 ],
46262                                 [
46263                                     -68.761819,
46264                                     47.23704
46265                                 ],
46266                                 [
46267                                     -68.71779,
46268                                     47.245231
46269                                 ],
46270                                 [
46271                                     -68.668801,
46272                                     47.243422
46273                                 ],
46274                                 [
46275                                     -68.644203,
46276                                     47.245283
46277                                 ],
46278                                 [
46279                                     -68.6256,
46280                                     47.255205
46281                                 ],
46282                                 [
46283                                     -68.607926,
46284                                     47.269829
46285                                 ],
46286                                 [
46287                                     -68.58524,
46288                                     47.28249
46289                                 ],
46290                                 [
46291                                     -68.539662,
46292                                     47.299853
46293                                 ],
46294                                 [
46295                                     -68.518009,
46296                                     47.304762
46297                                 ],
46298                                 [
46299                                     -68.492016,
46300                                     47.307553
46301                                 ],
46302                                 [
46303                                     -68.466746,
46304                                     47.305692
46305                                 ],
46306                                 [
46307                                     -68.435327,
46308                                     47.291275
46309                                 ],
46310                                 [
46311                                     -68.422563,
46312                                     47.293109
46313                                 ],
46314                                 [
46315                                     -68.410212,
46316                                     47.297424
46317                                 ],
46318                                 [
46319                                     -68.385614,
46320                                     47.301713
46321                                 ],
46322                                 [
46323                                     -68.383392,
46324                                     47.307139
46325                                 ],
46326                                 [
46327                                     -68.384839,
46328                                     47.315873
46329                                 ],
46330                                 [
46331                                     -68.382049,
46332                                     47.32781
46333                                 ],
46334                                 [
46335                                     -68.347839,
46336                                     47.358506
46337                                 ],
46338                                 [
46339                                     -68.299728,
46340                                     47.367833
46341                                 ],
46342                                 [
46343                                     -68.24645,
46344                                     47.360573
46345                                 ],
46346                                 [
46347                                     -68.197047,
46348                                     47.341401
46349                                 ],
46350                                 [
46351                                     -68.184335,
46352                                     47.333133
46353                                 ],
46354                                 [
46355                                     -68.156068,
46356                                     47.306674
46357                                 ],
46358                                 [
46359                                     -68.145061,
46360                                     47.301455
46361                                 ],
46362                                 [
46363                                     -68.115398,
46364                                     47.292282
46365                                 ],
46366                                 [
46367                                     -68.101446,
46368                                     47.286185
46369                                 ],
46370                                 [
46371                                     -68.039382,
46372                                     47.245231
46373                                 ],
46374                                 [
46375                                     -67.993184,
46376                                     47.223217
46377                                 ],
46378                                 [
46379                                     -67.962436,
46380                                     47.197689
46381                                 ],
46382                                 [
46383                                     -67.953703,
46384                                     47.18663
46385                                 ],
46386                                 [
46387                                     -67.949982,
46388                                     47.172936
46389                                 ],
46390                                 [
46391                                     -67.943419,
46392                                     47.164538
46393                                 ],
46394                                 [
46395                                     -67.899132,
46396                                     47.138778
46397                                 ],
46398                                 [
46399                                     -67.870607,
46400                                     47.107358
46401                                 ],
46402                                 [
46403                                     -67.854742,
46404                                     47.09785
46405                                 ],
46406                                 [
46407                                     -67.813556,
46408                                     47.081908
46409                                 ],
46410                                 [
46411                                     -67.808699,
46412                                     47.075138
46413                                 ],
46414                                 [
46415                                     -67.805185,
46416                                     47.035631
46417                                 ],
46418                                 [
46419                                     -67.802549,
46420                                     46.901247
46421                                 ],
46422                                 [
46423                                     -67.800017,
46424                                     46.766785
46425                                 ],
46426                                 [
46427                                     -67.797433,
46428                                     46.632297
46429                                 ],
46430                                 [
46431                                     -67.794849,
46432                                     46.497861
46433                                 ],
46434                                 [
46435                                     -67.792317,
46436                                     46.363476
46437                                 ],
46438                                 [
46439                                     -67.789733,
46440                                     46.229014
46441                                 ],
46442                                 [
46443                                     -67.78715,
46444                                     46.094552
46445                                 ],
46446                                 [
46447                                     -67.784566,
46448                                     45.960142
46449                                 ],
46450                                 [
46451                                     -67.782757,
46452                                     45.95053
46453                                 ],
46454                                 [
46455                                     -67.776556,
46456                                     45.942933
46457                                 ],
46458                                 [
46459                                     -67.767461,
46460                                     45.935957
46461                                 ],
46462                                 [
46463                                     -67.759658,
46464                                     45.928567
46465                                 ],
46466                                 [
46467                                     -67.757849,
46468                                     45.919472
46469                                 ],
46470                                 [
46471                                     -67.769425,
46472                                     45.903969
46473                                 ],
46474                                 [
46475                                     -67.787356,
46476                                     45.890017
46477                                 ],
46478                                 [
46479                                     -67.799242,
46480                                     45.875651
46481                                 ],
46482                                 [
46483                                     -67.792627,
46484                                     45.858907
46485                                 ],
46486                                 [
46487                                     -67.776091,
46488                                     45.840821
46489                                 ],
46490                                 [
46491                                     -67.772835,
46492                                     45.828057
46493                                 ],
46494                                 [
46495                                     -67.779863,
46496                                     45.815706
46497                                 ],
46498                                 [
46499                                     -67.794126,
46500                                     45.799169
46501                                 ],
46502                                 [
46503                                     -67.80627,
46504                                     45.781754
46505                                 ],
46506                                 [
46507                                     -67.811127,
46508                                     45.76651
46509                                 ],
46510                                 [
46511                                     -67.810816,
46512                                     45.762414
46513                                 ],
46514                                 [
46515                                     -67.817811,
46516                                     45.754896
46517                                 ],
46518                                 [
46519                                     -67.821785,
46520                                     45.740767
46521                                 ],
46522                                 [
46523                                     -67.827673,
46524                                     45.739001
46525                                 ],
46526                                 [
46527                                     -67.868884,
46528                                     45.744593
46529                                 ],
46530                                 [
46531                                     -67.856815,
46532                                     45.723694
46533                                 ],
46534                                 [
46535                                     -67.835768,
46536                                     45.703971
46537                                 ],
46538                                 [
46539                                     -67.793821,
46540                                     45.676301
46541                                 ],
46542                                 [
46543                                     -67.733034,
46544                                     45.651869
46545                                 ],
46546                                 [
46547                                     -67.723173,
46548                                     45.645393
46549                                 ],
46550                                 [
46551                                     -67.711546,
46552                                     45.642155
46553                                 ],
46554                                 [
46555                                     -67.697564,
46556                                     45.64922
46557                                 ],
46558                                 [
46559                                     -67.66695,
46560                                     45.620077
46561                                 ],
46562                                 [
46563                                     -67.649435,
46564                                     45.611247
46565                                 ],
46566                                 [
46567                                     -67.603073,
46568                                     45.605948
46569                                 ],
46570                                 [
46571                                     -67.561862,
46572                                     45.596234
46573                                 ],
46574                                 [
46575                                     -67.54052,
46576                                     45.593879
46577                                 ],
46578                                 [
46579                                     -67.442056,
46580                                     45.603593
46581                                 ],
46582                                 [
46583                                     -67.440939,
46584                                     45.604586
46585                                 ],
46586                                 [
46587                                     -67.431306,
46588                                     45.597941
46589                                 ],
46590                                 [
46591                                     -67.422107,
46592                                     45.568796
46593                                 ],
46594                                 [
46595                                     -67.42619,
46596                                     45.533449
46597                                 ],
46598                                 [
46599                                     -67.443036,
46600                                     45.522184
46601                                 ],
46602                                 [
46603                                     -67.467531,
46604                                     45.508283
46605                                 ],
46606                                 [
46607                                     -67.493214,
46608                                     45.493142
46609                                 ],
46610                                 [
46611                                     -67.48231,
46612                                     45.455521
46613                                 ],
46614                                 [
46615                                     -67.428825,
46616                                     45.38705
46617                                 ],
46618                                 [
46619                                     -67.434561,
46620                                     45.350308
46621                                 ],
46622                                 [
46623                                     -67.459056,
46624                                     45.318424
46625                                 ],
46626                                 [
46627                                     -67.468668,
46628                                     45.301835
46629                                 ],
46630                                 [
46631                                     -67.475024,
46632                                     45.282353
46633                                 ],
46634                                 [
46635                                     -67.471303,
46636                                     45.266282
46637                                 ],
46638                                 [
46639                                     -67.427585,
46640                                     45.236568
46641                                 ],
46642                                 [
46643                                     -67.390533,
46644                                     45.193108
46645                                 ],
46646                                 [
46647                                     -67.356272,
46648                                     45.165926
46649                                 ],
46650                                 [
46651                                     -67.31922,
46652                                     45.153886
46653                                 ],
46654                                 [
46655                                     -67.284648,
46656                                     45.169699
46657                                 ],
46658                                 [
46659                                     -67.279584,
46660                                     45.179052
46661                                 ],
46662                                 [
46663                                     -67.279222,
46664                                     45.187372
46665                                 ],
46666                                 [
46667                                     -67.277207,
46668                                     45.195072
46669                                 ],
46670                                 [
46671                                     -67.267336,
46672                                     45.202513
46673                                 ],
46674                                 [
46675                                     -67.254986,
46676                                     45.205045
46677                                 ],
46678                                 [
46679                                     -67.242428,
46680                                     45.202565
46681                                 ],
46682                                 [
46683                                     -67.219071,
46684                                     45.192126
46685                                 ],
46686                                 [
46687                                     -67.206166,
46688                                     45.189401
46689                                 ],
46690                                 [
46691                                     -67.176015,
46692                                     45.178656
46693                                 ],
46694                                 [
46695                                     -67.191274,
46696                                     45.180365
46697                                 ],
46698                                 [
46699                                     -67.204376,
46700                                     45.178209
46701                                 ],
46702                                 [
46703                                     -67.204724,
46704                                     45.177791
46705                                 ],
46706                                 [
46707                                     -67.152423,
46708                                     45.148932
46709                                 ],
46710                                 [
46711                                     -67.048033,
46712                                     45.043407
46713                                 ],
46714                                 [
46715                                     -66.962727,
46716                                     45.047088
46717                                 ],
46718                                 [
46719                                     -66.857192,
46720                                     44.968696
46721                                 ],
46722                                 [
46723                                     -66.897268,
46724                                     44.817275
46725                                 ],
46726                                 [
46727                                     -67.2159,
46728                                     44.593511
46729                                 ],
46730                                 [
46731                                     -67.122366,
46732                                     44.423624
46733                                 ],
46734                                 [
46735                                     -67.68447,
46736                                     44.192544
46737                                 ],
46738                                 [
46739                                     -67.459678,
46740                                     40.781645
46741                                 ],
46742                                 [
46743                                     -76.607854,
46744                                     32.495823
46745                                 ],
46746                                 [
46747                                     -76.798479,
46748                                     32.713735
46749                                 ],
46750                                 [
46751                                     -78.561892,
46752                                     29.037718
46753                                 ],
46754                                 [
46755                                     -78.892446,
46756                                     29.039659
46757                                 ],
46758                                 [
46759                                     -79.762295,
46760                                     26.719312
46761                                 ],
46762                                 [
46763                                     -80.026352,
46764                                     24.932961
46765                                 ],
46766                                 [
46767                                     -82.368794,
46768                                     23.994833
46769                                 ],
46770                                 [
46771                                     -83.806281,
46772                                     29.068506
46773                                 ],
46774                                 [
46775                                     -87.460772,
46776                                     29.089961
46777                                 ],
46778                                 [
46779                                     -87.922646,
46780                                     28.666131
46781                                 ],
46782                                 [
46783                                     -90.461001,
46784                                     28.246758
46785                                 ],
46786                                 [
46787                                     -91.787336,
46788                                     29.11536
46789                                 ],
46790                                 [
46791                                     -93.311871,
46792                                     29.12431
46793                                 ],
46794                                 [
46795                                     -96.423449,
46796                                     26.057857
46797                                 ],
46798                                 [
46799                                     -97.129057,
46800                                     25.991017
46801                                 ],
46802                                 [
46803                                     -97.129509,
46804                                     25.966833
46805                                 ],
46806                                 [
46807                                     -97.139358,
46808                                     25.965876
46809                                 ],
46810                                 [
46811                                     -97.202171,
46812                                     25.960893
46813                                 ],
46814                                 [
46815                                     -97.202176,
46816                                     25.960857
46817                                 ],
46818                                 [
46819                                     -97.204941,
46820                                     25.960639
46821                                 ],
46822                                 [
46823                                     -97.253051,
46824                                     25.963481
46825                                 ],
46826                                 [
46827                                     -97.266358,
46828                                     25.960639
46829                                 ],
46830                                 [
46831                                     -97.2692,
46832                                     25.944361
46833                                 ],
46834                                 [
46835                                     -97.287649,
46836                                     25.928651
46837                                 ],
46838                                 [
46839                                     -97.310981,
46840                                     25.922088
46841                                 ],
46842                                 [
46843                                     -97.328447,
46844                                     25.933302
46845                                 ],
46846                                 [
46847                                     -97.351107,
46848                                     25.918419
46849                                 ],
46850                                 [
46851                                     -97.355112,
46852                                     25.912786
46853                                 ],
46854                                 [
46855                                     -97.35227,
46856                                     25.894493
46857                                 ],
46858                                 [
46859                                     -97.345165,
46860                                     25.871704
46861                                 ],
46862                                 [
46863                                     -97.345733,
46864                                     25.852222
46865                                 ],
46866                                 [
46867                                     -97.36599,
46868                                     25.843902
46869                                 ],
46870                                 [
46871                                     -97.376015,
46872                                     25.846744
46873                                 ],
46874                                 [
46875                                     -97.380124,
46876                                     25.853203
46877                                 ],
46878                                 [
46879                                     -97.383121,
46880                                     25.860541
46881                                 ],
46882                                 [
46883                                     -97.389891,
46884                                     25.865657
46885                                 ],
46886                                 [
46887                                     -97.397823,
46888                                     25.865812
46889                                 ],
46890                                 [
46891                                     -97.399476,
46892                                     25.861162
46893                                 ],
46894                                 [
46895                                     -97.39989,
46896                                     25.855115
46897                                 ],
46898                                 [
46899                                     -97.404179,
46900                                     25.851395
46901                                 ],
46902                                 [
46903                                     -97.425418,
46904                                     25.854857
46905                                 ],
46906                                 [
46907                                     -97.435727,
46908                                     25.869275
46909                                 ],
46910                                 [
46911                                     -97.441309,
46912                                     25.884933
46913                                 ],
46914                                 [
46915                                     -97.448259,
46916                                     25.892322
46917                                 ],
46918                                 [
46919                                     -97.469421,
46920                                     25.892943
46921                                 ],
46922                                 [
46923                                     -97.486319,
46924                                     25.895733
46925                                 ],
46926                                 [
46927                                     -97.502209,
46928                                     25.901883
46929                                 ],
46930                                 [
46931                                     -97.52027,
46932                                     25.912786
46933                                 ],
46934                                 [
46935                                     -97.565177,
46936                                     25.954748
46937                                 ],
46938                                 [
46939                                     -97.594322,
46940                                     25.966375
46941                                 ],
46942                                 [
46943                                     -97.604787,
46944                                     25.979966
46945                                 ],
46946                                 [
46947                                     -97.613055,
46948                                     25.995985
46949                                 ],
46950                                 [
46951                                     -97.622641,
46952                                     26.00906
46953                                 ],
46954                                 [
46955                                     -97.641451,
46956                                     26.022495
46957                                 ],
46958                                 [
46959                                     -97.659874,
46960                                     26.03066
46961                                 ],
46962                                 [
46963                                     -97.679614,
46964                                     26.034639
46965                                 ],
46966                                 [
46967                                     -97.766948,
46968                                     26.039652
46969                                 ],
46970                                 [
46971                                     -97.780306,
46972                                     26.043218
46973                                 ],
46974                                 [
46975                                     -97.782321,
46976                                     26.058617
46977                                 ],
46978                                 [
46979                                     -97.80201,
46980                                     26.063733
46981                                 ],
46982                                 [
46983                                     -97.878181,
46984                                     26.063733
46985                                 ],
46986                                 [
46987                                     -97.941666,
46988                                     26.056809
46989                                 ],
46990                                 [
46991                                     -97.999233,
46992                                     26.064302
46993                                 ],
46994                                 [
46995                                     -98.013057,
46996                                     26.063682
46997                                 ],
46998                                 [
46999                                     -98.044166,
47000                                     26.048799
47001                                 ],
47002                                 [
47003                                     -98.065457,
47004                                     26.042184
47005                                 ],
47006                                 [
47007                                     -98.075146,
47008                                     26.046628
47009                                 ],
47010                                 [
47011                                     -98.083311,
47012                                     26.070916
47013                                 ],
47014                                 [
47015                                     -98.103103,
47016                                     26.074947
47017                                 ],
47018                                 [
47019                                     -98.150232,
47020                                     26.063682
47021                                 ],
47022                                 [
47023                                     -98.185062,
47024                                     26.065232
47025                                 ],
47026                                 [
47027                                     -98.222656,
47028                                     26.075412
47029                                 ],
47030                                 [
47031                                     -98.300429,
47032                                     26.111431
47033                                 ],
47034                                 [
47035                                     -98.309809,
47036                                     26.121094
47037                                 ],
47038                                 [
47039                                     -98.333037,
47040                                     26.15303
47041                                 ],
47042                                 [
47043                                     -98.339264,
47044                                     26.159851
47045                                 ],
47046                                 [
47047                                     -98.365774,
47048                                     26.160161
47049                                 ],
47050                                 [
47051                                     -98.377272,
47052                                     26.163572
47053                                 ],
47054                                 [
47055                                     -98.377272,
47056                                     26.173649
47057                                 ],
47058                                 [
47059                                     -98.36934,
47060                                     26.19401
47061                                 ],
47062                                 [
47063                                     -98.397193,
47064                                     26.201141
47065                                 ],
47066                                 [
47067                                     -98.428845,
47068                                     26.217729
47069                                 ],
47070                                 [
47071                                     -98.456544,
47072                                     26.225946
47073                                 ],
47074                                 [
47075                                     -98.472383,
47076                                     26.207652
47077                                 ],
47078                                 [
47079                                     -98.49295,
47080                                     26.230596
47081                                 ],
47082                                 [
47083                                     -98.521527,
47084                                     26.240932
47085                                 ],
47086                                 [
47087                                     -98.552791,
47088                                     26.248321
47089                                 ],
47090                                 [
47091                                     -98.581627,
47092                                     26.262274
47093                                 ],
47094                                 [
47095                                     -98.640564,
47096                                     26.24181
47097                                 ],
47098                                 [
47099                                     -98.653663,
47100                                     26.244291
47101                                 ],
47102                                 [
47103                                     -98.664696,
47104                                     26.250647
47105                                 ],
47106                                 [
47107                                     -98.685289,
47108                                     26.268475
47109                                 ],
47110                                 [
47111                                     -98.693325,
47112                                     26.270542
47113                                 ],
47114                                 [
47115                                     -98.702239,
47116                                     26.271628
47117                                 ],
47118                                 [
47119                                     -98.704255,
47120                                     26.27664
47121                                 ],
47122                                 [
47123                                     -98.691465,
47124                                     26.290231
47125                                 ],
47126                                 [
47127                                     -98.701413,
47128                                     26.299119
47129                                 ],
47130                                 [
47131                                     -98.713169,
47132                                     26.303357
47133                                 ],
47134                                 [
47135                                     -98.726217,
47136                                     26.30439
47137                                 ],
47138                                 [
47139                                     -98.739911,
47140                                     26.303253
47141                                 ],
47142                                 [
47143                                     -98.735932,
47144                                     26.320048
47145                                 ],
47146                                 [
47147                                     -98.746397,
47148                                     26.332141
47149                                 ],
47150                                 [
47151                                     -98.780839,
47152                                     26.351674
47153                                 ],
47154                                 [
47155                                     -98.795851,
47156                                     26.368314
47157                                 ],
47158                                 [
47159                                     -98.801329,
47160                                     26.372138
47161                                 ],
47162                                 [
47163                                     -98.810295,
47164                                     26.372448
47165                                 ],
47166                                 [
47167                                     -98.817323,
47168                                     26.368521
47169                                 ],
47170                                 [
47171                                     -98.825023,
47172                                     26.366454
47173                                 ],
47174                                 [
47175                                     -98.836081,
47176                                     26.372138
47177                                 ],
47178                                 [
47179                                     -98.842334,
47180                                     26.365834
47181                                 ],
47182                                 [
47183                                     -98.850835,
47184                                     26.364077
47185                                 ],
47186                                 [
47187                                     -98.860524,
47188                                     26.366299
47189                                 ],
47190                                 [
47191                                     -98.870214,
47192                                     26.372138
47193                                 ],
47194                                 [
47195                                     -98.893029,
47196                                     26.367849
47197                                 ],
47198                                 [
47199                                     -98.9299,
47200                                     26.39224
47201                                 ],
47202                                 [
47203                                     -98.945377,
47204                                     26.378288
47205                                 ],
47206                                 [
47207                                     -98.954136,
47208                                     26.393946
47209                                 ],
47210                                 [
47211                                     -98.962844,
47212                                     26.399527
47213                                 ],
47214                                 [
47215                                     -98.986951,
47216                                     26.400095
47217                                 ],
47218                                 [
47219                                     -99.004056,
47220                                     26.393842
47221                                 ],
47222                                 [
47223                                     -99.010515,
47224                                     26.392602
47225                                 ],
47226                                 [
47227                                     -99.016432,
47228                                     26.394462
47229                                 ],
47230                                 [
47231                                     -99.022995,
47232                                     26.403351
47233                                 ],
47234                                 [
47235                                     -99.027878,
47236                                     26.406245
47237                                 ],
47238                                 [
47239                                     -99.047645,
47240                                     26.406968
47241                                 ],
47242                                 [
47243                                     -99.066351,
47244                                     26.404746
47245                                 ],
47246                                 [
47247                                     -99.085498,
47248                                     26.40764
47249                                 ],
47250                                 [
47251                                     -99.106427,
47252                                     26.423039
47253                                 ],
47254                                 [
47255                                     -99.108907,
47256                                     26.434253
47257                                 ],
47258                                 [
47259                                     -99.102525,
47260                                     26.446966
47261                                 ],
47262                                 [
47263                                     -99.09374,
47264                                     26.459781
47265                                 ],
47266                                 [
47267                                     -99.089373,
47268                                     26.47115
47269                                 ],
47270                                 [
47271                                     -99.091492,
47272                                     26.484018
47273                                 ],
47274                                 [
47275                                     -99.10299,
47276                                     26.512078
47277                                 ],
47278                                 [
47279                                     -99.115108,
47280                                     26.525617
47281                                 ],
47282                                 [
47283                                     -99.140946,
47284                                     26.531405
47285                                 ],
47286                                 [
47287                                     -99.164873,
47288                                     26.540448
47289                                 ],
47290                                 [
47291                                     -99.17128,
47292                                     26.563961
47293                                 ],
47294                                 [
47295                                     -99.171548,
47296                                     26.56583
47297                                 ],
47298                                 [
47299                                     -99.213953,
47300                                     26.568537
47301                                 ],
47302                                 [
47303                                     -99.242801,
47304                                     26.579723
47305                                 ],
47306                                 [
47307                                     -99.254575,
47308                                     26.6018
47309                                 ],
47310                                 [
47311                                     -99.258844,
47312                                     26.614752
47313                                 ],
47314                                 [
47315                                     -99.277683,
47316                                     26.638007
47317                                 ],
47318                                 [
47319                                     -99.281951,
47320                                     26.649781
47321                                 ],
47322                                 [
47323                                     -99.277389,
47324                                     26.657729
47325                                 ],
47326                                 [
47327                                     -99.26635,
47328                                     26.653314
47329                                 ],
47330                                 [
47331                                     -99.252662,
47332                                     26.644483
47333                                 ],
47334                                 [
47335                                     -99.240299,
47336                                     26.639184
47337                                 ],
47338                                 [
47339                                     -99.244861,
47340                                     26.652431
47341                                 ],
47342                                 [
47343                                     -99.240299,
47344                                     26.697763
47345                                 ],
47346                                 [
47347                                     -99.242507,
47348                                     26.713658
47349                                 ],
47350                                 [
47351                                     -99.252368,
47352                                     26.743683
47353                                 ],
47354                                 [
47355                                     -99.254575,
47356                                     26.75899
47357                                 ],
47358                                 [
47359                                     -99.252368,
47360                                     26.799024
47361                                 ],
47362                                 [
47363                                     -99.254575,
47364                                     26.810504
47365                                 ],
47366                                 [
47367                                     -99.257666,
47368                                     26.813153
47369                                 ],
47370                                 [
47371                                     -99.262229,
47372                                     26.814036
47373                                 ],
47374                                 [
47375                                     -99.266497,
47376                                     26.817863
47377                                 ],
47378                                 [
47379                                     -99.268263,
47380                                     26.827872
47381                                 ],
47382                                 [
47383                                     -99.271649,
47384                                     26.832876
47385                                 ],
47386                                 [
47387                                     -99.289458,
47388                                     26.84465
47389                                 ],
47390                                 [
47391                                     -99.308444,
47392                                     26.830521
47393                                 ],
47394                                 [
47395                                     -99.316539,
47396                                     26.822279
47397                                 ],
47398                                 [
47399                                     -99.323457,
47400                                     26.810504
47401                                 ],
47402                                 [
47403                                     -99.328166,
47404                                     26.797258
47405                                 ],
47406                                 [
47407                                     -99.329197,
47408                                     26.789016
47409                                 ],
47410                                 [
47411                                     -99.331699,
47412                                     26.78254
47413                                 ],
47414                                 [
47415                                     -99.340383,
47416                                     26.77312
47417                                 ],
47418                                 [
47419                                     -99.366728,
47420                                     26.761345
47421                                 ],
47422                                 [
47423                                     -99.380269,
47424                                     26.777241
47425                                 ],
47426                                 [
47427                                     -99.391896,
47428                                     26.796963
47429                                 ],
47430                                 [
47431                                     -99.412207,
47432                                     26.796963
47433                                 ],
47434                                 [
47435                                     -99.410883,
47436                                     26.808149
47437                                 ],
47438                                 [
47439                                     -99.405437,
47440                                     26.818452
47441                                 ],
47442                                 [
47443                                     -99.396606,
47444                                     26.824928
47445                                 ],
47446                                 [
47447                                     -99.384979,
47448                                     26.824928
47449                                 ],
47450                                 [
47451                                     -99.377178,
47452                                     26.816686
47453                                 ],
47454                                 [
47455                                     -99.374823,
47456                                     26.804028
47457                                 ],
47458                                 [
47459                                     -99.374234,
47460                                     26.791076
47461                                 ],
47462                                 [
47463                                     -99.371291,
47464                                     26.783128
47465                                 ],
47466                                 [
47467                                     -99.360694,
47468                                     26.780479
47469                                 ],
47470                                 [
47471                                     -99.359369,
47472                                     26.790487
47473                                 ],
47474                                 [
47475                                     -99.36452,
47476                                     26.810504
47477                                 ],
47478                                 [
47479                                     -99.357897,
47480                                     26.822279
47481                                 ],
47482                                 [
47483                                     -99.351274,
47484                                     26.83111
47485                                 ],
47486                                 [
47487                                     -99.346123,
47488                                     26.840824
47489                                 ],
47490                                 [
47491                                     -99.344062,
47492                                     26.855247
47493                                 ],
47494                                 [
47495                                     -99.348772,
47496                                     26.899696
47497                                 ],
47498                                 [
47499                                     -99.355101,
47500                                     26.920302
47501                                 ],
47502                                 [
47503                                     -99.36452,
47504                                     26.934726
47505                                 ],
47506                                 [
47507                                     -99.403377,
47508                                     26.952093
47509                                 ],
47510                                 [
47511                                     -99.413974,
47512                                     26.964162
47513                                 ],
47514                                 [
47515                                     -99.401758,
47516                                     26.985651
47517                                 ],
47518                                 [
47519                                     -99.399991,
47520                                     26.999192
47521                                 ],
47522                                 [
47523                                     -99.418831,
47524                                     27.007728
47525                                 ],
47526                                 [
47527                                     -99.441938,
47528                                     27.013615
47529                                 ],
47530                                 [
47531                                     -99.453271,
47532                                     27.019797
47533                                 ],
47534                                 [
47535                                     -99.455332,
47536                                     27.025979
47537                                 ],
47538                                 [
47539                                     -99.464751,
47540                                     27.039225
47541                                 ],
47542                                 [
47543                                     -99.466959,
47544                                     27.047467
47545                                 ],
47546                                 [
47547                                     -99.462544,
47548                                     27.057181
47549                                 ],
47550                                 [
47551                                     -99.461635,
47552                                     27.056839
47553                                 ],
47554                                 [
47555                                     -99.461728,
47556                                     27.056954
47557                                 ],
47558                                 [
47559                                     -99.442039,
47560                                     27.089614
47561                                 ],
47562                                 [
47563                                     -99.439404,
47564                                     27.098347
47565                                 ],
47566                                 [
47567                                     -99.441419,
47568                                     27.107494
47569                                 ],
47570                                 [
47571                                     -99.445734,
47572                                     27.114728
47573                                 ],
47574                                 [
47575                                     -99.450178,
47576                                     27.120465
47577                                 ],
47578                                 [
47579                                     -99.452452,
47580                                     27.125012
47581                                 ],
47582                                 [
47583                                     -99.450333,
47584                                     27.145166
47585                                 ],
47586                                 [
47587                                     -99.435786,
47588                                     27.188419
47589                                 ],
47590                                 [
47591                                     -99.431988,
47592                                     27.207591
47593                                 ],
47594                                 [
47595                                     -99.434029,
47596                                     27.22697
47597                                 ],
47598                                 [
47599                                     -99.440902,
47600                                     27.244798
47601                                 ],
47602                                 [
47603                                     -99.451832,
47604                                     27.26118
47605                                 ],
47606                                 [
47607                                     -99.46612,
47608                                     27.276527
47609                                 ],
47610                                 [
47611                                     -99.468963,
47612                                     27.278233
47613                                 ],
47614                                 [
47615                                     -99.480409,
47616                                     27.283297
47617                                 ],
47618                                 [
47619                                     -99.482941,
47620                                     27.286708
47621                                 ],
47622                                 [
47623                                     -99.484879,
47624                                     27.294821
47625                                 ],
47626                                 [
47627                                     -99.486584,
47628                                     27.297611
47629                                 ],
47630                                 [
47631                                     -99.493199,
47632                                     27.30128
47633                                 ],
47634                                 [
47635                                     -99.521362,
47636                                     27.311254
47637                                 ],
47638                                 [
47639                                     -99.5148,
47640                                     27.321796
47641                                 ],
47642                                 [
47643                                     -99.497591,
47644                                     27.338798
47645                                 ],
47646                                 [
47647                                     -99.494026,
47648                                     27.348203
47649                                 ],
47650                                 [
47651                                     -99.492889,
47652                                     27.358848
47653                                 ],
47654                                 [
47655                                     -99.487721,
47656                                     27.37187
47657                                 ],
47658                                 [
47659                                     -99.484621,
47660                                     27.391766
47661                                 ],
47662                                 [
47663                                     -99.475706,
47664                                     27.414762
47665                                 ],
47666                                 [
47667                                     -99.472916,
47668                                     27.426647
47669                                 ],
47670                                 [
47671                                     -99.473639,
47672                                     27.463803
47673                                 ],
47674                                 [
47675                                     -99.472916,
47676                                     27.468299
47677                                 ],
47678                                 [
47679                                     -99.47643,
47680                                     27.48251
47681                                 ],
47682                                 [
47683                                     -99.480409,
47684                                     27.490778
47685                                 ],
47686                                 [
47687                                     -99.48829,
47688                                     27.494654
47689                                 ],
47690                                 [
47691                                     -99.503689,
47692                                     27.495584
47693                                 ],
47694                                 [
47695                                     -99.509503,
47696                                     27.500028
47697                                 ],
47698                                 [
47699                                     -99.510071,
47700                                     27.510518
47701                                 ],
47702                                 [
47703                                     -99.507074,
47704                                     27.533437
47705                                 ],
47706                                 [
47707                                     -99.507203,
47708                                     27.57377
47709                                 ],
47710                                 [
47711                                     -99.515006,
47712                                     27.588601
47713                                 ],
47714                                 [
47715                                     -99.535031,
47716                                     27.604828
47717                                 ],
47718                                 [
47719                                     -99.55503,
47720                                     27.613509
47721                                 ],
47722                                 [
47723                                     -99.572264,
47724                                     27.61847
47725                                 ],
47726                                 [
47727                                     -99.578232,
47728                                     27.622811
47729                                 ],
47730                                 [
47731                                     -99.590247,
47732                                     27.642061
47733                                 ],
47734                                 [
47735                                     -99.600169,
47736                                     27.646427
47737                                 ],
47738                                 [
47739                                     -99.612442,
47740                                     27.643637
47741                                 ],
47742                                 [
47743                                     -99.633526,
47744                                     27.633069
47745                                 ],
47746                                 [
47747                                     -99.644869,
47748                                     27.632733
47749                                 ],
47750                                 [
47751                                     -99.648642,
47752                                     27.636919
47753                                 ],
47754                                 [
47755                                     -99.658693,
47756                                     27.654024
47757                                 ],
47758                                 [
47759                                     -99.664739,
47760                                     27.659398
47761                                 ],
47762                                 [
47763                                     -99.70037,
47764                                     27.659191
47765                                 ],
47766                                 [
47767                                     -99.705692,
47768                                     27.66317
47769                                 ],
47770                                 [
47771                                     -99.710674,
47772                                     27.670116
47773                                 ],
47774                                 [
47775                                     -99.723056,
47776                                     27.687381
47777                                 ],
47778                                 [
47779                                     -99.730652,
47780                                     27.691825
47781                                 ],
47782                                 [
47783                                     -99.734037,
47784                                     27.702031
47785                                 ],
47786                                 [
47787                                     -99.736311,
47788                                     27.713607
47789                                 ],
47790                                 [
47791                                     -99.740445,
47792                                     27.722159
47793                                 ],
47794                                 [
47795                                     -99.747344,
47796                                     27.726009
47797                                 ],
47798                                 [
47799                                     -99.765198,
47800                                     27.731177
47801                                 ],
47802                                 [
47803                                     -99.774577,
47804                                     27.735828
47805                                 ],
47806                                 [
47807                                     -99.78685,
47808                                     27.748488
47809                                 ],
47810                                 [
47811                                     -99.795428,
47812                                     27.761924
47813                                 ],
47814                                 [
47815                                     -99.806963,
47816                                     27.771423
47817                                 ],
47818                                 [
47819                                     -99.808167,
47820                                     27.772414
47821                                 ],
47822                                 [
47823                                     -99.83292,
47824                                     27.776755
47825                                 ],
47826                                 [
47827                                     -99.832971,
47828                                     27.782181
47829                                 ],
47830                                 [
47831                                     -99.844779,
47832                                     27.793576
47833                                 ],
47834                                 [
47835                                     -99.858241,
47836                                     27.803524
47837                                 ],
47838                                 [
47839                                     -99.863357,
47840                                     27.804661
47841                                 ],
47842                                 [
47843                                     -99.864727,
47844                                     27.814324
47845                                 ],
47846                                 [
47847                                     -99.861858,
47848                                     27.83608
47849                                 ],
47850                                 [
47851                                     -99.863357,
47852                                     27.845666
47853                                 ],
47854                                 [
47855                                     -99.870928,
47856                                     27.854477
47857                                 ],
47858                                 [
47859                                     -99.880204,
47860                                     27.859231
47861                                 ],
47862                                 [
47863                                     -99.888007,
47864                                     27.864812
47865                                 ],
47866                                 [
47867                                     -99.891288,
47868                                     27.876026
47869                                 ],
47870                                 [
47871                                     -99.882684,
47872                                     27.89158
47873                                 ],
47874                                 [
47875                                     -99.878808,
47876                                     27.901838
47877                                 ],
47878                                 [
47879                                     -99.88134,
47880                                     27.906463
47881                                 ],
47882                                 [
47883                                     -99.896766,
47884                                     27.912923
47885                                 ],
47886                                 [
47887                                     -99.914336,
47888                                     27.928245
47889                                 ],
47890                                 [
47891                                     -99.929916,
47892                                     27.946331
47893                                 ],
47894                                 [
47895                                     -99.939683,
47896                                     27.961085
47897                                 ],
47898                                 [
47899                                     -99.928289,
47900                                     27.975761
47901                                 ],
47902                                 [
47903                                     -99.940717,
47904                                     27.983254
47905                                 ],
47906                                 [
47907                                     -99.961852,
47908                                     27.987492
47909                                 ],
47910                                 [
47911                                     -99.976606,
47912                                     27.992453
47913                                 ],
47914                                 [
47915                                     -99.991127,
47916                                     28.007801
47917                                 ],
47918                                 [
47919                                     -100.000584,
47920                                     28.02041
47921                                 ],
47922                                 [
47923                                     -100.007457,
47924                                     28.033561
47925                                 ],
47926                                 [
47927                                     -100.014123,
47928                                     28.050459
47929                                 ],
47930                                 [
47931                                     -100.013503,
47932                                     28.056971
47933                                 ],
47934                                 [
47935                                     -100.010506,
47936                                     28.063611
47937                                 ],
47938                                 [
47939                                     -100.010196,
47940                                     28.068882
47941                                 ],
47942                                 [
47943                                     -100.017585,
47944                                     28.070949
47945                                 ],
47946                                 [
47947                                     -100.031538,
47948                                     28.081801
47949                                 ],
47950                                 [
47951                                     -100.045077,
47952                                     28.095289
47953                                 ],
47954                                 [
47955                                     -100.048023,
47956                                     28.102523
47957                                 ],
47958                                 [
47959                                     -100.048901,
47960                                     28.115959
47961                                 ],
47962                                 [
47963                                     -100.056498,
47964                                     28.137922
47965                                 ],
47966                                 [
47967                                     -100.074895,
47968                                     28.154407
47969                                 ],
47970                                 [
47971                                     -100.172873,
47972                                     28.198538
47973                                 ],
47974                                 [
47975                                     -100.189203,
47976                                     28.201329
47977                                 ],
47978                                 [
47979                                     -100.197626,
47980                                     28.207168
47981                                 ],
47982                                 [
47983                                     -100.201192,
47984                                     28.220346
47985                                 ],
47986                                 [
47987                                     -100.202949,
47988                                     28.234428
47989                                 ],
47990                                 [
47991                                     -100.205946,
47992                                     28.242877
47993                                 ],
47994                                 [
47995                                     -100.212819,
47996                                     28.245073
47997                                 ],
47998                                 [
47999                                     -100.240724,
48000                                     28.249698
48001                                 ],
48002                                 [
48003                                     -100.257932,
48004                                     28.260524
48005                                 ],
48006                                 [
48007                                     -100.275089,
48008                                     28.277242
48009                                 ],
48010                                 [
48011                                     -100.284339,
48012                                     28.296517
48013                                 ],
48014                                 [
48015                                     -100.277931,
48016                                     28.314888
48017                                 ],
48018                                 [
48019                                     -100.278551,
48020                                     28.331088
48021                                 ],
48022                                 [
48023                                     -100.293899,
48024                                     28.353413
48025                                 ],
48026                                 [
48027                                     -100.322631,
48028                                     28.386899
48029                                 ],
48030                                 [
48031                                     -100.331675,
48032                                     28.422013
48033                                 ],
48034                                 [
48035                                     -100.336326,
48036                                     28.458574
48037                                 ],
48038                                 [
48039                                     -100.340201,
48040                                     28.464259
48041                                 ],
48042                                 [
48043                                     -100.348315,
48044                                     28.470253
48045                                 ],
48046                                 [
48047                                     -100.355549,
48048                                     28.478185
48049                                 ],
48050                                 [
48051                                     -100.35679,
48052                                     28.489322
48053                                 ],
48054                                 [
48055                                     -100.351622,
48056                                     28.496711
48057                                 ],
48058                                 [
48059                                     -100.322631,
48060                                     28.510406
48061                                 ],
48062                                 [
48063                                     -100.364024,
48064                                     28.524797
48065                                 ],
48066                                 [
48067                                     -100.38423,
48068                                     28.537174
48069                                 ],
48070                                 [
48071                                     -100.397769,
48072                                     28.557586
48073                                 ],
48074                                 [
48075                                     -100.398751,
48076                                     28.568645
48077                                 ],
48078                                 [
48079                                     -100.397097,
48080                                     28.592726
48081                                 ],
48082                                 [
48083                                     -100.401438,
48084                                     28.60226
48085                                 ],
48086                                 [
48087                                     -100.411463,
48088                                     28.609314
48089                                 ],
48090                                 [
48091                                     -100.434821,
48092                                     28.619133
48093                                 ],
48094                                 [
48095                                     -100.44619,
48096                                     28.626497
48097                                 ],
48098                                 [
48099                                     -100.444898,
48100                                     28.643782
48101                                 ],
48102                                 [
48103                                     -100.481381,
48104                                     28.686054
48105                                 ],
48106                                 [
48107                                     -100.493939,
48108                                     28.708378
48109                                 ],
48110                                 [
48111                                     -100.519054,
48112                                     28.804961
48113                                 ],
48114                                 [
48115                                     -100.524996,
48116                                     28.814831
48117                                 ],
48118                                 [
48119                                     -100.529285,
48120                                     28.819947
48121                                 ],
48122                                 [
48123                                     -100.534453,
48124                                     28.830231
48125                                 ],
48126                                 [
48127                                     -100.538639,
48128                                     28.835631
48129                                 ],
48130                                 [
48131                                     -100.54515,
48132                                     28.83899
48133                                 ],
48134                                 [
48135                                     -100.559671,
48136                                     28.839378
48137                                 ],
48138                                 [
48139                                     -100.566234,
48140                                     28.842504
48141                                 ],
48142                                 [
48143                                     -100.569696,
48144                                     28.84961
48145                                 ],
48146                                 [
48147                                     -100.56334,
48148                                     28.86209
48149                                 ],
48150                                 [
48151                                     -100.566234,
48152                                     28.869789
48153                                 ],
48154                                 [
48155                                     -100.571763,
48156                                     28.8732
48157                                 ],
48158                                 [
48159                                     -100.586543,
48160                                     28.879789
48161                                 ],
48162                                 [
48163                                     -100.58954,
48164                                     28.883458
48165                                 ],
48166                                 [
48167                                     -100.594966,
48168                                     28.899322
48169                                 ],
48170                                 [
48171                                     -100.606955,
48172                                     28.910123
48173                                 ],
48174                                 [
48175                                     -100.618841,
48176                                     28.917926
48177                                 ],
48178                                 [
48179                                     -100.624318,
48180                                     28.924721
48181                                 ],
48182                                 [
48183                                     -100.624783,
48184                                     28.93777
48185                                 ],
48186                                 [
48187                                     -100.626696,
48188                                     28.948338
48189                                 ],
48190                                 [
48191                                     -100.630778,
48192                                     28.956683
48193                                 ],
48194                                 [
48195                                     -100.637909,
48196                                     28.962884
48197                                 ],
48198                                 [
48199                                     -100.628918,
48200                                     28.98433
48201                                 ],
48202                                 [
48203                                     -100.632793,
48204                                     29.005156
48205                                 ],
48206                                 [
48207                                     -100.652224,
48208                                     29.044817
48209                                 ],
48210                                 [
48211                                     -100.660854,
48212                                     29.102669
48213                                 ],
48214                                 [
48215                                     -100.668967,
48216                                     29.116208
48217                                 ],
48218                                 [
48219                                     -100.678165,
48220                                     29.119412
48221                                 ],
48222                                 [
48223                                     -100.690826,
48224                                     29.121014
48225                                 ],
48226                                 [
48227                                     -100.70204,
48228                                     29.12365
48229                                 ],
48230                                 [
48231                                     -100.706846,
48232                                     29.130187
48233                                 ],
48234                                 [
48235                                     -100.70974,
48236                                     29.135561
48237                                 ],
48238                                 [
48239                                     -100.762501,
48240                                     29.173776
48241                                 ],
48242                                 [
48243                                     -100.770098,
48244                                     29.187289
48245                                 ],
48246                                 [
48247                                     -100.762088,
48248                                     29.208658
48249                                 ],
48250                                 [
48251                                     -100.783172,
48252                                     29.243074
48253                                 ],
48254                                 [
48255                                     -100.796143,
48256                                     29.257673
48257                                 ],
48258                                 [
48259                                     -100.81609,
48260                                     29.270773
48261                                 ],
48262                                 [
48263                                     -100.86389,
48264                                     29.290616
48265                                 ],
48266                                 [
48267                                     -100.871797,
48268                                     29.296456
48269                                 ],
48270                                 [
48271                                     -100.891227,
48272                                     29.318547
48273                                 ],
48274                                 [
48275                                     -100.91474,
48276                                     29.337048
48277                                 ],
48278                                 [
48279                                     -100.987397,
48280                                     29.366322
48281                                 ],
48282                                 [
48283                                     -100.998301,
48284                                     29.372472
48285                                 ],
48286                                 [
48287                                     -101.008068,
48288                                     29.380585
48289                                 ],
48290                                 [
48291                                     -101.016232,
48292                                     29.390068
48293                                 ],
48294                                 [
48295                                     -101.022175,
48296                                     29.40048
48297                                 ],
48298                                 [
48299                                     -101.025948,
48300                                     29.414356
48301                                 ],
48302                                 [
48303                                     -101.029617,
48304                                     29.442984
48305                                 ],
48306                                 [
48307                                     -101.037782,
48308                                     29.460063
48309                                 ],
48310                                 [
48311                                     -101.039026,
48312                                     29.460452
48313                                 ],
48314                                 [
48315                                     -101.040188,
48316                                     29.457132
48317                                 ],
48318                                 [
48319                                     -101.045487,
48320                                     29.451245
48321                                 ],
48322                                 [
48323                                     -101.060205,
48324                                     29.449184
48325                                 ],
48326                                 [
48327                                     -101.067711,
48328                                     29.45095
48329                                 ],
48330                                 [
48331                                     -101.076101,
48332                                     29.453894
48333                                 ],
48334                                 [
48335                                     -101.085962,
48336                                     29.454483
48337                                 ],
48338                                 [
48339                                     -101.098031,
48340                                     29.449184
48341                                 ],
48342                                 [
48343                                     -101.113043,
48344                                     29.466552
48345                                 ],
48346                                 [
48347                                     -101.142774,
48348                                     29.475383
48349                                 ],
48350                                 [
48351                                     -101.174124,
48352                                     29.475971
48353                                 ],
48354                                 [
48355                                     -101.193699,
48356                                     29.469495
48357                                 ],
48358                                 [
48359                                     -101.198703,
48360                                     29.473911
48361                                 ],
48362                                 [
48363                                     -101.198851,
48364                                     29.476854
48365                                 ],
48366                                 [
48367                                     -101.184132,
48368                                     29.497754
48369                                 ],
48370                                 [
48371                                     -101.184868,
48372                                     29.512767
48373                                 ],
48374                                 [
48375                                     -101.195171,
48376                                     29.521892
48377                                 ],
48378                                 [
48379                                     -101.214157,
48380                                     29.518065
48381                                 ],
48382                                 [
48383                                     -101.245213,
48384                                     29.493044
48385                                 ],
48386                                 [
48387                                     -101.265818,
48388                                     29.487157
48389                                 ],
48390                                 [
48391                                     -101.290545,
48392                                     29.49746
48393                                 ],
48394                                 [
48395                                     -101.297315,
48396                                     29.503936
48397                                 ],
48398                                 [
48399                                     -101.300995,
48400                                     29.512767
48401                                 ],
48402                                 [
48403                                     -101.294372,
48404                                     29.520715
48405                                 ],
48406                                 [
48407                                     -101.273177,
48408                                     29.524247
48409                                 ],
48410                                 [
48411                                     -101.259195,
48412                                     29.533372
48413                                 ],
48414                                 [
48415                                     -101.243888,
48416                                     29.554861
48417                                 ],
48418                                 [
48419                                     -101.231966,
48420                                     29.580176
48421                                 ],
48422                                 [
48423                                     -101.227845,
48424                                     29.599899
48425                                 ],
48426                                 [
48427                                     -101.239178,
48428                                     29.616677
48429                                 ],
48430                                 [
48431                                     -101.26052,
48432                                     29.613439
48433                                 ],
48434                                 [
48435                                     -101.281272,
48436                                     29.597249
48437                                 ],
48438                                 [
48439                                     -101.290545,
48440                                     29.575761
48441                                 ],
48442                                 [
48443                                     -101.295255,
48444                                     29.570168
48445                                 ],
48446                                 [
48447                                     -101.306146,
48448                                     29.574583
48449                                 ],
48450                                 [
48451                                     -101.317626,
48452                                     29.584003
48453                                 ],
48454                                 [
48455                                     -101.323955,
48456                                     29.592539
48457                                 ],
48458                                 [
48459                                     -101.323661,
48460                                     29.603137
48461                                 ],
48462                                 [
48463                                     -101.318804,
48464                                     29.616383
48465                                 ],
48466                                 [
48467                                     -101.311445,
48468                                     29.628158
48469                                 ],
48470                                 [
48471                                     -101.303497,
48472                                     29.634045
48473                                 ],
48474                                 [
48475                                     -101.303669,
48476                                     29.631411
48477                                 ],
48478                                 [
48479                                     -101.302727,
48480                                     29.633851
48481                                 ],
48482                                 [
48483                                     -101.301073,
48484                                     29.649509
48485                                 ],
48486                                 [
48487                                     -101.30978,
48488                                     29.654548
48489                                 ],
48490                                 [
48491                                     -101.336239,
48492                                     29.654315
48493                                 ],
48494                                 [
48495                                     -101.349029,
48496                                     29.660103
48497                                 ],
48498                                 [
48499                                     -101.357684,
48500                                     29.667441
48501                                 ],
48502                                 [
48503                                     -101.364351,
48504                                     29.676665
48505                                 ],
48506                                 [
48507                                     -101.376624,
48508                                     29.700643
48509                                 ],
48510                                 [
48511                                     -101.383368,
48512                                     29.718497
48513                                 ],
48514                                 [
48515                                     -101.39962,
48516                                     29.740718
48517                                 ],
48518                                 [
48519                                     -101.406545,
48520                                     29.752888
48521                                 ],
48522                                 [
48523                                     -101.409309,
48524                                     29.765781
48525                                 ],
48526                                 [
48527                                     -101.405098,
48528                                     29.778442
48529                                 ],
48530                                 [
48531                                     -101.414012,
48532                                     29.774411
48533                                 ],
48534                                 [
48535                                     -101.424218,
48536                                     29.771414
48537                                 ],
48538                                 [
48539                                     -101.435096,
48540                                     29.770122
48541                                 ],
48542                                 [
48543                                     -101.446103,
48544                                     29.771052
48545                                 ],
48546                                 [
48547                                     -101.455689,
48548                                     29.77591
48549                                 ],
48550                                 [
48551                                     -101.462433,
48552                                     29.788932
48553                                 ],
48554                                 [
48555                                     -101.470908,
48556                                     29.791516
48557                                 ],
48558                                 [
48559                                     -101.490286,
48560                                     29.785547
48561                                 ],
48562                                 [
48563                                     -101.505763,
48564                                     29.773894
48565                                 ],
48566                                 [
48567                                     -101.521809,
48568                                     29.765936
48569                                 ],
48570                                 [
48571                                     -101.542893,
48572                                     29.771052
48573                                 ],
48574                                 [
48575                                     -101.539689,
48576                                     29.779191
48577                                 ],
48578                                 [
48579                                     -101.530516,
48580                                     29.796477
48581                                 ],
48582                                 [
48583                                     -101.528604,
48584                                     29.801438
48585                                 ],
48586                                 [
48587                                     -101.531912,
48588                                     29.811101
48589                                 ],
48590                                 [
48591                                     -101.539172,
48592                                     29.817974
48593                                 ],
48594                                 [
48595                                     -101.546458,
48596                                     29.820145
48597                                 ],
48598                                 [
48599                                     -101.549766,
48600                                     29.815701
48601                                 ],
48602                                 [
48603                                     -101.553977,
48604                                     29.796684
48605                                 ],
48606                                 [
48607                                     -101.564907,
48608                                     29.786478
48609                                 ],
48610                                 [
48611                                     -101.580281,
48612                                     29.781568
48613                                 ],
48614                                 [
48615                                     -101.632216,
48616                                     29.775651
48617                                 ],
48618                                 [
48619                                     -101.794531,
48620                                     29.795857
48621                                 ],
48622                                 [
48623                                     -101.80298,
48624                                     29.801438
48625                                 ],
48626                                 [
48627                                     -101.805978,
48628                                     29.811928
48629                                 ],
48630                                 [
48631                                     -101.812695,
48632                                     29.812032
48633                                 ],
48634                                 [
48635                                     -101.82409,
48636                                     29.805184
48637                                 ],
48638                                 [
48639                                     -101.857602,
48640                                     29.805184
48641                                 ],
48642                                 [
48643                                     -101.877524,
48644                                     29.810843
48645                                 ],
48646                                 [
48647                                     -101.88742,
48648                                     29.81229
48649                                 ],
48650                                 [
48651                                     -101.895455,
48652                                     29.808621
48653                                 ],
48654                                 [
48655                                     -101.90238,
48656                                     29.803247
48657                                 ],
48658                                 [
48659                                     -101.910881,
48660                                     29.799888
48661                                 ],
48662                                 [
48663                                     -101.920157,
48664                                     29.798182
48665                                 ],
48666                                 [
48667                                     -101.929613,
48668                                     29.797717
48669                                 ],
48670                                 [
48671                                     -101.942662,
48672                                     29.803608
48673                                 ],
48674                                 [
48675                                     -101.957054,
48676                                     29.814047
48677                                 ],
48678                                 [
48679                                     -101.972246,
48680                                     29.818181
48681                                 ],
48682                                 [
48683                                     -101.98793,
48684                                     29.805184
48685                                 ],
48686                                 [
48687                                     -102.014595,
48688                                     29.810998
48689                                 ],
48690                                 [
48691                                     -102.109344,
48692                                     29.80211
48693                                 ],
48694                                 [
48695                                     -102.145647,
48696                                     29.815701
48697                                 ],
48698                                 [
48699                                     -102.157248,
48700                                     29.824537
48701                                 ],
48702                                 [
48703                                     -102.203679,
48704                                     29.846138
48705                                 ],
48706                                 [
48707                                     -102.239775,
48708                                     29.849135
48709                                 ],
48710                                 [
48711                                     -102.253444,
48712                                     29.855285
48713                                 ],
48714                                 [
48715                                     -102.258276,
48716                                     29.873475
48717                                 ],
48718                                 [
48719                                     -102.276181,
48720                                     29.869547
48721                                 ],
48722                                 [
48723                                     -102.289023,
48724                                     29.878126
48725                                 ],
48726                                 [
48727                                     -102.302175,
48728                                     29.889391
48729                                 ],
48730                                 [
48731                                     -102.321011,
48732                                     29.893939
48733                                 ],
48734                                 [
48735                                     -102.330235,
48736                                     29.888926
48737                                 ],
48738                                 [
48739                                     -102.339769,
48740                                     29.870633
48741                                 ],
48742                                 [
48743                                     -102.351061,
48744                                     29.866602
48745                                 ],
48746                                 [
48747                                     -102.36323,
48748                                     29.864276
48749                                 ],
48750                                 [
48751                                     -102.370723,
48752                                     29.857765
48753                                 ],
48754                                 [
48755                                     -102.374547,
48756                                     29.848102
48757                                 ],
48758                                 [
48759                                     -102.376589,
48760                                     29.821488
48761                                 ],
48762                                 [
48763                                     -102.380051,
48764                                     29.811386
48765                                 ],
48766                                 [
48767                                     -102.404132,
48768                                     29.780793
48769                                 ],
48770                                 [
48771                                     -102.406096,
48772                                     29.777279
48773                                 ],
48774                                 [
48775                                     -102.515288,
48776                                     29.784721
48777                                 ],
48778                                 [
48779                                     -102.523066,
48780                                     29.782318
48781                                 ],
48782                                 [
48783                                     -102.531127,
48784                                     29.769915
48785                                 ],
48786                                 [
48787                                     -102.54154,
48788                                     29.762474
48789                                 ],
48790                                 [
48791                                     -102.543349,
48792                                     29.760123
48793                                 ],
48794                                 [
48795                                     -102.546578,
48796                                     29.757875
48797                                 ],
48798                                 [
48799                                     -102.553141,
48800                                     29.756738
48801                                 ],
48802                                 [
48803                                     -102.558309,
48804                                     29.759089
48805                                 ],
48806                                 [
48807                                     -102.562882,
48808                                     29.769347
48809                                 ],
48810                                 [
48811                                     -102.566758,
48812                                     29.771052
48813                                 ],
48814                                 [
48815                                     -102.58531,
48816                                     29.764696
48817                                 ],
48818                                 [
48819                                     -102.621225,
48820                                     29.747281
48821                                 ],
48822                                 [
48823                                     -102.638743,
48824                                     29.743715
48825                                 ],
48826                                 [
48827                                     -102.676054,
48828                                     29.74449
48829                                 ],
48830                                 [
48831                                     -102.683469,
48832                                     29.743715
48833                                 ],
48834                                 [
48835                                     -102.69104,
48836                                     29.736817
48837                                 ],
48838                                 [
48839                                     -102.693624,
48840                                     29.729401
48841                                 ],
48842                                 [
48843                                     -102.694709,
48844                                     29.720616
48845                                 ],
48846                                 [
48847                                     -102.697758,
48848                                     29.709557
48849                                 ],
48850                                 [
48851                                     -102.726748,
48852                                     29.664495
48853                                 ],
48854                                 [
48855                                     -102.73127,
48856                                     29.650594
48857                                 ],
48858                                 [
48859                                     -102.735507,
48860                                     29.649509
48861                                 ],
48862                                 [
48863                                     -102.751656,
48864                                     29.622457
48865                                 ],
48866                                 [
48867                                     -102.75176,
48868                                     29.620157
48869                                 ],
48870                                 [
48871                                     -102.761346,
48872                                     29.603414
48873                                 ],
48874                                 [
48875                                     -102.767598,
48876                                     29.59729
48877                                 ],
48878                                 [
48879                                     -102.779665,
48880                                     29.592303
48881                                 ],
48882                                 [
48883                                     -102.774084,
48884                                     29.579617
48885                                 ],
48886                                 [
48887                                     -102.776461,
48888                                     29.575948
48889                                 ],
48890                                 [
48891                                     -102.785892,
48892                                     29.571814
48893                                 ],
48894                                 [
48895                                     -102.78075,
48896                                     29.558249
48897                                 ],
48898                                 [
48899                                     -102.786512,
48900                                     29.550497
48901                                 ],
48902                                 [
48903                                     -102.795478,
48904                                     29.54427
48905                                 ],
48906                                 [
48907                                     -102.827311,
48908                                     29.470502
48909                                 ],
48910                                 [
48911                                     -102.833951,
48912                                     29.461355
48913                                 ],
48914                                 [
48915                                     -102.839067,
48916                                     29.45195
48917                                 ],
48918                                 [
48919                                     -102.841134,
48920                                     29.438308
48921                                 ],
48922                                 [
48923                                     -102.838705,
48924                                     29.426939
48925                                 ],
48926                                 [
48927                                     -102.834984,
48928                                     29.415699
48929                                 ],
48930                                 [
48931                                     -102.835191,
48932                                     29.403839
48933                                 ],
48934                                 [
48935                                     -102.844545,
48936                                     29.390533
48937                                 ],
48938                                 [
48939                                     -102.845578,
48940                                     29.384719
48941                                 ],
48942                                 [
48943                                     -102.838033,
48944                                     29.370534
48945                                 ],
48946                                 [
48947                                     -102.837672,
48948                                     29.366322
48949                                 ],
48950                                 [
48951                                     -102.84656,
48952                                     29.361749
48953                                 ],
48954                                 [
48955                                     -102.853872,
48956                                     29.361
48957                                 ],
48958                                 [
48959                                     -102.859867,
48960                                     29.361155
48961                                 ],
48962                                 [
48963                                     -102.864957,
48964                                     29.359527
48965                                 ],
48966                                 [
48967                                     -102.876972,
48968                                     29.350871
48969                                 ],
48970                                 [
48971                                     -102.883069,
48972                                     29.343766
48973                                 ],
48974                                 [
48975                                     -102.885188,
48976                                     29.333379
48977                                 ],
48978                                 [
48979                                     -102.885498,
48980                                     29.314801
48981                                 ],
48982                                 [
48983                                     -102.899399,
48984                                     29.276095
48985                                 ],
48986                                 [
48987                                     -102.899709,
48988                                     29.2639
48989                                 ],
48990                                 [
48991                                     -102.892139,
48992                                     29.254391
48993                                 ],
48994                                 [
48995                                     -102.867954,
48996                                     29.240387
48997                                 ],
48998                                 [
48999                                     -102.858781,
49000                                     29.229147
49001                                 ],
49002                                 [
49003                                     -102.869866,
49004                                     29.224781
49005                                 ],
49006                                 [
49007                                     -102.896893,
49008                                     29.220285
49009                                 ],
49010                                 [
49011                                     -102.942265,
49012                                     29.190209
49013                                 ],
49014                                 [
49015                                     -102.947536,
49016                                     29.182018
49017                                 ],
49018                                 [
49019                                     -102.969757,
49020                                     29.192845
49021                                 ],
49022                                 [
49023                                     -102.988386,
49024                                     29.177135
49025                                 ],
49026                                 [
49027                                     -103.015826,
49028                                     29.126776
49029                                 ],
49030                                 [
49031                                     -103.024275,
49032                                     29.116157
49033                                 ],
49034                                 [
49035                                     -103.032621,
49036                                     29.110214
49037                                 ],
49038                                 [
49039                                     -103.072541,
49040                                     29.091404
49041                                 ],
49042                                 [
49043                                     -103.080758,
49044                                     29.085203
49045                                 ],
49046                                 [
49047                                     -103.085589,
49048                                     29.07572
49049                                 ],
49050                                 [
49051                                     -103.091532,
49052                                     29.057866
49053                                 ],
49054                                 [
49055                                     -103.095356,
49056                                     29.060294
49057                                 ],
49058                                 [
49059                                     -103.104684,
49060                                     29.057866
49061                                 ],
49062                                 [
49063                                     -103.109205,
49064                                     29.023372
49065                                 ],
49066                                 [
49067                                     -103.122771,
49068                                     28.996474
49069                                 ],
49070                                 [
49071                                     -103.147989,
49072                                     28.985105
49073                                 ],
49074                                 [
49075                                     -103.187108,
49076                                     28.990221
49077                                 ],
49078                                 [
49079                                     -103.241756,
49080                                     29.003502
49081                                 ],
49082                                 [
49083                                     -103.301545,
49084                                     29.002365
49085                                 ],
49086                                 [
49087                                     -103.316247,
49088                                     29.010065
49089                                 ],
49090                                 [
49091                                     -103.311514,
49092                                     29.026043
49093                                 ],
49094                                 [
49095                                     -103.309994,
49096                                     29.031175
49097                                 ],
49098                                 [
49099                                     -103.3248,
49100                                     29.026808
49101                                 ],
49102                                 [
49103                                     -103.330484,
49104                                     29.023733
49105                                 ],
49106                                 [
49107                                     -103.342602,
49108                                     29.041226
49109                                 ],
49110                                 [
49111                                     -103.351671,
49112                                     29.039417
49113                                 ],
49114                                 [
49115                                     -103.360534,
49116                                     29.029831
49117                                 ],
49118                                 [
49119                                     -103.372083,
49120                                     29.023733
49121                                 ],
49122                                 [
49123                                     -103.38663,
49124                                     29.028798
49125                                 ],
49126                                 [
49127                                     -103.414639,
49128                                     29.052414
49129                                 ],
49130                                 [
49131                                     -103.423605,
49132                                     29.057866
49133                                 ],
49134                                 [
49135                                     -103.435697,
49136                                     29.061121
49137                                 ],
49138                                 [
49139                                     -103.478537,
49140                                     29.08205
49141                                 ],
49142                                 [
49143                                     -103.529748,
49144                                     29.126776
49145                                 ],
49146                                 [
49147                                     -103.535588,
49148                                     29.135122
49149                                 ],
49150                                 [
49151                                     -103.538223,
49152                                     29.142408
49153                                 ],
49154                                 [
49155                                     -103.541711,
49156                                     29.148816
49157                                 ],
49158                                 [
49159                                     -103.550238,
49160                                     29.154656
49161                                 ],
49162                                 [
49163                                     -103.558015,
49164                                     29.156206
49165                                 ],
49166                                 [
49167                                     -103.58499,
49168                                     29.154656
49169                                 ],
49170                                 [
49171                                     -103.673125,
49172                                     29.173569
49173                                 ],
49174                                 [
49175                                     -103.702477,
49176                                     29.187858
49177                                 ],
49178                                 [
49179                                     -103.749476,
49180                                     29.222972
49181                                 ],
49182                                 [
49183                                     -103.759062,
49184                                     29.226848
49185                                 ],
49186                                 [
49187                                     -103.770767,
49188                                     29.229845
49189                                 ],
49190                                 [
49191                                     -103.777718,
49192                                     29.235297
49193                                 ],
49194                                 [
49195                                     -103.769424,
49196                                     29.257543
49197                                 ],
49198                                 [
49199                                     -103.774229,
49200                                     29.267517
49201                                 ],
49202                                 [
49203                                     -103.78366,
49204                                     29.274803
49205                                 ],
49206                                 [
49207                                     -103.794177,
49208                                     29.277594
49209                                 ],
49210                                 [
49211                                     -103.837038,
49212                                     29.279906
49213                                 ]
49214                             ]
49215                         ],
49216                         [
49217                             [
49218                                 [
49219                                     178.301106,
49220                                     52.056551
49221                                 ],
49222                                 [
49223                                     179.595462,
49224                                     52.142083
49225                                 ],
49226                                 [
49227                                     179.825447,
49228                                     51.992849
49229                                 ],
49230                                 [
49231                                     179.661729,
49232                                     51.485763
49233                                 ],
49234                                 [
49235                                     179.723231,
49236                                     51.459963
49237                                 ],
49238                                 [
49239                                     179.408066,
49240                                     51.209841
49241                                 ],
49242                                 [
49243                                     178.411463,
49244                                     51.523605
49245                                 ],
49246                                 [
49247                                     177.698335,
49248                                     51.877899
49249                                 ],
49250                                 [
49251                                     177.16784,
49252                                     51.581866
49253                                 ],
49254                                 [
49255                                     176.487008,
49256                                     52.175325
49257                                 ],
49258                                 [
49259                                     174.484678,
49260                                     52.08716
49261                                 ],
49262                                 [
49263                                     172.866263,
49264                                     52.207379
49265                                 ],
49266                                 [
49267                                     172.825506,
49268                                     52.716846
49269                                 ],
49270                                 [
49271                                     172.747012,
49272                                     52.654022
49273                                 ],
49274                                 [
49275                                     172.08261,
49276                                     52.952695
49277                                 ],
49278                                 [
49279                                     172.942925,
49280                                     53.183013
49281                                 ],
49282                                 [
49283                                     173.029416,
49284                                     52.993628
49285                                 ],
49286                                 [
49287                                     173.127208,
49288                                     52.99494
49289                                 ],
49290                                 [
49291                                     173.143321,
49292                                     52.990383
49293                                 ],
49294                                 [
49295                                     173.175059,
49296                                     52.971747
49297                                 ],
49298                                 [
49299                                     173.182932,
49300                                     52.968373
49301                                 ],
49302                                 [
49303                                     176.45233,
49304                                     52.628178
49305                                 ],
49306                                 [
49307                                     176.468135,
49308                                     52.488358
49309                                 ],
49310                                 [
49311                                     177.900385,
49312                                     52.488358
49313                                 ],
49314                                 [
49315                                     178.007601,
49316                                     52.179677
49317                                 ],
49318                                 [
49319                                     178.301106,
49320                                     52.056551
49321                                 ]
49322                             ]
49323                         ],
49324                         [
49325                             [
49326                                 [
49327                                     -168.899607,
49328                                     65.747626
49329                                 ],
49330                                 [
49331                                     -168.909861,
49332                                     65.739569
49333                                 ],
49334                                 [
49335                                     -168.926218,
49336                                     65.739895
49337                                 ],
49338                                 [
49339                                     -168.942128,
49340                                     65.74372
49341                                 ],
49342                                 [
49343                                     -168.951731,
49344                                     65.75316
49345                                 ],
49346                                 [
49347                                     -168.942983,
49348                                     65.764716
49349                                 ],
49350                                 [
49351                                     -168.920115,
49352                                     65.768866
49353                                 ],
49354                                 [
49355                                     -168.907908,
49356                                     65.768297
49357                                 ],
49358                                 [
49359                                     -168.902781,
49360                                     65.761542
49361                                 ],
49362                                 [
49363                                     -168.899607,
49364                                     65.747626
49365                                 ]
49366                             ]
49367                         ],
49368                         [
49369                             [
49370                                 [
49371                                     -131.160718,
49372                                     54.787192
49373                                 ],
49374                                 [
49375                                     -132.853508,
49376                                     54.482536
49377                                 ],
49378                                 [
49379                                     -134.77719,
49380                                     54.717786
49381                                 ],
49382                                 [
49383                                     -142.6966,
49384                                     55.845503
49385                                 ],
49386                                 [
49387                                     -142.861997,
49388                                     49.948308
49389                                 ],
49390                                 [
49391                                     -155.675916,
49392                                     51.109976
49393                                 ],
49394                                 [
49395                                     -164.492732,
49396                                     50.603976
49397                                 ],
49398                                 [
49399                                     -164.691217,
49400                                     50.997975
49401                                 ],
49402                                 [
49403                                     -171.246993,
49404                                     49.948308
49405                                 ],
49406                                 [
49407                                     -171.215436,
49408                                     50.576636
49409                                 ],
49410                                 [
49411                                     -173.341669,
49412                                     50.968826
49413                                 ],
49414                                 [
49415                                     -173.362022,
49416                                     51.082198
49417                                 ],
49418                                 [
49419                                     -177.799603,
49420                                     51.272899
49421                                 ],
49422                                 [
49423                                     -179.155463,
49424                                     50.982285
49425                                 ],
49426                                 [
49427                                     -179.476076,
49428                                     52.072632
49429                                 ],
49430                                 [
49431                                     -177.11459,
49432                                     52.248701
49433                                 ],
49434                                 [
49435                                     -177.146284,
49436                                     52.789384
49437                                 ],
49438                                 [
49439                                     -174.777218,
49440                                     52.443779
49441                                 ],
49442                                 [
49443                                     -174.773743,
49444                                     52.685853
49445                                 ],
49446                                 [
49447                                     -173.653194,
49448                                     52.704099
49449                                 ],
49450                                 [
49451                                     -173.790528,
49452                                     53.469081
49453                                 ],
49454                                 [
49455                                     -171.063371,
49456                                     53.604473
49457                                 ],
49458                                 [
49459                                     -170.777733,
49460                                     59.291898
49461                                 ],
49462                                 [
49463                                     -174.324884,
49464                                     60.332184
49465                                 ],
49466                                 [
49467                                     -171.736408,
49468                                     62.68026
49469                                 ],
49470                                 [
49471                                     -172.315705,
49472                                     62.725352
49473                                 ],
49474                                 [
49475                                     -171.995091,
49476                                     63.999658
49477                                 ],
49478                                 [
49479                                     -168.501424,
49480                                     65.565173
49481                                 ],
49482                                 [
49483                                     -168.714145,
49484                                     65.546708
49485                                 ],
49486                                 [
49487                                     -168.853077,
49488                                     68.370871
49489                                 ],
49490                                 [
49491                                     -161.115601,
49492                                     72.416214
49493                                 ],
49494                                 [
49495                                     -146.132257,
49496                                     70.607941
49497                                 ],
49498                                 [
49499                                     -140.692512,
49500                                     69.955349
49501                                 ],
49502                                 [
49503                                     -141.145395,
49504                                     69.671641
49505                                 ],
49506                                 [
49507                                     -141.015207,
49508                                     69.654202
49509                                 ],
49510                                 [
49511                                     -141.006459,
49512                                     69.651272
49513                                 ],
49514                                 [
49515                                     -141.005564,
49516                                     69.650946
49517                                 ],
49518                                 [
49519                                     -141.005549,
49520                                     69.650941
49521                                 ],
49522                                 [
49523                                     -141.005471,
49524                                     69.505164
49525                                 ],
49526                                 [
49527                                     -141.001208,
49528                                     60.466879
49529                                 ],
49530                                 [
49531                                     -141.001156,
49532                                     60.321074
49533                                 ],
49534                                 [
49535                                     -140.994929,
49536                                     60.304382
49537                                 ],
49538                                 [
49539                                     -140.979555,
49540                                     60.295804
49541                                 ],
49542                                 [
49543                                     -140.909146,
49544                                     60.28366
49545                                 ],
49546                                 [
49547                                     -140.768457,
49548                                     60.259269
49549                                 ],
49550                                 [
49551                                     -140.660505,
49552                                     60.24051
49553                                 ],
49554                                 [
49555                                     -140.533743,
49556                                     60.218548
49557                                 ],
49558                                 [
49559                                     -140.518705,
49560                                     60.22387
49561                                 ],
49562                                 [
49563                                     -140.506664,
49564                                     60.236324
49565                                 ],
49566                                 [
49567                                     -140.475323,
49568                                     60.276477
49569                                 ],
49570                                 [
49571                                     -140.462791,
49572                                     60.289138
49573                                 ],
49574                                 [
49575                                     -140.447805,
49576                                     60.29446
49577                                 ],
49578                                 [
49579                                     -140.424111,
49580                                     60.293168
49581                                 ],
49582                                 [
49583                                     -140.32497,
49584                                     60.267537
49585                                 ],
49586                                 [
49587                                     -140.169243,
49588                                     60.227229
49589                                 ],
49590                                 [
49591                                     -140.01579,
49592                                     60.187387
49593                                 ],
49594                                 [
49595                                     -139.967757,
49596                                     60.188369
49597                                 ],
49598                                 [
49599                                     -139.916933,
49600                                     60.207851
49601                                 ],
49602                                 [
49603                                     -139.826318,
49604                                     60.256478
49605                                 ],
49606                                 [
49607                                     -139.728417,
49608                                     60.309033
49609                                 ],
49610                                 [
49611                                     -139.679816,
49612                                     60.32681
49613                                 ],
49614                                 [
49615                                     -139.628346,
49616                                     60.334096
49617                                 ],
49618                                 [
49619                                     -139.517965,
49620                                     60.336732
49621                                 ],
49622                                 [
49623                                     -139.413992,
49624                                     60.339212
49625                                 ],
49626                                 [
49627                                     -139.262193,
49628                                     60.342778
49629                                 ],
49630                                 [
49631                                     -139.101608,
49632                                     60.346602
49633                                 ],
49634                                 [
49635                                     -139.079465,
49636                                     60.341021
49637                                 ],
49638                                 [
49639                                     -139.06869,
49640                                     60.322056
49641                                 ],
49642                                 [
49643                                     -139.073186,
49644                                     60.299835
49645                                 ],
49646                                 [
49647                                     -139.113468,
49648                                     60.226816
49649                                 ],
49650                                 [
49651                                     -139.149615,
49652                                     60.161187
49653                                 ],
49654                                 [
49655                                     -139.183231,
49656                                     60.100157
49657                                 ],
49658                                 [
49659                                     -139.182146,
49660                                     60.073389
49661                                 ],
49662                                 [
49663                                     -139.112305,
49664                                     60.031376
49665                                 ],
49666                                 [
49667                                     -139.060207,
49668                                     60.000059
49669                                 ],
49670                                 [
49671                                     -139.051611,
49672                                     59.994892
49673                                 ],
49674                                 [
49675                                     -139.003759,
49676                                     59.977219
49677                                 ],
49678                                 [
49679                                     -138.842425,
49680                                     59.937686
49681                                 ],
49682                                 [
49683                                     -138.742586,
49684                                     59.913192
49685                                 ],
49686                                 [
49687                                     -138.704888,
49688                                     59.898464
49689                                 ],
49690                                 [
49691                                     -138.697188,
49692                                     59.89371
49693                                 ],
49694                                 [
49695                                     -138.692098,
49696                                     59.886888
49697                                 ],
49698                                 [
49699                                     -138.654349,
49700                                     59.805498
49701                                 ],
49702                                 [
49703                                     -138.63745,
49704                                     59.784052
49705                                 ],
49706                                 [
49707                                     -138.59921,
49708                                     59.753822
49709                                 ],
49710                                 [
49711                                     -138.488881,
49712                                     59.696357
49713                                 ],
49714                                 [
49715                                     -138.363617,
49716                                     59.631142
49717                                 ],
49718                                 [
49719                                     -138.219543,
49720                                     59.556004
49721                                 ],
49722                                 [
49723                                     -138.067614,
49724                                     59.476991
49725                                 ],
49726                                 [
49727                                     -137.91057,
49728                                     59.395187
49729                                 ],
49730                                 [
49731                                     -137.758305,
49732                                     59.315915
49733                                 ],
49734                                 [
49735                                     -137.611363,
49736                                     59.239331
49737                                 ],
49738                                 [
49739                                     -137.594181,
49740                                     59.225275
49741                                 ],
49742                                 [
49743                                     -137.582088,
49744                                     59.206568
49745                                 ],
49746                                 [
49747                                     -137.5493,
49748                                     59.134531
49749                                 ],
49750                                 [
49751                                     -137.521007,
49752                                     59.072364
49753                                 ],
49754                                 [
49755                                     -137.484394,
49756                                     58.991904
49757                                 ],
49758                                 [
49759                                     -137.507752,
49760                                     58.939969
49761                                 ],
49762                                 [
49763                                     -137.50876,
49764                                     58.914906
49765                                 ],
49766                                 [
49767                                     -137.486875,
49768                                     58.900075
49769                                 ],
49770                                 [
49771                                     -137.453466,
49772                                     58.899145
49773                                 ],
49774                                 [
49775                                     -137.423106,
49776                                     58.907723
49777                                 ],
49778                                 [
49779                                     -137.338098,
49780                                     58.955472
49781                                 ],
49782                                 [
49783                                     -137.2819,
49784                                     58.98715
49785                                 ],
49786                                 [
49787                                     -137.172346,
49788                                     59.027148
49789                                 ],
49790                                 [
49791                                     -137.062367,
49792                                     59.067572
49793                                 ],
49794                                 [
49795                                     -137.047109,
49796                                     59.07331
49797                                 ],
49798                                 [
49799                                     -136.942282,
49800                                     59.11107
49801                                 ],
49802                                 [
49803                                     -136.840816,
49804                                     59.148174
49805                                 ],
49806                                 [
49807                                     -136.785496,
49808                                     59.157217
49809                                 ],
49810                                 [
49811                                     -136.671911,
49812                                     59.150809
49813                                 ],
49814                                 [
49815                                     -136.613491,
49816                                     59.15422
49817                                 ],
49818                                 [
49819                                     -136.569489,
49820                                     59.172152
49821                                 ],
49822                                 [
49823                                     -136.484791,
49824                                     59.2538
49825                                 ],
49826                                 [
49827                                     -136.483551,
49828                                     59.257469
49829                                 ],
49830                                 [
49831                                     -136.466549,
49832                                     59.287803
49833                                 ],
49834                                 [
49835                                     -136.467092,
49836                                     59.38449
49837                                 ],
49838                                 [
49839                                     -136.467557,
49840                                     59.461643
49841                                 ],
49842                                 [
49843                                     -136.415958,
49844                                     59.452238
49845                                 ],
49846                                 [
49847                                     -136.36684,
49848                                     59.449551
49849                                 ],
49850                                 [
49851                                     -136.319995,
49852                                     59.459059
49853                                 ],
49854                                 [
49855                                     -136.275036,
49856                                     59.486448
49857                                 ],
49858                                 [
49859                                     -136.244728,
49860                                     59.528202
49861                                 ],
49862                                 [
49863                                     -136.258474,
49864                                     59.556107
49865                                 ],
49866                                 [
49867                                     -136.29935,
49868                                     59.575745
49869                                 ],
49870                                 [
49871                                     -136.350329,
49872                                     59.592384
49873                                 ],
49874                                 [
49875                                     -136.2585,
49876                                     59.621582
49877                                 ],
49878                                 [
49879                                     -136.145406,
49880                                     59.636826
49881                                 ],
49882                                 [
49883                                     -136.02686,
49884                                     59.652846
49885                                 ],
49886                                 [
49887                                     -135.923818,
49888                                     59.666747
49889                                 ],
49890                                 [
49891                                     -135.830955,
49892                                     59.693257
49893                                 ],
49894                                 [
49895                                     -135.641251,
49896                                     59.747362
49897                                 ],
49898                                 [
49899                                     -135.482759,
49900                                     59.792475
49901                                 ],
49902                                 [
49903                                     -135.465137,
49904                                     59.789685
49905                                 ],
49906                                 [
49907                                     -135.404392,
49908                                     59.753305
49909                                 ],
49910                                 [
49911                                     -135.345791,
49912                                     59.731032
49913                                 ],
49914                                 [
49915                                     -135.259879,
49916                                     59.698218
49917                                 ],
49918                                 [
49919                                     -135.221897,
49920                                     59.675273
49921                                 ],
49922                                 [
49923                                     -135.192028,
49924                                     59.64711
49925                                 ],
49926                                 [
49927                                     -135.157792,
49928                                     59.623287
49929                                 ],
49930                                 [
49931                                     -135.106684,
49932                                     59.613158
49933                                 ],
49934                                 [
49935                                     -135.087874,
49936                                     59.606544
49937                                 ],
49938                                 [
49939                                     -135.032942,
49940                                     59.573109
49941                                 ],
49942                                 [
49943                                     -135.018524,
49944                                     59.559363
49945                                 ],
49946                                 [
49947                                     -135.016198,
49948                                     59.543447
49949                                 ],
49950                                 [
49951                                     -135.01948,
49952                                     59.493166
49953                                 ],
49954                                 [
49955                                     -135.023252,
49956                                     59.477146
49957                                 ],
49958                                 [
49959                                     -135.037489,
49960                                     59.461591
49961                                 ],
49962                                 [
49963                                     -135.078598,
49964                                     59.438337
49965                                 ],
49966                                 [
49967                                     -135.095754,
49968                                     59.418855
49969                                 ],
49970                                 [
49971                                     -134.993254,
49972                                     59.381906
49973                                 ],
49974                                 [
49975                                     -135.00483,
49976                                     59.367127
49977                                 ],
49978                                 [
49979                                     -135.014441,
49980                                     59.35152
49981                                 ],
49982                                 [
49983                                     -135.016198,
49984                                     59.336173
49985                                 ],
49986                                 [
49987                                     -134.979973,
49988                                     59.297415
49989                                 ],
49990                                 [
49991                                     -134.95783,
49992                                     59.280982
49993                                 ],
49994                                 [
49995                                     -134.932431,
49996                                     59.270647
49997                                 ],
49998                                 [
49999                                     -134.839465,
50000                                     59.258141
50001                                 ],
50002                                 [
50003                                     -134.74345,
50004                                     59.245119
50005                                 ],
50006                                 [
50007                                     -134.70552,
50008                                     59.240106
50009                                 ],
50010                                 [
50011                                     -134.692084,
50012                                     59.235249
50013                                 ],
50014                                 [
50015                                     -134.68286,
50016                                     59.223001
50017                                 ],
50018                                 [
50019                                     -134.671439,
50020                                     59.193752
50021                                 ],
50022                                 [
50023                                     -134.66038,
50024                                     59.181298
50025                                 ],
50026                                 [
50027                                     -134.610771,
50028                                     59.144556
50029                                 ],
50030                                 [
50031                                     -134.582788,
50032                                     59.128847
50033                                 ],
50034                                 [
50035                                     -134.556717,
50036                                     59.123059
50037                                 ],
50038                                 [
50039                                     -134.509072,
50040                                     59.122801
50041                                 ],
50042                                 [
50043                                     -134.477575,
50044                                     59.114946
50045                                 ],
50046                                 [
50047                                     -134.451013,
50048                                     59.097893
50049                                 ],
50050                                 [
50051                                     -134.398019,
50052                                     59.051952
50053                                 ],
50054                                 [
50055                                     -134.387167,
50056                                     59.036863
50057                                 ],
50058                                 [
50059                                     -134.385591,
50060                                     59.018828
50061                                 ],
50062                                 [
50063                                     -134.399389,
50064                                     58.974954
50065                                 ],
50066                                 [
50067                                     -134.343423,
50068                                     58.968857
50069                                 ],
50070                                 [
50071                                     -134.329651,
50072                                     58.963017
50073                                 ],
50074                                 [
50075                                     -134.320039,
50076                                     58.952682
50077                                 ],
50078                                 [
50079                                     -134.32314,
50080                                     58.949168
50081                                 ],
50082                                 [
50083                                     -134.330323,
50084                                     58.945344
50085                                 ],
50086                                 [
50087                                     -134.333036,
50088                                     58.93413
50089                                 ],
50090                                 [
50091                                     -134.327403,
50092                                     58.916457
50093                                 ],
50094                                 [
50095                                     -134.316939,
50096                                     58.903796
50097                                 ],
50098                                 [
50099                                     -134.22219,
50100                                     58.842714
50101                                 ],
50102                                 [
50103                                     -134.108838,
50104                                     58.808246
50105                                 ],
50106                                 [
50107                                     -133.983109,
50108                                     58.769902
50109                                 ],
50110                                 [
50111                                     -133.87123,
50112                                     58.735899
50113                                 ],
50114                                 [
50115                                     -133.831129,
50116                                     58.718019
50117                                 ],
50118                                 [
50119                                     -133.796402,
50120                                     58.693421
50121                                 ],
50122                                 [
50123                                     -133.700077,
50124                                     58.59937
50125                                 ],
50126                                 [
50127                                     -133.626283,
50128                                     58.546402
50129                                 ],
50130                                 [
50131                                     -133.547063,
50132                                     58.505577
50133                                 ],
50134                                 [
50135                                     -133.463089,
50136                                     58.462221
50137                                 ],
50138                                 [
50139                                     -133.392241,
50140                                     58.403878
50141                                 ],
50142                                 [
50143                                     -133.43012,
50144                                     58.372097
50145                                 ],
50146                                 [
50147                                     -133.41503,
50148                                     58.330549
50149                                 ],
50150                                 [
50151                                     -133.374567,
50152                                     58.290965
50153                                 ],
50154                                 [
50155                                     -133.257262,
50156                                     58.210298
50157                                 ],
50158                                 [
50159                                     -133.165588,
50160                                     58.147305
50161                                 ],
50162                                 [
50163                                     -133.142127,
50164                                     58.120588
50165                                 ],
50166                                 [
50167                                     -133.094843,
50168                                     58.0331
50169                                 ],
50170                                 [
50171                                     -133.075154,
50172                                     58.007882
50173                                 ],
50174                                 [
50175                                     -132.99335,
50176                                     57.941917
50177                                 ],
50178                                 [
50179                                     -132.917153,
50180                                     57.880499
50181                                 ],
50182                                 [
50183                                     -132.83212,
50184                                     57.791564
50185                                 ],
50186                                 [
50187                                     -132.70944,
50188                                     57.663303
50189                                 ],
50190                                 [
50191                                     -132.629057,
50192                                     57.579277
50193                                 ],
50194                                 [
50195                                     -132.552447,
50196                                     57.499075
50197                                 ],
50198                                 [
50199                                     -132.455735,
50200                                     57.420992
50201                                 ],
50202                                 [
50203                                     -132.362304,
50204                                     57.3457
50205                                 ],
50206                                 [
50207                                     -132.304684,
50208                                     57.280355
50209                                 ],
50210                                 [
50211                                     -132.230994,
50212                                     57.19682
50213                                 ],
50214                                 [
50215                                     -132.276366,
50216                                     57.14889
50217                                 ],
50218                                 [
50219                                     -132.34122,
50220                                     57.080393
50221                                 ],
50222                                 [
50223                                     -132.16229,
50224                                     57.050317
50225                                 ],
50226                                 [
50227                                     -132.031859,
50228                                     57.028406
50229                                 ],
50230                                 [
50231                                     -132.107384,
50232                                     56.858753
50233                                 ],
50234                                 [
50235                                     -131.871558,
50236                                     56.79346
50237                                 ],
50238                                 [
50239                                     -131.865874,
50240                                     56.785708
50241                                 ],
50242                                 [
50243                                     -131.872411,
50244                                     56.77297
50245                                 ],
50246                                 [
50247                                     -131.882617,
50248                                     56.759146
50249                                 ],
50250                                 [
50251                                     -131.887966,
50252                                     56.747958
50253                                 ],
50254                                 [
50255                                     -131.886028,
50256                                     56.737055
50257                                 ],
50258                                 [
50259                                     -131.880705,
50260                                     56.728838
50261                                 ],
50262                                 [
50263                                     -131.864789,
50264                                     56.71349
50265                                 ],
50266                                 [
50267                                     -131.838976,
50268                                     56.682278
50269                                 ],
50270                                 [
50271                                     -131.830424,
50272                                     56.664759
50273                                 ],
50274                                 [
50275                                     -131.826574,
50276                                     56.644606
50277                                 ],
50278                                 [
50279                                     -131.832103,
50280                                     56.603368
50281                                 ],
50282                                 [
50283                                     -131.825592,
50284                                     56.593343
50285                                 ],
50286                                 [
50287                                     -131.799108,
50288                                     56.587658
50289                                 ],
50290                                 [
50291                                     -131.692293,
50292                                     56.585074
50293                                 ],
50294                                 [
50295                                     -131.585891,
50296                                     56.595048
50297                                 ],
50298                                 [
50299                                     -131.560363,
50300                                     56.594066
50301                                 ],
50302                                 [
50303                                     -131.536437,
50304                                     56.585229
50305                                 ],
50306                                 [
50307                                     -131.491659,
50308                                     56.560166
50309                                 ],
50310                                 [
50311                                     -131.345699,
50312                                     56.503271
50313                                 ],
50314                                 [
50315                                     -131.215604,
50316                                     56.45255
50317                                 ],
50318                                 [
50319                                     -131.100546,
50320                                     56.407669
50321                                 ],
50322                                 [
50323                                     -131.016934,
50324                                     56.38705
50325                                 ],
50326                                 [
50327                                     -130.839089,
50328                                     56.372452
50329                                 ],
50330                                 [
50331                                     -130.760334,
50332                                     56.345192
50333                                 ],
50334                                 [
50335                                     -130.645768,
50336                                     56.261942
50337                                 ],
50338                                 [
50339                                     -130.602256,
50340                                     56.247059
50341                                 ],
50342                                 [
50343                                     -130.495518,
50344                                     56.232434
50345                                 ],
50346                                 [
50347                                     -130.47229,
50348                                     56.22489
50349                                 ],
50350                                 [
50351                                     -130.458053,
50352                                     56.210653
50353                                 ],
50354                                 [
50355                                     -130.427926,
50356                                     56.143964
50357                                 ],
50358                                 [
50359                                     -130.418159,
50360                                     56.129702
50361                                 ],
50362                                 [
50363                                     -130.403974,
50364                                     56.121898
50365                                 ],
50366                                 [
50367                                     -130.290311,
50368                                     56.10097
50369                                 ],
50370                                 [
50371                                     -130.243156,
50372                                     56.092391
50373                                 ],
50374                                 [
50375                                     -130.211246,
50376                                     56.089962
50377                                 ],
50378                                 [
50379                                     -130.116756,
50380                                     56.105646
50381                                 ],
50382                                 [
50383                                     -130.094328,
50384                                     56.101486
50385                                 ],
50386                                 [
50387                                     -130.071539,
50388                                     56.084123
50389                                 ],
50390                                 [
50391                                     -130.039319,
50392                                     56.045521
50393                                 ],
50394                                 [
50395                                     -130.026632,
50396                                     56.024101
50397                                 ],
50398                                 [
50399                                     -130.01901,
50400                                     56.002216
50401                                 ],
50402                                 [
50403                                     -130.014695,
50404                                     55.963252
50405                                 ],
50406                                 [
50407                                     -130.016788,
50408                                     55.918913
50409                                 ],
50410                                 [
50411                                     -130.019612,
50412                                     55.907978
50413                                 ],
50414                                 [
50415                                     -130.019618,
50416                                     55.907952
50417                                 ],
50418                                 [
50419                                     -130.022817,
50420                                     55.901353
50421                                 ],
50422                                 [
50423                                     -130.049387,
50424                                     55.871405
50425                                 ],
50426                                 [
50427                                     -130.104726,
50428                                     55.825263
50429                                 ],
50430                                 [
50431                                     -130.136627,
50432                                     55.806464
50433                                 ],
50434                                 [
50435                                     -130.148834,
50436                                     55.795356
50437                                 ],
50438                                 [
50439                                     -130.163482,
50440                                     55.771145
50441                                 ],
50442                                 [
50443                                     -130.167307,
50444                                     55.766262
50445                                 ],
50446                                 [
50447                                     -130.170806,
50448                                     55.759833
50449                                 ],
50450                                 [
50451                                     -130.173655,
50452                                     55.749498
50453                                 ],
50454                                 [
50455                                     -130.170806,
50456                                     55.740953
50457                                 ],
50458                                 [
50459                                     -130.163808,
50460                                     55.734565
50461                                 ],
50462                                 [
50463                                     -130.160064,
50464                                     55.727118
50465                                 ],
50466                                 [
50467                                     -130.167388,
50468                                     55.715399
50469                                 ],
50470                                 [
50471                                     -130.155914,
50472                                     55.700141
50473                                 ],
50474                                 [
50475                                     -130.142893,
50476                                     55.689521
50477                                 ],
50478                                 [
50479                                     -130.131825,
50480                                     55.676581
50481                                 ],
50482                                 [
50483                                     -130.126454,
50484                                     55.653998
50485                                 ],
50486                                 [
50487                                     -130.12857,
50488                                     55.63642
50489                                 ],
50490                                 [
50491                                     -130.135121,
50492                                     55.619127
50493                                 ],
50494                                 [
50495                                     -130.153147,
50496                                     55.58511
50497                                 ],
50498                                 [
50499                                     -130.148671,
50500                                     55.578192
50501                                 ],
50502                                 [
50503                                     -130.146881,
50504                                     55.569322
50505                                 ],
50506                                 [
50507                                     -130.146962,
50508                                     55.547187
50509                                 ],
50510                                 [
50511                                     -130.112172,
50512                                     55.509345
50513                                 ],
50514                                 [
50515                                     -130.101674,
50516                                     55.481147
50517                                 ],
50518                                 [
50519                                     -130.095082,
50520                                     55.472113
50521                                 ],
50522                                 [
50523                                     -130.065419,
50524                                     55.446112
50525                                 ],
50526                                 [
50527                                     -130.057525,
50528                                     55.434882
50529                                 ],
50530                                 [
50531                                     -130.052561,
50532                                     55.414008
50533                                 ],
50534                                 [
50535                                     -130.054311,
50536                                     55.366645
50537                                 ],
50538                                 [
50539                                     -130.05012,
50540                                     55.345445
50541                                 ],
50542                                 [
50543                                     -130.039296,
50544                                     55.330756
50545                                 ],
50546                                 [
50547                                     -129.989247,
50548                                     55.284003
50549                                 ],
50550                                 [
50551                                     -130.031239,
50552                                     55.26435
50553                                 ],
50554                                 [
50555                                     -130.050038,
50556                                     55.252875
50557                                 ],
50558                                 [
50559                                     -130.067494,
50560                                     55.239
50561                                 ],
50562                                 [
50563                                     -130.078236,
50564                                     55.233791
50565                                 ],
50566                                 [
50567                                     -130.100494,
50568                                     55.230292
50569                                 ],
50570                                 [
50571                                     -130.104726,
50572                                     55.225653
50573                                 ],
50574                                 [
50575                                     -130.105702,
50576                                     55.211127
50577                                 ],
50578                                 [
50579                                     -130.10912,
50580                                     55.200751
50581                                 ],
50582                                 [
50583                                     -130.115793,
50584                                     55.191596
50585                                 ],
50586                                 [
50587                                     -130.126454,
50588                                     55.180976
50589                                 ],
50590                                 [
50591                                     -130.151967,
50592                                     55.163275
50593                                 ],
50594                                 [
50595                                     -130.159983,
50596                                     55.153713
50597                                 ],
50598                                 [
50599                                     -130.167592,
50600                                     55.129584
50601                                 ],
50602                                 [
50603                                     -130.173695,
50604                                     55.117743
50605                                 ],
50606                                 [
50607                                     -130.200266,
50608                                     55.104153
50609                                 ],
50610                                 [
50611                                     -130.211781,
50612                                     55.084133
50613                                 ],
50614                                 [
50615                                     -130.228871,
50616                                     55.04385
50617                                 ],
50618                                 [
50619                                     -130.238678,
50620                                     55.03441
50621                                 ],
50622                                 [
50623                                     -130.261342,
50624                                     55.022895
50625                                 ],
50626                                 [
50627                                     -130.269846,
50628                                     55.016547
50629                                 ],
50630                                 [
50631                                     -130.275706,
50632                                     55.006985
50633                                 ],
50634                                 [
50635                                     -130.286366,
50636                                     54.983222
50637                                 ],
50638                                 [
50639                                     -130.294342,
50640                                     54.971869
50641                                 ],
50642                                 [
50643                                     -130.326568,
50644                                     54.952094
50645                                 ],
50646                                 [
50647                                     -130.335561,
50648                                     54.938707
50649                                 ],
50650                                 [
50651                                     -130.365387,
50652                                     54.907294
50653                                 ],
50654                                 [
50655                                     -130.385243,
50656                                     54.896552
50657                                 ],
50658                                 [
50659                                     -130.430816,
50660                                     54.881252
50661                                 ],
50662                                 [
50663                                     -130.488759,
50664                                     54.844184
50665                                 ],
50666                                 [
50667                                     -130.580312,
50668                                     54.806383
50669                                 ],
50670                                 [
50671                                     -130.597485,
50672                                     54.803391
50673                                 ],
50674                                 [
50675                                     -130.71074,
50676                                     54.733215
50677                                 ],
50678                                 [
50679                                     -131.160718,
50680                                     54.787192
50681                                 ]
50682                             ]
50683                         ]
50684                     ]
50685                 }
50686             }
50687         ]
50688     },
50689     "featureIcons": {
50690         "circle-stroked": {
50691             "12": [
50692                 42,
50693                 0
50694             ],
50695             "18": [
50696                 24,
50697                 0
50698             ],
50699             "24": [
50700                 0,
50701                 0
50702             ]
50703         },
50704         "circle": {
50705             "12": [
50706                 96,
50707                 0
50708             ],
50709             "18": [
50710                 78,
50711                 0
50712             ],
50713             "24": [
50714                 54,
50715                 0
50716             ]
50717         },
50718         "square-stroked": {
50719             "12": [
50720                 150,
50721                 0
50722             ],
50723             "18": [
50724                 132,
50725                 0
50726             ],
50727             "24": [
50728                 108,
50729                 0
50730             ]
50731         },
50732         "square": {
50733             "12": [
50734                 204,
50735                 0
50736             ],
50737             "18": [
50738                 186,
50739                 0
50740             ],
50741             "24": [
50742                 162,
50743                 0
50744             ]
50745         },
50746         "triangle-stroked": {
50747             "12": [
50748                 258,
50749                 0
50750             ],
50751             "18": [
50752                 240,
50753                 0
50754             ],
50755             "24": [
50756                 216,
50757                 0
50758             ]
50759         },
50760         "triangle": {
50761             "12": [
50762                 42,
50763                 24
50764             ],
50765             "18": [
50766                 24,
50767                 24
50768             ],
50769             "24": [
50770                 0,
50771                 24
50772             ]
50773         },
50774         "star-stroked": {
50775             "12": [
50776                 96,
50777                 24
50778             ],
50779             "18": [
50780                 78,
50781                 24
50782             ],
50783             "24": [
50784                 54,
50785                 24
50786             ]
50787         },
50788         "star": {
50789             "12": [
50790                 150,
50791                 24
50792             ],
50793             "18": [
50794                 132,
50795                 24
50796             ],
50797             "24": [
50798                 108,
50799                 24
50800             ]
50801         },
50802         "cross": {
50803             "12": [
50804                 204,
50805                 24
50806             ],
50807             "18": [
50808                 186,
50809                 24
50810             ],
50811             "24": [
50812                 162,
50813                 24
50814             ]
50815         },
50816         "marker-stroked": {
50817             "12": [
50818                 258,
50819                 24
50820             ],
50821             "18": [
50822                 240,
50823                 24
50824             ],
50825             "24": [
50826                 216,
50827                 24
50828             ]
50829         },
50830         "marker": {
50831             "12": [
50832                 42,
50833                 48
50834             ],
50835             "18": [
50836                 24,
50837                 48
50838             ],
50839             "24": [
50840                 0,
50841                 48
50842             ]
50843         },
50844         "religious-jewish": {
50845             "12": [
50846                 96,
50847                 48
50848             ],
50849             "18": [
50850                 78,
50851                 48
50852             ],
50853             "24": [
50854                 54,
50855                 48
50856             ]
50857         },
50858         "religious-christian": {
50859             "12": [
50860                 150,
50861                 48
50862             ],
50863             "18": [
50864                 132,
50865                 48
50866             ],
50867             "24": [
50868                 108,
50869                 48
50870             ]
50871         },
50872         "religious-muslim": {
50873             "12": [
50874                 204,
50875                 48
50876             ],
50877             "18": [
50878                 186,
50879                 48
50880             ],
50881             "24": [
50882                 162,
50883                 48
50884             ]
50885         },
50886         "cemetery": {
50887             "12": [
50888                 258,
50889                 48
50890             ],
50891             "18": [
50892                 240,
50893                 48
50894             ],
50895             "24": [
50896                 216,
50897                 48
50898             ]
50899         },
50900         "rocket": {
50901             "12": [
50902                 42,
50903                 72
50904             ],
50905             "18": [
50906                 24,
50907                 72
50908             ],
50909             "24": [
50910                 0,
50911                 72
50912             ]
50913         },
50914         "airport": {
50915             "12": [
50916                 96,
50917                 72
50918             ],
50919             "18": [
50920                 78,
50921                 72
50922             ],
50923             "24": [
50924                 54,
50925                 72
50926             ]
50927         },
50928         "heliport": {
50929             "12": [
50930                 150,
50931                 72
50932             ],
50933             "18": [
50934                 132,
50935                 72
50936             ],
50937             "24": [
50938                 108,
50939                 72
50940             ]
50941         },
50942         "rail": {
50943             "12": [
50944                 204,
50945                 72
50946             ],
50947             "18": [
50948                 186,
50949                 72
50950             ],
50951             "24": [
50952                 162,
50953                 72
50954             ]
50955         },
50956         "rail-metro": {
50957             "12": [
50958                 258,
50959                 72
50960             ],
50961             "18": [
50962                 240,
50963                 72
50964             ],
50965             "24": [
50966                 216,
50967                 72
50968             ]
50969         },
50970         "rail-light": {
50971             "12": [
50972                 42,
50973                 96
50974             ],
50975             "18": [
50976                 24,
50977                 96
50978             ],
50979             "24": [
50980                 0,
50981                 96
50982             ]
50983         },
50984         "bus": {
50985             "12": [
50986                 96,
50987                 96
50988             ],
50989             "18": [
50990                 78,
50991                 96
50992             ],
50993             "24": [
50994                 54,
50995                 96
50996             ]
50997         },
50998         "fuel": {
50999             "12": [
51000                 150,
51001                 96
51002             ],
51003             "18": [
51004                 132,
51005                 96
51006             ],
51007             "24": [
51008                 108,
51009                 96
51010             ]
51011         },
51012         "parking": {
51013             "12": [
51014                 204,
51015                 96
51016             ],
51017             "18": [
51018                 186,
51019                 96
51020             ],
51021             "24": [
51022                 162,
51023                 96
51024             ]
51025         },
51026         "parking-garage": {
51027             "12": [
51028                 258,
51029                 96
51030             ],
51031             "18": [
51032                 240,
51033                 96
51034             ],
51035             "24": [
51036                 216,
51037                 96
51038             ]
51039         },
51040         "airfield": {
51041             "12": [
51042                 42,
51043                 120
51044             ],
51045             "18": [
51046                 24,
51047                 120
51048             ],
51049             "24": [
51050                 0,
51051                 120
51052             ]
51053         },
51054         "roadblock": {
51055             "12": [
51056                 96,
51057                 120
51058             ],
51059             "18": [
51060                 78,
51061                 120
51062             ],
51063             "24": [
51064                 54,
51065                 120
51066             ]
51067         },
51068         "ferry": {
51069             "12": [
51070                 150,
51071                 120
51072             ],
51073             "18": [
51074                 132,
51075                 120
51076             ],
51077             "24": [
51078                 108,
51079                 120
51080             ],
51081             "line": [
51082                 2240,
51083                 25
51084             ]
51085         },
51086         "harbor": {
51087             "12": [
51088                 204,
51089                 120
51090             ],
51091             "18": [
51092                 186,
51093                 120
51094             ],
51095             "24": [
51096                 162,
51097                 120
51098             ]
51099         },
51100         "bicycle": {
51101             "12": [
51102                 258,
51103                 120
51104             ],
51105             "18": [
51106                 240,
51107                 120
51108             ],
51109             "24": [
51110                 216,
51111                 120
51112             ]
51113         },
51114         "park": {
51115             "12": [
51116                 42,
51117                 144
51118             ],
51119             "18": [
51120                 24,
51121                 144
51122             ],
51123             "24": [
51124                 0,
51125                 144
51126             ]
51127         },
51128         "park2": {
51129             "12": [
51130                 96,
51131                 144
51132             ],
51133             "18": [
51134                 78,
51135                 144
51136             ],
51137             "24": [
51138                 54,
51139                 144
51140             ]
51141         },
51142         "museum": {
51143             "12": [
51144                 150,
51145                 144
51146             ],
51147             "18": [
51148                 132,
51149                 144
51150             ],
51151             "24": [
51152                 108,
51153                 144
51154             ]
51155         },
51156         "lodging": {
51157             "12": [
51158                 204,
51159                 144
51160             ],
51161             "18": [
51162                 186,
51163                 144
51164             ],
51165             "24": [
51166                 162,
51167                 144
51168             ]
51169         },
51170         "monument": {
51171             "12": [
51172                 258,
51173                 144
51174             ],
51175             "18": [
51176                 240,
51177                 144
51178             ],
51179             "24": [
51180                 216,
51181                 144
51182             ]
51183         },
51184         "zoo": {
51185             "12": [
51186                 42,
51187                 168
51188             ],
51189             "18": [
51190                 24,
51191                 168
51192             ],
51193             "24": [
51194                 0,
51195                 168
51196             ]
51197         },
51198         "garden": {
51199             "12": [
51200                 96,
51201                 168
51202             ],
51203             "18": [
51204                 78,
51205                 168
51206             ],
51207             "24": [
51208                 54,
51209                 168
51210             ]
51211         },
51212         "campsite": {
51213             "12": [
51214                 150,
51215                 168
51216             ],
51217             "18": [
51218                 132,
51219                 168
51220             ],
51221             "24": [
51222                 108,
51223                 168
51224             ]
51225         },
51226         "theatre": {
51227             "12": [
51228                 204,
51229                 168
51230             ],
51231             "18": [
51232                 186,
51233                 168
51234             ],
51235             "24": [
51236                 162,
51237                 168
51238             ]
51239         },
51240         "art-gallery": {
51241             "12": [
51242                 258,
51243                 168
51244             ],
51245             "18": [
51246                 240,
51247                 168
51248             ],
51249             "24": [
51250                 216,
51251                 168
51252             ]
51253         },
51254         "pitch": {
51255             "12": [
51256                 42,
51257                 192
51258             ],
51259             "18": [
51260                 24,
51261                 192
51262             ],
51263             "24": [
51264                 0,
51265                 192
51266             ]
51267         },
51268         "soccer": {
51269             "12": [
51270                 96,
51271                 192
51272             ],
51273             "18": [
51274                 78,
51275                 192
51276             ],
51277             "24": [
51278                 54,
51279                 192
51280             ]
51281         },
51282         "america-football": {
51283             "12": [
51284                 150,
51285                 192
51286             ],
51287             "18": [
51288                 132,
51289                 192
51290             ],
51291             "24": [
51292                 108,
51293                 192
51294             ]
51295         },
51296         "tennis": {
51297             "12": [
51298                 204,
51299                 192
51300             ],
51301             "18": [
51302                 186,
51303                 192
51304             ],
51305             "24": [
51306                 162,
51307                 192
51308             ]
51309         },
51310         "basketball": {
51311             "12": [
51312                 258,
51313                 192
51314             ],
51315             "18": [
51316                 240,
51317                 192
51318             ],
51319             "24": [
51320                 216,
51321                 192
51322             ]
51323         },
51324         "baseball": {
51325             "12": [
51326                 42,
51327                 216
51328             ],
51329             "18": [
51330                 24,
51331                 216
51332             ],
51333             "24": [
51334                 0,
51335                 216
51336             ]
51337         },
51338         "golf": {
51339             "12": [
51340                 96,
51341                 216
51342             ],
51343             "18": [
51344                 78,
51345                 216
51346             ],
51347             "24": [
51348                 54,
51349                 216
51350             ]
51351         },
51352         "swimming": {
51353             "12": [
51354                 150,
51355                 216
51356             ],
51357             "18": [
51358                 132,
51359                 216
51360             ],
51361             "24": [
51362                 108,
51363                 216
51364             ]
51365         },
51366         "cricket": {
51367             "12": [
51368                 204,
51369                 216
51370             ],
51371             "18": [
51372                 186,
51373                 216
51374             ],
51375             "24": [
51376                 162,
51377                 216
51378             ]
51379         },
51380         "skiing": {
51381             "12": [
51382                 258,
51383                 216
51384             ],
51385             "18": [
51386                 240,
51387                 216
51388             ],
51389             "24": [
51390                 216,
51391                 216
51392             ]
51393         },
51394         "school": {
51395             "12": [
51396                 42,
51397                 240
51398             ],
51399             "18": [
51400                 24,
51401                 240
51402             ],
51403             "24": [
51404                 0,
51405                 240
51406             ]
51407         },
51408         "college": {
51409             "12": [
51410                 96,
51411                 240
51412             ],
51413             "18": [
51414                 78,
51415                 240
51416             ],
51417             "24": [
51418                 54,
51419                 240
51420             ]
51421         },
51422         "library": {
51423             "12": [
51424                 150,
51425                 240
51426             ],
51427             "18": [
51428                 132,
51429                 240
51430             ],
51431             "24": [
51432                 108,
51433                 240
51434             ]
51435         },
51436         "post": {
51437             "12": [
51438                 204,
51439                 240
51440             ],
51441             "18": [
51442                 186,
51443                 240
51444             ],
51445             "24": [
51446                 162,
51447                 240
51448             ]
51449         },
51450         "fire-station": {
51451             "12": [
51452                 258,
51453                 240
51454             ],
51455             "18": [
51456                 240,
51457                 240
51458             ],
51459             "24": [
51460                 216,
51461                 240
51462             ]
51463         },
51464         "town-hall": {
51465             "12": [
51466                 42,
51467                 264
51468             ],
51469             "18": [
51470                 24,
51471                 264
51472             ],
51473             "24": [
51474                 0,
51475                 264
51476             ]
51477         },
51478         "police": {
51479             "12": [
51480                 96,
51481                 264
51482             ],
51483             "18": [
51484                 78,
51485                 264
51486             ],
51487             "24": [
51488                 54,
51489                 264
51490             ]
51491         },
51492         "prison": {
51493             "12": [
51494                 150,
51495                 264
51496             ],
51497             "18": [
51498                 132,
51499                 264
51500             ],
51501             "24": [
51502                 108,
51503                 264
51504             ]
51505         },
51506         "embassy": {
51507             "12": [
51508                 204,
51509                 264
51510             ],
51511             "18": [
51512                 186,
51513                 264
51514             ],
51515             "24": [
51516                 162,
51517                 264
51518             ]
51519         },
51520         "beer": {
51521             "12": [
51522                 258,
51523                 264
51524             ],
51525             "18": [
51526                 240,
51527                 264
51528             ],
51529             "24": [
51530                 216,
51531                 264
51532             ]
51533         },
51534         "restaurant": {
51535             "12": [
51536                 42,
51537                 288
51538             ],
51539             "18": [
51540                 24,
51541                 288
51542             ],
51543             "24": [
51544                 0,
51545                 288
51546             ]
51547         },
51548         "cafe": {
51549             "12": [
51550                 96,
51551                 288
51552             ],
51553             "18": [
51554                 78,
51555                 288
51556             ],
51557             "24": [
51558                 54,
51559                 288
51560             ]
51561         },
51562         "shop": {
51563             "12": [
51564                 150,
51565                 288
51566             ],
51567             "18": [
51568                 132,
51569                 288
51570             ],
51571             "24": [
51572                 108,
51573                 288
51574             ]
51575         },
51576         "fast-food": {
51577             "12": [
51578                 204,
51579                 288
51580             ],
51581             "18": [
51582                 186,
51583                 288
51584             ],
51585             "24": [
51586                 162,
51587                 288
51588             ]
51589         },
51590         "bar": {
51591             "12": [
51592                 258,
51593                 288
51594             ],
51595             "18": [
51596                 240,
51597                 288
51598             ],
51599             "24": [
51600                 216,
51601                 288
51602             ]
51603         },
51604         "bank": {
51605             "12": [
51606                 42,
51607                 312
51608             ],
51609             "18": [
51610                 24,
51611                 312
51612             ],
51613             "24": [
51614                 0,
51615                 312
51616             ]
51617         },
51618         "grocery": {
51619             "12": [
51620                 96,
51621                 312
51622             ],
51623             "18": [
51624                 78,
51625                 312
51626             ],
51627             "24": [
51628                 54,
51629                 312
51630             ]
51631         },
51632         "cinema": {
51633             "12": [
51634                 150,
51635                 312
51636             ],
51637             "18": [
51638                 132,
51639                 312
51640             ],
51641             "24": [
51642                 108,
51643                 312
51644             ]
51645         },
51646         "pharmacy": {
51647             "12": [
51648                 204,
51649                 312
51650             ],
51651             "18": [
51652                 186,
51653                 312
51654             ],
51655             "24": [
51656                 162,
51657                 312
51658             ]
51659         },
51660         "hospital": {
51661             "12": [
51662                 258,
51663                 312
51664             ],
51665             "18": [
51666                 240,
51667                 312
51668             ],
51669             "24": [
51670                 216,
51671                 312
51672             ]
51673         },
51674         "danger": {
51675             "12": [
51676                 42,
51677                 336
51678             ],
51679             "18": [
51680                 24,
51681                 336
51682             ],
51683             "24": [
51684                 0,
51685                 336
51686             ]
51687         },
51688         "industrial": {
51689             "12": [
51690                 96,
51691                 336
51692             ],
51693             "18": [
51694                 78,
51695                 336
51696             ],
51697             "24": [
51698                 54,
51699                 336
51700             ]
51701         },
51702         "warehouse": {
51703             "12": [
51704                 150,
51705                 336
51706             ],
51707             "18": [
51708                 132,
51709                 336
51710             ],
51711             "24": [
51712                 108,
51713                 336
51714             ]
51715         },
51716         "commercial": {
51717             "12": [
51718                 204,
51719                 336
51720             ],
51721             "18": [
51722                 186,
51723                 336
51724             ],
51725             "24": [
51726                 162,
51727                 336
51728             ]
51729         },
51730         "building": {
51731             "12": [
51732                 258,
51733                 336
51734             ],
51735             "18": [
51736                 240,
51737                 336
51738             ],
51739             "24": [
51740                 216,
51741                 336
51742             ]
51743         },
51744         "place-of-worship": {
51745             "12": [
51746                 42,
51747                 360
51748             ],
51749             "18": [
51750                 24,
51751                 360
51752             ],
51753             "24": [
51754                 0,
51755                 360
51756             ]
51757         },
51758         "alcohol-shop": {
51759             "12": [
51760                 96,
51761                 360
51762             ],
51763             "18": [
51764                 78,
51765                 360
51766             ],
51767             "24": [
51768                 54,
51769                 360
51770             ]
51771         },
51772         "logging": {
51773             "12": [
51774                 150,
51775                 360
51776             ],
51777             "18": [
51778                 132,
51779                 360
51780             ],
51781             "24": [
51782                 108,
51783                 360
51784             ]
51785         },
51786         "oil-well": {
51787             "12": [
51788                 204,
51789                 360
51790             ],
51791             "18": [
51792                 186,
51793                 360
51794             ],
51795             "24": [
51796                 162,
51797                 360
51798             ]
51799         },
51800         "slaughterhouse": {
51801             "12": [
51802                 258,
51803                 360
51804             ],
51805             "18": [
51806                 240,
51807                 360
51808             ],
51809             "24": [
51810                 216,
51811                 360
51812             ]
51813         },
51814         "dam": {
51815             "12": [
51816                 42,
51817                 384
51818             ],
51819             "18": [
51820                 24,
51821                 384
51822             ],
51823             "24": [
51824                 0,
51825                 384
51826             ]
51827         },
51828         "water": {
51829             "12": [
51830                 96,
51831                 384
51832             ],
51833             "18": [
51834                 78,
51835                 384
51836             ],
51837             "24": [
51838                 54,
51839                 384
51840             ]
51841         },
51842         "wetland": {
51843             "12": [
51844                 150,
51845                 384
51846             ],
51847             "18": [
51848                 132,
51849                 384
51850             ],
51851             "24": [
51852                 108,
51853                 384
51854             ]
51855         },
51856         "disability": {
51857             "12": [
51858                 204,
51859                 384
51860             ],
51861             "18": [
51862                 186,
51863                 384
51864             ],
51865             "24": [
51866                 162,
51867                 384
51868             ]
51869         },
51870         "telephone": {
51871             "12": [
51872                 258,
51873                 384
51874             ],
51875             "18": [
51876                 240,
51877                 384
51878             ],
51879             "24": [
51880                 216,
51881                 384
51882             ]
51883         },
51884         "emergency-telephone": {
51885             "12": [
51886                 42,
51887                 408
51888             ],
51889             "18": [
51890                 24,
51891                 408
51892             ],
51893             "24": [
51894                 0,
51895                 408
51896             ]
51897         },
51898         "toilets": {
51899             "12": [
51900                 96,
51901                 408
51902             ],
51903             "18": [
51904                 78,
51905                 408
51906             ],
51907             "24": [
51908                 54,
51909                 408
51910             ]
51911         },
51912         "waste-basket": {
51913             "12": [
51914                 150,
51915                 408
51916             ],
51917             "18": [
51918                 132,
51919                 408
51920             ],
51921             "24": [
51922                 108,
51923                 408
51924             ]
51925         },
51926         "music": {
51927             "12": [
51928                 204,
51929                 408
51930             ],
51931             "18": [
51932                 186,
51933                 408
51934             ],
51935             "24": [
51936                 162,
51937                 408
51938             ]
51939         },
51940         "land-use": {
51941             "12": [
51942                 258,
51943                 408
51944             ],
51945             "18": [
51946                 240,
51947                 408
51948             ],
51949             "24": [
51950                 216,
51951                 408
51952             ]
51953         },
51954         "city": {
51955             "12": [
51956                 42,
51957                 432
51958             ],
51959             "18": [
51960                 24,
51961                 432
51962             ],
51963             "24": [
51964                 0,
51965                 432
51966             ]
51967         },
51968         "town": {
51969             "12": [
51970                 96,
51971                 432
51972             ],
51973             "18": [
51974                 78,
51975                 432
51976             ],
51977             "24": [
51978                 54,
51979                 432
51980             ]
51981         },
51982         "village": {
51983             "12": [
51984                 150,
51985                 432
51986             ],
51987             "18": [
51988                 132,
51989                 432
51990             ],
51991             "24": [
51992                 108,
51993                 432
51994             ]
51995         },
51996         "farm": {
51997             "12": [
51998                 204,
51999                 432
52000             ],
52001             "18": [
52002                 186,
52003                 432
52004             ],
52005             "24": [
52006                 162,
52007                 432
52008             ]
52009         },
52010         "bakery": {
52011             "12": [
52012                 258,
52013                 432
52014             ],
52015             "18": [
52016                 240,
52017                 432
52018             ],
52019             "24": [
52020                 216,
52021                 432
52022             ]
52023         },
52024         "dog-park": {
52025             "12": [
52026                 42,
52027                 456
52028             ],
52029             "18": [
52030                 24,
52031                 456
52032             ],
52033             "24": [
52034                 0,
52035                 456
52036             ]
52037         },
52038         "lighthouse": {
52039             "12": [
52040                 96,
52041                 456
52042             ],
52043             "18": [
52044                 78,
52045                 456
52046             ],
52047             "24": [
52048                 54,
52049                 456
52050             ]
52051         },
52052         "clothing-store": {
52053             "12": [
52054                 150,
52055                 456
52056             ],
52057             "18": [
52058                 132,
52059                 456
52060             ],
52061             "24": [
52062                 108,
52063                 456
52064             ]
52065         },
52066         "polling-place": {
52067             "12": [
52068                 204,
52069                 456
52070             ],
52071             "18": [
52072                 186,
52073                 456
52074             ],
52075             "24": [
52076                 162,
52077                 456
52078             ]
52079         },
52080         "playground": {
52081             "12": [
52082                 258,
52083                 456
52084             ],
52085             "18": [
52086                 240,
52087                 456
52088             ],
52089             "24": [
52090                 216,
52091                 456
52092             ]
52093         },
52094         "entrance": {
52095             "12": [
52096                 42,
52097                 480
52098             ],
52099             "18": [
52100                 24,
52101                 480
52102             ],
52103             "24": [
52104                 0,
52105                 480
52106             ]
52107         },
52108         "heart": {
52109             "12": [
52110                 96,
52111                 480
52112             ],
52113             "18": [
52114                 78,
52115                 480
52116             ],
52117             "24": [
52118                 54,
52119                 480
52120             ]
52121         },
52122         "london-underground": {
52123             "12": [
52124                 150,
52125                 480
52126             ],
52127             "18": [
52128                 132,
52129                 480
52130             ],
52131             "24": [
52132                 108,
52133                 480
52134             ]
52135         },
52136         "minefield": {
52137             "12": [
52138                 204,
52139                 480
52140             ],
52141             "18": [
52142                 186,
52143                 480
52144             ],
52145             "24": [
52146                 162,
52147                 480
52148             ]
52149         },
52150         "rail-underground": {
52151             "12": [
52152                 258,
52153                 480
52154             ],
52155             "18": [
52156                 240,
52157                 480
52158             ],
52159             "24": [
52160                 216,
52161                 480
52162             ]
52163         },
52164         "rail-above": {
52165             "12": [
52166                 42,
52167                 504
52168             ],
52169             "18": [
52170                 24,
52171                 504
52172             ],
52173             "24": [
52174                 0,
52175                 504
52176             ]
52177         },
52178         "camera": {
52179             "12": [
52180                 96,
52181                 504
52182             ],
52183             "18": [
52184                 78,
52185                 504
52186             ],
52187             "24": [
52188                 54,
52189                 504
52190             ]
52191         },
52192         "laundry": {
52193             "12": [
52194                 150,
52195                 504
52196             ],
52197             "18": [
52198                 132,
52199                 504
52200             ],
52201             "24": [
52202                 108,
52203                 504
52204             ]
52205         },
52206         "car": {
52207             "12": [
52208                 204,
52209                 504
52210             ],
52211             "18": [
52212                 186,
52213                 504
52214             ],
52215             "24": [
52216                 162,
52217                 504
52218             ]
52219         },
52220         "suitcase": {
52221             "12": [
52222                 258,
52223                 504
52224             ],
52225             "18": [
52226                 240,
52227                 504
52228             ],
52229             "24": [
52230                 216,
52231                 504
52232             ]
52233         },
52234         "hairdresser": {
52235             "12": [
52236                 42,
52237                 528
52238             ],
52239             "18": [
52240                 24,
52241                 528
52242             ],
52243             "24": [
52244                 0,
52245                 528
52246             ]
52247         },
52248         "chemist": {
52249             "12": [
52250                 96,
52251                 528
52252             ],
52253             "18": [
52254                 78,
52255                 528
52256             ],
52257             "24": [
52258                 54,
52259                 528
52260             ]
52261         },
52262         "mobilephone": {
52263             "12": [
52264                 150,
52265                 528
52266             ],
52267             "18": [
52268                 132,
52269                 528
52270             ],
52271             "24": [
52272                 108,
52273                 528
52274             ]
52275         },
52276         "scooter": {
52277             "12": [
52278                 204,
52279                 528
52280             ],
52281             "18": [
52282                 186,
52283                 528
52284             ],
52285             "24": [
52286                 162,
52287                 528
52288             ]
52289         },
52290         "gift": {
52291             "12": [
52292                 258,
52293                 528
52294             ],
52295             "18": [
52296                 240,
52297                 528
52298             ],
52299             "24": [
52300                 216,
52301                 528
52302             ]
52303         },
52304         "ice-cream": {
52305             "12": [
52306                 42,
52307                 552
52308             ],
52309             "18": [
52310                 24,
52311                 552
52312             ],
52313             "24": [
52314                 0,
52315                 552
52316             ]
52317         },
52318         "highway-motorway": {
52319             "line": [
52320                 20,
52321                 25
52322             ]
52323         },
52324         "highway-trunk": {
52325             "line": [
52326                 80,
52327                 25
52328             ]
52329         },
52330         "highway-primary": {
52331             "line": [
52332                 140,
52333                 25
52334             ]
52335         },
52336         "highway-secondary": {
52337             "line": [
52338                 200,
52339                 25
52340             ]
52341         },
52342         "highway-tertiary": {
52343             "line": [
52344                 260,
52345                 25
52346             ]
52347         },
52348         "highway-motorway-link": {
52349             "line": [
52350                 320,
52351                 25
52352             ]
52353         },
52354         "highway-trunk-link": {
52355             "line": [
52356                 380,
52357                 25
52358             ]
52359         },
52360         "highway-primary-link": {
52361             "line": [
52362                 440,
52363                 25
52364             ]
52365         },
52366         "highway-secondary-link": {
52367             "line": [
52368                 500,
52369                 25
52370             ]
52371         },
52372         "highway-tertiary-link": {
52373             "line": [
52374                 560,
52375                 25
52376             ]
52377         },
52378         "highway-residential": {
52379             "line": [
52380                 620,
52381                 25
52382             ]
52383         },
52384         "highway-unclassified": {
52385             "line": [
52386                 680,
52387                 25
52388             ]
52389         },
52390         "highway-service": {
52391             "line": [
52392                 740,
52393                 25
52394             ]
52395         },
52396         "highway-road": {
52397             "line": [
52398                 800,
52399                 25
52400             ]
52401         },
52402         "highway-track": {
52403             "line": [
52404                 860,
52405                 25
52406             ]
52407         },
52408         "highway-living-street": {
52409             "line": [
52410                 920,
52411                 25
52412             ]
52413         },
52414         "highway-path": {
52415             "line": [
52416                 980,
52417                 25
52418             ]
52419         },
52420         "highway-cycleway": {
52421             "line": [
52422                 1040,
52423                 25
52424             ]
52425         },
52426         "highway-footway": {
52427             "line": [
52428                 1100,
52429                 25
52430             ]
52431         },
52432         "highway-bridleway": {
52433             "line": [
52434                 1160,
52435                 25
52436             ]
52437         },
52438         "highway-steps": {
52439             "line": [
52440                 1220,
52441                 25
52442             ]
52443         },
52444         "railway-rail": {
52445             "line": [
52446                 1280,
52447                 25
52448             ]
52449         },
52450         "railway-disused": {
52451             "line": [
52452                 1340,
52453                 25
52454             ]
52455         },
52456         "railway-abandoned": {
52457             "line": [
52458                 1400,
52459                 25
52460             ]
52461         },
52462         "railway-subway": {
52463             "line": [
52464                 1460,
52465                 25
52466             ]
52467         },
52468         "railway-light-rail": {
52469             "line": [
52470                 1520,
52471                 25
52472             ]
52473         },
52474         "railway-monorail": {
52475             "line": [
52476                 1580,
52477                 25
52478             ]
52479         },
52480         "waterway-river": {
52481             "line": [
52482                 1640,
52483                 25
52484             ]
52485         },
52486         "waterway-stream": {
52487             "line": [
52488                 1700,
52489                 25
52490             ]
52491         },
52492         "waterway-canal": {
52493             "line": [
52494                 1760,
52495                 25
52496             ]
52497         },
52498         "waterway-ditch": {
52499             "line": [
52500                 1820,
52501                 25
52502             ]
52503         },
52504         "power-line": {
52505             "line": [
52506                 1880,
52507                 25
52508             ]
52509         },
52510         "other-line": {
52511             "line": [
52512                 1940,
52513                 25
52514             ]
52515         },
52516         "category-roads": {
52517             "line": [
52518                 2000,
52519                 25
52520             ]
52521         },
52522         "category-rail": {
52523             "line": [
52524                 2060,
52525                 25
52526             ]
52527         },
52528         "category-path": {
52529             "line": [
52530                 2120,
52531                 25
52532             ]
52533         },
52534         "category-water": {
52535             "line": [
52536                 2180,
52537                 25
52538             ]
52539         },
52540         "pipeline": {
52541             "line": [
52542                 2300,
52543                 25
52544             ]
52545         },
52546         "relation": {
52547             "relation": [
52548                 20,
52549                 25
52550             ]
52551         },
52552         "restriction": {
52553             "relation": [
52554                 80,
52555                 25
52556             ]
52557         },
52558         "multipolygon": {
52559             "relation": [
52560                 141,
52561                 25
52562             ]
52563         },
52564         "boundary": {
52565             "relation": [
52566                 200,
52567                 25
52568             ]
52569         },
52570         "route": {
52571             "relation": [
52572                 260,
52573                 25
52574             ]
52575         },
52576         "route-road": {
52577             "relation": [
52578                 320,
52579                 25
52580             ]
52581         },
52582         "route-bicycle": {
52583             "relation": [
52584                 380,
52585                 25
52586             ]
52587         },
52588         "route-foot": {
52589             "relation": [
52590                 440,
52591                 25
52592             ]
52593         },
52594         "route-bus": {
52595             "relation": [
52596                 500,
52597                 25
52598             ]
52599         },
52600         "route-train": {
52601             "relation": [
52602                 560,
52603                 25
52604             ]
52605         },
52606         "route-detour": {
52607             "relation": [
52608                 620,
52609                 25
52610             ]
52611         },
52612         "route-tram": {
52613             "relation": [
52614                 680,
52615                 25
52616             ]
52617         },
52618         "route-ferry": {
52619             "relation": [
52620                 740,
52621                 25
52622             ]
52623         },
52624         "route-power": {
52625             "relation": [
52626                 800,
52627                 25
52628             ]
52629         },
52630         "route-pipeline": {
52631             "relation": [
52632                 860,
52633                 25
52634             ]
52635         },
52636         "route-master": {
52637             "relation": [
52638                 920,
52639                 25
52640             ]
52641         },
52642         "restriction-no-straight-on": {
52643             "relation": [
52644                 980,
52645                 25
52646             ]
52647         },
52648         "restriction-no-u-turn": {
52649             "relation": [
52650                 1040,
52651                 25
52652             ]
52653         },
52654         "restriction-no-left-turn": {
52655             "relation": [
52656                 1100,
52657                 25
52658             ]
52659         },
52660         "restriction-no-right-turn": {
52661             "relation": [
52662                 1160,
52663                 25
52664             ]
52665         },
52666         "restriction-only-straight-on": {
52667             "relation": [
52668                 1220,
52669                 25
52670             ]
52671         },
52672         "restriction-only-left-turn": {
52673             "relation": [
52674                 1280,
52675                 25
52676             ]
52677         },
52678         "restriction-only-right-turn": {
52679             "relation": [
52680                 1340,
52681                 25
52682             ]
52683         }
52684     },
52685     "operations": {
52686         "icon-operation-delete": [
52687             0,
52688             140
52689         ],
52690         "icon-operation-circularize": [
52691             20,
52692             140
52693         ],
52694         "icon-operation-straighten": [
52695             40,
52696             140
52697         ],
52698         "icon-operation-split": [
52699             60,
52700             140
52701         ],
52702         "icon-operation-disconnect": [
52703             80,
52704             140
52705         ],
52706         "icon-operation-reverse": [
52707             100,
52708             140
52709         ],
52710         "icon-operation-move": [
52711             120,
52712             140
52713         ],
52714         "icon-operation-merge": [
52715             140,
52716             140
52717         ],
52718         "icon-operation-orthogonalize": [
52719             160,
52720             140
52721         ],
52722         "icon-operation-rotate": [
52723             180,
52724             140
52725         ],
52726         "icon-operation-simplify": [
52727             200,
52728             140
52729         ],
52730         "icon-operation-continue": [
52731             220,
52732             140
52733         ],
52734         "icon-operation-disabled-delete": [
52735             0,
52736             160
52737         ],
52738         "icon-operation-disabled-circularize": [
52739             20,
52740             160
52741         ],
52742         "icon-operation-disabled-straighten": [
52743             40,
52744             160
52745         ],
52746         "icon-operation-disabled-split": [
52747             60,
52748             160
52749         ],
52750         "icon-operation-disabled-disconnect": [
52751             80,
52752             160
52753         ],
52754         "icon-operation-disabled-reverse": [
52755             100,
52756             160
52757         ],
52758         "icon-operation-disabled-move": [
52759             120,
52760             160
52761         ],
52762         "icon-operation-disabled-merge": [
52763             140,
52764             160
52765         ],
52766         "icon-operation-disabled-orthogonalize": [
52767             160,
52768             160
52769         ],
52770         "icon-operation-disabled-rotate": [
52771             180,
52772             160
52773         ],
52774         "icon-operation-disabled-simplify": [
52775             200,
52776             160
52777         ],
52778         "icon-operation-disabled-continue": [
52779             220,
52780             160
52781         ],
52782         "icon-restriction-yes": [
52783             50,
52784             80
52785         ],
52786         "icon-restriction-no": [
52787             95,
52788             80
52789         ],
52790         "icon-restriction-only": [
52791             140,
52792             80
52793         ],
52794         "icon-restriction-yes-u": [
52795             185,
52796             80
52797         ],
52798         "icon-restriction-no-u": [
52799             230,
52800             80
52801         ],
52802         "icon-restriction-only-u": [
52803             275,
52804             80
52805         ]
52806     },
52807     "locales": [
52808         "af",
52809         "sq",
52810         "ar",
52811         "ar-AA",
52812         "hy",
52813         "ast",
52814         "bn",
52815         "bs",
52816         "bg-BG",
52817         "ca",
52818         "zh",
52819         "zh-CN",
52820         "zh-HK",
52821         "zh-TW",
52822         "yue",
52823         "hr",
52824         "cs",
52825         "da",
52826         "nl",
52827         "en-GB",
52828         "eo",
52829         "et",
52830         "fi",
52831         "fr",
52832         "gl",
52833         "de",
52834         "el",
52835         "hi-IN",
52836         "hu",
52837         "is",
52838         "id",
52839         "it",
52840         "ja",
52841         "kn",
52842         "ko",
52843         "ko-KR",
52844         "lv",
52845         "lt",
52846         "no",
52847         "fa",
52848         "pl",
52849         "pt",
52850         "pt-BR",
52851         "ro-RO",
52852         "ru",
52853         "sc",
52854         "sr",
52855         "si",
52856         "sk",
52857         "sl",
52858         "es",
52859         "sv",
52860         "tl",
52861         "ta",
52862         "te",
52863         "tr",
52864         "uk",
52865         "vi"
52866     ],
52867     "en": {
52868         "modes": {
52869             "add_area": {
52870                 "title": "Area",
52871                 "description": "Add parks, buildings, lakes or other areas to the map.",
52872                 "tail": "Click on the map to start drawing an area, like a park, lake, or building."
52873             },
52874             "add_line": {
52875                 "title": "Line",
52876                 "description": "Add highways, streets, pedestrian paths, canals or other lines to the map.",
52877                 "tail": "Click on the map to start drawing a road, path, or route."
52878             },
52879             "add_point": {
52880                 "title": "Point",
52881                 "description": "Add restaurants, monuments, postal boxes or other points to the map.",
52882                 "tail": "Click on the map to add a point."
52883             },
52884             "browse": {
52885                 "title": "Browse",
52886                 "description": "Pan and zoom the map."
52887             },
52888             "draw_area": {
52889                 "tail": "Click to add nodes to your area. Click the first node to finish the area."
52890             },
52891             "draw_line": {
52892                 "tail": "Click to add more nodes to the line. Click on other lines to connect to them, and double-click to end the line."
52893             }
52894         },
52895         "operations": {
52896             "add": {
52897                 "annotation": {
52898                     "point": "Added a point.",
52899                     "vertex": "Added a node to a way.",
52900                     "relation": "Added a relation."
52901                 }
52902             },
52903             "start": {
52904                 "annotation": {
52905                     "line": "Started a line.",
52906                     "area": "Started an area."
52907                 }
52908             },
52909             "continue": {
52910                 "key": "A",
52911                 "title": "Continue",
52912                 "description": "Continue this line.",
52913                 "not_eligible": "No line can be continued here.",
52914                 "multiple": "Several lines can be continued here. To choose a line, press the Shift key and click on it to select it.",
52915                 "annotation": {
52916                     "line": "Continued a line.",
52917                     "area": "Continued an area."
52918                 }
52919             },
52920             "cancel_draw": {
52921                 "annotation": "Canceled drawing."
52922             },
52923             "change_role": {
52924                 "annotation": "Changed the role of a relation member."
52925             },
52926             "change_tags": {
52927                 "annotation": "Changed tags."
52928             },
52929             "circularize": {
52930                 "title": "Circularize",
52931                 "description": {
52932                     "line": "Make this line circular.",
52933                     "area": "Make this area circular."
52934                 },
52935                 "key": "O",
52936                 "annotation": {
52937                     "line": "Made a line circular.",
52938                     "area": "Made an area circular."
52939                 },
52940                 "not_closed": "This can't be made circular because it's not a loop.",
52941                 "too_large": "This can't be made circular because not enough of it is currently visible.",
52942                 "connected_to_hidden": "This can't be made circular because it is connected to a hidden feature."
52943             },
52944             "orthogonalize": {
52945                 "title": "Square",
52946                 "description": {
52947                     "line": "Square the corners of this line.",
52948                     "area": "Square the corners of this area."
52949                 },
52950                 "key": "S",
52951                 "annotation": {
52952                     "line": "Squared the corners of a line.",
52953                     "area": "Squared the corners of an area."
52954                 },
52955                 "not_squarish": "This can't be made square because it is not squarish.",
52956                 "too_large": "This can't be made square because not enough of it is currently visible.",
52957                 "connected_to_hidden": "This can't be made square because it is connected to a hidden feature."
52958             },
52959             "straighten": {
52960                 "title": "Straighten",
52961                 "description": "Straighten this line.",
52962                 "key": "S",
52963                 "annotation": "Straightened a line.",
52964                 "too_bendy": "This can't be straightened because it bends too much.",
52965                 "connected_to_hidden": "This line can't be straightened because it is connected to a hidden feature."
52966             },
52967             "delete": {
52968                 "title": "Delete",
52969                 "description": "Delete object permanently.",
52970                 "annotation": {
52971                     "point": "Deleted a point.",
52972                     "vertex": "Deleted a node from a way.",
52973                     "line": "Deleted a line.",
52974                     "area": "Deleted an area.",
52975                     "relation": "Deleted a relation.",
52976                     "multiple": "Deleted {n} objects."
52977                 },
52978                 "incomplete_relation": "This feature can't be deleted because it hasn't been fully downloaded.",
52979                 "part_of_relation": "This feature can't be deleted because it's part of a larger relation. You must remove it from the relation first.",
52980                 "connected_to_hidden": "This can't be deleted because it is connected to a hidden feature."
52981             },
52982             "add_member": {
52983                 "annotation": "Added a member to a relation."
52984             },
52985             "delete_member": {
52986                 "annotation": "Removed a member from a relation."
52987             },
52988             "connect": {
52989                 "annotation": {
52990                     "point": "Connected a way to a point.",
52991                     "vertex": "Connected a way to another.",
52992                     "line": "Connected a way to a line.",
52993                     "area": "Connected a way to an area."
52994                 }
52995             },
52996             "disconnect": {
52997                 "title": "Disconnect",
52998                 "description": "Disconnect these lines/areas from each other.",
52999                 "key": "D",
53000                 "annotation": "Disconnected lines/areas.",
53001                 "not_connected": "There aren't enough lines/areas here to disconnect.",
53002                 "connected_to_hidden": "This can't be disconnected because it is connected to a hidden feature."
53003             },
53004             "merge": {
53005                 "title": "Merge",
53006                 "description": "Merge these lines.",
53007                 "key": "C",
53008                 "annotation": "Merged {n} lines.",
53009                 "not_eligible": "These features can't be merged.",
53010                 "not_adjacent": "These lines can't be merged because they aren't connected.",
53011                 "restriction": "These lines can't be merged because at least one is a member of a \"{relation}\" relation.",
53012                 "incomplete_relation": "These features can't be merged because at least one hasn't been fully downloaded."
53013             },
53014             "move": {
53015                 "title": "Move",
53016                 "description": "Move this to a different location.",
53017                 "key": "M",
53018                 "annotation": {
53019                     "point": "Moved a point.",
53020                     "vertex": "Moved a node in a way.",
53021                     "line": "Moved a line.",
53022                     "area": "Moved an area.",
53023                     "multiple": "Moved multiple objects."
53024                 },
53025                 "incomplete_relation": "This feature can't be moved because it hasn't been fully downloaded.",
53026                 "too_large": "This can't be moved because not enough of it is currently visible.",
53027                 "connected_to_hidden": "This can't be moved because it is connected to a hidden feature."
53028             },
53029             "rotate": {
53030                 "title": "Rotate",
53031                 "description": "Rotate this object around its center point.",
53032                 "key": "R",
53033                 "annotation": {
53034                     "line": "Rotated a line.",
53035                     "area": "Rotated an area."
53036                 },
53037                 "too_large": "This can't be rotated because not enough of it is currently visible.",
53038                 "connected_to_hidden": "This can't be rotated because it is connected to a hidden feature."
53039             },
53040             "reverse": {
53041                 "title": "Reverse",
53042                 "description": "Make this line go in the opposite direction.",
53043                 "key": "V",
53044                 "annotation": "Reversed a line."
53045             },
53046             "split": {
53047                 "title": "Split",
53048                 "description": {
53049                     "line": "Split this line into two at this node.",
53050                     "area": "Split the boundary of this area into two.",
53051                     "multiple": "Split the lines/area boundaries at this node into two."
53052                 },
53053                 "key": "X",
53054                 "annotation": {
53055                     "line": "Split a line.",
53056                     "area": "Split an area boundary.",
53057                     "multiple": "Split {n} lines/area boundaries."
53058                 },
53059                 "not_eligible": "Lines can't be split at their beginning or end.",
53060                 "multiple_ways": "There are too many lines here to split.",
53061                 "connected_to_hidden": "This can't be split because it is connected to a hidden feature."
53062             },
53063             "restriction": {
53064                 "help": {
53065                     "select": "Click to select a road segment.",
53066                     "toggle": "Click to toggle turn restrictions.",
53067                     "toggle_on": "Click to add a \"{restriction}\" restriction.",
53068                     "toggle_off": "Click to remove the \"{restriction}\" restriction."
53069                 },
53070                 "annotation": {
53071                     "create": "Added a turn restriction",
53072                     "delete": "Deleted a turn restriction"
53073                 }
53074             }
53075         },
53076         "undo": {
53077             "tooltip": "Undo: {action}",
53078             "nothing": "Nothing to undo."
53079         },
53080         "redo": {
53081             "tooltip": "Redo: {action}",
53082             "nothing": "Nothing to redo."
53083         },
53084         "tooltip_keyhint": "Shortcut:",
53085         "browser_notice": "This editor is supported in Firefox, Chrome, Safari, Opera, and Internet Explorer 9 and above. Please upgrade your browser or use Potlatch 2 to edit the map.",
53086         "translate": {
53087             "translate": "Translate",
53088             "localized_translation_label": "Multilingual name",
53089             "localized_translation_language": "Choose language",
53090             "localized_translation_name": "Name"
53091         },
53092         "zoom_in_edit": "Zoom in to Edit",
53093         "logout": "logout",
53094         "loading_auth": "Connecting to OpenStreetMap...",
53095         "report_a_bug": "report a bug",
53096         "feature_info": {
53097             "hidden_warning": "{count} hidden features",
53098             "hidden_details": "These features are currently hidden: {details}"
53099         },
53100         "status": {
53101             "error": "Unable to connect to API.",
53102             "offline": "The API is offline. Please try editing later.",
53103             "readonly": "The API is read-only. You will need to wait to save your changes."
53104         },
53105         "commit": {
53106             "title": "Save Changes",
53107             "description_placeholder": "Brief description of your contributions",
53108             "message_label": "Changeset comment",
53109             "upload_explanation": "The changes you upload will be visible on all maps that use OpenStreetMap data.",
53110             "upload_explanation_with_user": "The changes you upload as {user} will be visible on all maps that use OpenStreetMap data.",
53111             "save": "Save",
53112             "cancel": "Cancel",
53113             "changes": "{count} Changes",
53114             "warnings": "Warnings",
53115             "modified": "Modified",
53116             "deleted": "Deleted",
53117             "created": "Created"
53118         },
53119         "contributors": {
53120             "list": "Edits by {users}",
53121             "truncated_list": "Edits by {users} and {count} others"
53122         },
53123         "infobox": {
53124             "selected": "{n} selected",
53125             "geometry": "Geometry",
53126             "closed": "closed",
53127             "center": "Center",
53128             "perimeter": "Perimeter",
53129             "length": "Length",
53130             "area": "Area",
53131             "centroid": "Centroid",
53132             "location": "Location",
53133             "metric": "Metric",
53134             "imperial": "Imperial"
53135         },
53136         "geometry": {
53137             "point": "point",
53138             "vertex": "vertex",
53139             "line": "line",
53140             "area": "area",
53141             "relation": "relation"
53142         },
53143         "geocoder": {
53144             "search": "Search worldwide...",
53145             "no_results_visible": "No results in visible map area",
53146             "no_results_worldwide": "No results found"
53147         },
53148         "geolocate": {
53149             "title": "Show My Location"
53150         },
53151         "inspector": {
53152             "no_documentation_combination": "There is no documentation available for this tag combination",
53153             "no_documentation_key": "There is no documentation available for this key",
53154             "show_more": "Show More",
53155             "view_on_osm": "View on openstreetmap.org",
53156             "all_tags": "All tags",
53157             "all_members": "All members",
53158             "all_relations": "All relations",
53159             "new_relation": "New relation...",
53160             "role": "Role",
53161             "choose": "Select feature type",
53162             "results": "{n} results for {search}",
53163             "reference": "View on OpenStreetMap Wiki",
53164             "back_tooltip": "Change feature",
53165             "remove": "Remove",
53166             "search": "Search",
53167             "multiselect": "Selected items",
53168             "unknown": "Unknown",
53169             "incomplete": "<not downloaded>",
53170             "feature_list": "Search features",
53171             "edit": "Edit feature",
53172             "check": {
53173                 "yes": "Yes",
53174                 "no": "No"
53175             },
53176             "none": "None",
53177             "node": "Node",
53178             "way": "Way",
53179             "relation": "Relation",
53180             "location": "Location",
53181             "add_fields": "Add field:"
53182         },
53183         "background": {
53184             "title": "Background",
53185             "description": "Background settings",
53186             "percent_brightness": "{opacity}% brightness",
53187             "none": "None",
53188             "custom": "Custom",
53189             "custom_button": "Edit custom background",
53190             "custom_prompt": "Enter a tile URL template. Valid tokens are {z}, {x}, {y} for Z/X/Y scheme and {u} for quadtile scheme.",
53191             "fix_misalignment": "Fix alignment",
53192             "reset": "reset",
53193             "minimap": {
53194                 "description": "Minimap",
53195                 "tooltip": "Show a zoomed out map to help locate the area currently displayed."
53196             }
53197         },
53198         "map_data": {
53199             "title": "Map Data",
53200             "description": "Map Data",
53201             "data_layers": "Data Layers",
53202             "fill_area": "Fill Areas",
53203             "map_features": "Map Features",
53204             "autohidden": "These features have been automatically hidden because too many would be shown on the screen.  You can zoom in to edit them."
53205         },
53206         "feature": {
53207             "points": {
53208                 "description": "Points",
53209                 "tooltip": "Points of Interest"
53210             },
53211             "major_roads": {
53212                 "description": "Major Roads",
53213                 "tooltip": "Highways, Streets, etc."
53214             },
53215             "minor_roads": {
53216                 "description": "Minor Roads",
53217                 "tooltip": "Service Roads, Parking Aisles, Tracks, etc."
53218             },
53219             "paths": {
53220                 "description": "Paths",
53221                 "tooltip": "Sidewalks, Foot Paths, Cycle Paths, etc."
53222             },
53223             "buildings": {
53224                 "description": "Buildings",
53225                 "tooltip": "Buildings, Shelters, Garages, etc."
53226             },
53227             "landuse": {
53228                 "description": "Landuse Features",
53229                 "tooltip": "Forests, Farmland, Parks, Residential, Commercial, etc."
53230             },
53231             "boundaries": {
53232                 "description": "Boundaries",
53233                 "tooltip": "Administrative Boundaries"
53234             },
53235             "water": {
53236                 "description": "Water Features",
53237                 "tooltip": "Rivers, Lakes, Ponds, Basins, etc."
53238             },
53239             "rail": {
53240                 "description": "Rail Features",
53241                 "tooltip": "Railways"
53242             },
53243             "power": {
53244                 "description": "Power Features",
53245                 "tooltip": "Power Lines, Power Plants, Substations, etc."
53246             },
53247             "past_future": {
53248                 "description": "Past/Future",
53249                 "tooltip": "Proposed, Construction, Abandoned, Demolished, etc."
53250             },
53251             "others": {
53252                 "description": "Others",
53253                 "tooltip": "Everything Else"
53254             }
53255         },
53256         "area_fill": {
53257             "wireframe": {
53258                 "description": "No Fill (Wireframe)",
53259                 "tooltip": "Enabling wireframe mode makes it easy to see the background imagery."
53260             },
53261             "partial": {
53262                 "description": "Partial Fill",
53263                 "tooltip": "Areas are drawn with fill only around their inner edges. (Recommended for beginner mappers)"
53264             },
53265             "full": {
53266                 "description": "Full Fill",
53267                 "tooltip": "Areas are drawn fully filled."
53268             }
53269         },
53270         "restore": {
53271             "heading": "You have unsaved changes",
53272             "description": "Do you wish to restore unsaved changes from a previous editing session?",
53273             "restore": "Restore",
53274             "reset": "Reset"
53275         },
53276         "save": {
53277             "title": "Save",
53278             "help": "Save changes to OpenStreetMap, making them visible to other users.",
53279             "no_changes": "No changes to save.",
53280             "error": "Errors occurred while trying to save",
53281             "status_code": "Server returned status code {code}",
53282             "unknown_error_details": "Please ensure you are connected to the internet.",
53283             "uploading": "Uploading changes to OpenStreetMap.",
53284             "unsaved_changes": "You have unsaved changes",
53285             "conflict": {
53286                 "header": "Resolve conflicting edits",
53287                 "count": "Conflict {num} of {total}",
53288                 "previous": "< Previous",
53289                 "next": "Next >",
53290                 "keep_local": "Keep mine",
53291                 "keep_remote": "Use theirs",
53292                 "restore": "Restore",
53293                 "delete": "Leave Deleted",
53294                 "download_changes": "Or download your changes.",
53295                 "done": "All conflicts resolved!",
53296                 "help": "Another user changed some of the same map features you changed.\nClick on each item below for more details about the conflict, and choose whether to keep\nyour changes or the other user's changes.\n"
53297             }
53298         },
53299         "merge_remote_changes": {
53300             "conflict": {
53301                 "deleted": "This object has been deleted by {user}.",
53302                 "location": "This object was moved by both you and {user}.",
53303                 "nodelist": "Nodes were changed by both you and {user}.",
53304                 "memberlist": "Relation members were changed by both you and {user}.",
53305                 "tags": "You changed the <b>{tag}</b> tag to \"{local}\" and {user} changed it to \"{remote}\"."
53306             }
53307         },
53308         "success": {
53309             "edited_osm": "Edited OSM!",
53310             "just_edited": "You just edited OpenStreetMap!",
53311             "view_on_osm": "View on OSM",
53312             "facebook": "Share on Facebook",
53313             "twitter": "Share on Twitter",
53314             "google": "Share on Google+",
53315             "help_html": "Your changes should appear in the \"Standard\" layer in a few minutes. Other layers, and certain features, may take longer\n(<a href='https://help.openstreetmap.org/questions/4705/why-havent-my-changes-appeared-on-the-map' target='_blank'>details</a>).\n"
53316         },
53317         "confirm": {
53318             "okay": "Okay",
53319             "cancel": "Cancel"
53320         },
53321         "splash": {
53322             "welcome": "Welcome to the iD OpenStreetMap editor",
53323             "text": "iD is a friendly but powerful tool for contributing to the world's best free world map. This is version {version}. For more information see {website} and report bugs at {github}.",
53324             "walkthrough": "Start the Walkthrough",
53325             "start": "Edit Now"
53326         },
53327         "source_switch": {
53328             "live": "live",
53329             "lose_changes": "You have unsaved changes. Switching the map server will discard them. Are you sure you want to switch servers?",
53330             "dev": "dev"
53331         },
53332         "tag_reference": {
53333             "description": "Description",
53334             "on_wiki": "{tag} on wiki.osm.org",
53335             "used_with": "used with {type}"
53336         },
53337         "validations": {
53338             "untagged_point": "Untagged point",
53339             "untagged_line": "Untagged line",
53340             "untagged_area": "Untagged area",
53341             "many_deletions": "You're deleting {n} objects. Are you sure you want to do this? This will delete them from the map that everyone else sees on openstreetmap.org.",
53342             "tag_suggests_area": "The tag {tag} suggests line should be area, but it is not an area",
53343             "untagged_point_tooltip": "Select a feature type that describes what this point is.",
53344             "untagged_line_tooltip": "Select a feature type that describes what this line is.",
53345             "untagged_area_tooltip": "Select a feature type that describes what this area is.",
53346             "deprecated_tags": "Deprecated tags: {tags}"
53347         },
53348         "zoom": {
53349             "in": "Zoom In",
53350             "out": "Zoom Out"
53351         },
53352         "cannot_zoom": "Cannot zoom out further in current mode.",
53353         "full_screen": "Toggle Full Screen",
53354         "gpx": {
53355             "local_layer": "Local GPX file",
53356             "drag_drop": "Drag and drop a .gpx file on the page, or click the button to the right to browse",
53357             "zoom": "Zoom to GPX track",
53358             "browse": "Browse for a .gpx file"
53359         },
53360         "mapillary": {
53361             "tooltip": "Street-level photos from Mapillary",
53362             "title": "Photo Overlay (Mapillary)",
53363             "view_on_mapillary": "View this image on Mapillary"
53364         },
53365         "help": {
53366             "title": "Help",
53367             "help": "# Help\n\nThis is an editor for [OpenStreetMap](http://www.openstreetmap.org/), the\nfree and editable map of the world. You can use it to add and update\ndata in your area, making an open-source and open-data map of the world\nbetter for everyone.\n\nEdits that you make on this map will be visible to everyone who uses\nOpenStreetMap. In order to make an edit, you'll need to\n[log in](https://www.openstreetmap.org/login).\n\nThe [iD editor](http://ideditor.com/) is a collaborative project with [source\ncode available on GitHub](https://github.com/openstreetmap/iD).\n",
53368             "editing_saving": "# Editing & Saving\n\nThis editor is designed to work primarily online, and you're accessing\nit through a website right now.\n\n### Selecting Features\n\nTo select a map feature, like a road or point of interest, click\non it on the map. This will highlight the selected feature, open a panel with\ndetails about it, and show a menu of things you can do with the feature.\n\nTo select multiple features, hold down the 'Shift' key. Then either click\non the features you want to select, or drag on the map to draw a rectangle.\nThis will draw a box and select all the points within it.\n\n### Saving Edits\n\nWhen you make changes like editing roads, buildings, and places, these are\nstored locally until you save them to the server. Don't worry if you make\na mistake - you can undo changes by clicking the undo button, and redo\nchanges by clicking the redo button.\n\nClick 'Save' to finish a group of edits - for instance, if you've completed\nan area of town and would like to start on a new area. You'll have a chance\nto review what you've done, and the editor supplies helpful suggestions\nand warnings if something doesn't seem right about the changes.\n\nIf everything looks good, you can enter a short comment explaining the change\nyou made, and click 'Save' again to post the changes\nto [OpenStreetMap.org](http://www.openstreetmap.org/), where they are visible\nto all other users and available for others to build and improve upon.\n\nIf you can't finish your edits in one sitting, you can leave the editor\nwindow and come back (on the same browser and computer), and the\neditor application will offer to restore your work.\n\n### Using the editor\n\nA list of available keyboard shortcuts can be found [here](http://wiki.openstreetmap.org/wiki/ID/Shortcuts).\n",
53369             "roads": "# Roads\n\nYou can create, fix, and delete roads with this editor. Roads can be all\nkinds: paths, highways, trails, cycleways, and more - any often-crossed\nsegment should be mappable.\n\n### Selecting\n\nClick on a road to select it. An outline should become visible, along\nwith a small tools menu on the map and a sidebar showing more information\nabout the road.\n\n### Modifying\n\nOften you'll see roads that aren't aligned to the imagery behind them\nor to a GPS track. You can adjust these roads so they are in the correct\nplace.\n\nFirst click on the road you want to change. This will highlight it and show\ncontrol points along it that you can drag to better locations. If\nyou want to add new control points for more detail, double-click a part\nof the road without a node, and one will be added.\n\nIf the road connects to another road, but doesn't properly connect on\nthe map, you can drag one of its control points onto the other road in\norder to join them. Having roads connect is important for the map\nand essential for providing driving directions.\n\nYou can also click the 'Move' tool or press the `M` shortcut key to move the entire road at\none time, and then click again to save that movement.\n\n### Deleting\n\nIf a road is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the road could simply be newly built.\n\nYou can delete a road by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n\n### Creating\n\nFound somewhere there should be a road but there isn't? Click the 'Line'\nicon in the top-left of the editor or press the shortcut key `2` to start drawing\na line.\n\nClick on the start of the road on the map to start drawing. If the road\nbranches off from an existing road, start by clicking on the place where they connect.\n\nThen click on points along the road so that it follows the right path, according\nto satellite imagery or GPS. If the road you are drawing crosses another road, connect\nit by clicking on the intersection point. When you're done drawing, double-click\nor press 'Return' or 'Enter' on your keyboard.\n",
53370             "gps": "# GPS\n\nCollected GPS traces are one valuable source of data for OpenStreetMap. This editor\nsupports local traces - `.gpx` files on your local computer. You can collect\nthis kind of GPS trace with a number of smartphone applications as well as\npersonal GPS hardware.\n\nFor information on how to perform a GPS survey, read\n[Mapping with a smartphone, GPS, or paper](http://learnosm.org/en/mobile-mapping/).\n\nTo use a GPX track for mapping, drag and drop the GPX file onto the map\neditor. If it's recognized, it will be added to the map as a bright purple\nline. Click on the 'Map Data' menu on the right side to enable,\ndisable, or zoom to this new GPX-powered layer.\n\nThe GPX track isn't directly uploaded to OpenStreetMap - the best way to\nuse it is to draw on the map, using it as a guide for the new features that\nyou add, and also to [upload it to OpenStreetMap](http://www.openstreetmap.org/trace/create)\nfor other users to use.\n",
53371             "imagery": "# Imagery\n\nAerial imagery is an important resource for mapping. A combination of\nairplane flyovers, satellite views, and freely-compiled sources are available\nin the editor under the 'Background Settings' menu on the right.\n\nBy default a [Bing Maps](http://www.bing.com/maps/) satellite layer is\npresented in the editor, but as you pan and zoom the map to new geographical\nareas, new sources will become available. Some countries, like the United\nStates, France, and Denmark have very high-quality imagery available for some areas.\n\nImagery is sometimes offset from the map data because of a mistake on the\nimagery provider's side. If you see a lot of roads shifted from the background,\ndon't immediately move them all to match the background. Instead you can adjust\nthe imagery so that it matches the existing data by clicking 'Fix alignment' at\nthe bottom of the Background Settings UI.\n",
53372             "addresses": "# Addresses\n\nAddresses are some of the most useful information for the map.\n\nAlthough addresses are often represented as parts of streets, in OpenStreetMap\nthey're recorded as attributes of buildings and places along streets.\n\nYou can add address information to places mapped as building outlines\nas well as those mapped as single points. The optimal source of address\ndata is from an on-the-ground survey or personal knowledge - as with any\nother feature, copying from commercial sources like Google Maps is strictly\nforbidden.\n",
53373             "inspector": "# Using the Inspector\n\nThe inspector is the section on the left side of the page that allows you to\nedit the details of the selected feature.\n\n### Selecting a Feature Type\n\nAfter you add a point, line, or area, you can choose what type of feature it\nis, like whether it's a highway or residential road, supermarket or cafe.\nThe inspector will display buttons for common feature types, and you can\nfind others by typing what you're looking for in the search box.\n\nClick the 'i' in the bottom-right-hand corner of a feature type button to\nlearn more about it. Click a button to choose that type.\n\n### Using Forms and Editing Tags\n\nAfter you choose a feature type, or when you select a feature that already\nhas a type assigned, the inspector will display fields with details about\nthe feature like its name and address.\n\nBelow the fields you see, you can click the 'Add field' dropdown to add\nother details, like a Wikipedia link, wheelchair access, and more.\n\nAt the bottom of the inspector, click 'Additional tags' to add arbitrary\nother tags to the element. [Taginfo](http://taginfo.openstreetmap.org/) is a\ngreat resource for learn more about popular tag combinations.\n\nChanges you make in the inspector are automatically applied to the map.\nYou can undo them at any time by clicking the 'Undo' button.\n",
53374             "buildings": "# Buildings\n\nOpenStreetMap is the world's largest database of buildings. You can create\nand improve this database.\n\n### Selecting\n\nYou can select a building by clicking on its border. This will highlight the\nbuilding and open a small tools menu and a sidebar showing more information\nabout the building.\n\n### Modifying\n\nSometimes buildings are incorrectly placed or have incorrect tags.\n\nTo move an entire building, select it, then click the 'Move' tool. Move your\nmouse to shift the building, and click when it's correctly placed.\n\nTo fix the specific shape of a building, click and drag the nodes that form\nits border into better places.\n\n### Creating\n\nOne of the main questions around adding buildings to the map is that\nOpenStreetMap records buildings both as shapes and points. The rule of thumb\nis to _map a building as a shape whenever possible_, and map companies, homes,\namenities, and other things that operate out of buildings as points placed\nwithin the building shape.\n\nStart drawing a building as a shape by clicking the 'Area' button in the top\nleft of the interface, and end it either by pressing 'Return' on your keyboard\nor clicking on the first node drawn to close the shape.\n\n### Deleting\n\nIf a building is entirely incorrect - you can see that it doesn't exist in satellite\nimagery and ideally have confirmed locally that it's not present - you can delete\nit, which removes it from the map. Be cautious when deleting features -\nlike any other edit, the results are seen by everyone and satellite imagery\nis often out of date, so the building could simply be newly built.\n\nYou can delete a building by clicking on it to select it, then clicking the\ntrash can icon or pressing the 'Delete' key.\n",
53375             "relations": "# Relations\n\nA relation is a special type of feature in OpenStreetMap that groups together\nother features. For example, two common types of relations are *route relations*,\nwhich group together sections of road that belong to a specific freeway or\nhighway, and *multipolygons*, which group together several lines that define\na complex area (one with several pieces or holes in it like a donut).\n\nThe group of features in a relation are called *members*. In the sidebar, you can\nsee which relations a feature is a member of, and click on a relation there\nto select the it. When the relation is selected, you can see all of its\nmembers listed in the sidebar and highlighted on the map.\n\nFor the most part, iD will take care of maintaining relations automatically\nwhile you edit. The main thing you should be aware of is that if you delete a\nsection of road to redraw it more accurately, you should make sure that the\nnew section is a member of the same relations as the original.\n\n## Editing Relations\n\nIf you want to edit relations, here are the basics.\n\nTo add a feature to a relation, select the feature, click the \"+\" button in the\n\"All relations\" section of the sidebar, and select or type the name of the relation.\n\nTo create a new relation, select the first feature that should be a member,\nclick the \"+\" button in the \"All relations\" section, and select \"New relation...\".\n\nTo remove a feature from a relation, select the feature and click the trash\nbutton next to the relation you want to remove it from.\n\nYou can create multipolygons with holes using the \"Merge\" tool. Draw two areas (inner\nand outer), hold the Shift key and click on each of them to select them both, and then\nclick the \"Merge\" (+) button.\n"
53376         },
53377         "intro": {
53378             "navigation": {
53379                 "title": "Navigation",
53380                 "drag": "The main map area shows OpenStreetMap data on top of a background. You can navigate by dragging and scrolling, just like any web map. **Drag the map!**",
53381                 "select": "Map features are represented three ways: using points, lines or areas. All features can be selected by clicking on them. **Click on the point to select it.**",
53382                 "header": "The header shows us the feature type.",
53383                 "pane": "When a feature is selected, the feature editor is displayed. The header shows us the feature type and the main pane shows the feature's attributes, such as its name and address. **Close the feature editor with the close button in the top right.**"
53384             },
53385             "points": {
53386                 "title": "Points",
53387                 "add": "Points can be used to represent features such as shops, restaurants and monuments. They mark a specific location, and describe what's there. **Click the Point button to add a new point.**",
53388                 "place": "The point can be placed by clicking on the map. **Place the point on top of the building.**",
53389                 "search": "There are many different features that can be represented by points. The point you just added is a Cafe. **Search for '{name}'**",
53390                 "choose": "**Choose Cafe from the list.**",
53391                 "describe": "The point is now marked as a cafe. Using the feature editor, we can add more information about the feature. **Add a name**",
53392                 "close": "The feature editor can be closed by clicking on the close button. **Close the feature editor**",
53393                 "reselect": "Often points will already exist, but have mistakes or be incomplete. We can edit existing points. **Select the point you just created.**",
53394                 "fixname": "**Change the name and close the feature editor.**",
53395                 "reselect_delete": "All features on the map can be deleted. **Click on the point you created.**",
53396                 "delete": "The menu around the point contains operations that can be performed on it, including delete. **Delete the point.**"
53397             },
53398             "areas": {
53399                 "title": "Areas",
53400                 "add": "Areas are used to show the boundaries of features like lakes, buildings, and residential areas. They can be also be used for more detailed mapping of many features you might normally map as points. **Click the Area button to add a new area.**",
53401                 "corner": "Areas are drawn by placing nodes that mark the boundary of the area. **Place the starting node on one of the corners of the playground.**",
53402                 "place": "Draw the area by placing more nodes. Finish the area by clicking on the starting node. **Draw an area for the playground.**",
53403                 "search": "**Search for '{name}'.**",
53404                 "choose": "**Choose Playground from the list.**",
53405                 "describe": "**Add a name, and close the feature editor**"
53406             },
53407             "lines": {
53408                 "title": "Lines",
53409                 "add": "Lines are used to represent features such as roads, railroads and rivers. **Click the Line button to add a new line.**",
53410                 "start": "**Start the line by clicking on the end of the road.**",
53411                 "intersect": "Click to add more nodes to the line. You can drag the map while drawing if necessary. Roads, and many other types of lines, are part of a larger network. It is important for these lines to be connected properly in order for routing applications to work. **Click on Flower Street, to create an intersection connecting the two lines.**",
53412                 "finish": "Lines can be finished by clicking on the last node again. **Finish drawing the road.**",
53413                 "road": "**Select Road from the list**",
53414                 "residential": "There are different types of roads, the most common of which is Residential. **Choose the Residential road type**",
53415                 "describe": "**Name the road and close the feature editor.**",
53416                 "restart": "The road needs to intersect Flower Street.",
53417                 "wrong_preset": "You didn't select the Residential road type. **Click here to choose again**"
53418             },
53419             "startediting": {
53420                 "title": "Start Editing",
53421                 "help": "More documentation and this walkthrough are available here.",
53422                 "save": "Don't forget to regularly save your changes!",
53423                 "start": "Start mapping!"
53424             }
53425         },
53426         "presets": {
53427             "categories": {
53428                 "category-building": {
53429                     "name": "Building"
53430                 },
53431                 "category-golf": {
53432                     "name": "Golf"
53433                 },
53434                 "category-landuse": {
53435                     "name": "Land Use"
53436                 },
53437                 "category-path": {
53438                     "name": "Path"
53439                 },
53440                 "category-rail": {
53441                     "name": "Rail"
53442                 },
53443                 "category-restriction": {
53444                     "name": "Restriction"
53445                 },
53446                 "category-road": {
53447                     "name": "Road"
53448                 },
53449                 "category-route": {
53450                     "name": "Route"
53451                 },
53452                 "category-water-area": {
53453                     "name": "Water"
53454                 },
53455                 "category-water-line": {
53456                     "name": "Water"
53457                 }
53458             },
53459             "fields": {
53460                 "access": {
53461                     "label": "Allowed Access",
53462                     "placeholder": "Not Specified",
53463                     "types": {
53464                         "access": "All",
53465                         "foot": "Foot",
53466                         "motor_vehicle": "Motor Vehicles",
53467                         "bicycle": "Bicycles",
53468                         "horse": "Horses"
53469                     },
53470                     "options": {
53471                         "yes": {
53472                             "title": "Allowed",
53473                             "description": "Access permitted by law; a right of way"
53474                         },
53475                         "no": {
53476                             "title": "Prohibited",
53477                             "description": "Access not permitted to the general public"
53478                         },
53479                         "permissive": {
53480                             "title": "Permissive",
53481                             "description": "Access permitted until such time as the owner revokes the permission"
53482                         },
53483                         "private": {
53484                             "title": "Private",
53485                             "description": "Access permitted only with permission of the owner on an individual basis"
53486                         },
53487                         "designated": {
53488                             "title": "Designated",
53489                             "description": "Access permitted according to signs or specific local laws"
53490                         },
53491                         "destination": {
53492                             "title": "Destination",
53493                             "description": "Access permitted only to reach a destination"
53494                         },
53495                         "dismount": {
53496                             "title": "Dismount",
53497                             "description": "Access permitted but rider must dismount"
53498                         }
53499                     }
53500                 },
53501                 "access_simple": {
53502                     "label": "Allowed Access",
53503                     "placeholder": "yes"
53504                 },
53505                 "access_toilets": {
53506                     "label": "Access"
53507                 },
53508                 "address": {
53509                     "label": "Address",
53510                     "placeholders": {
53511                         "housename": "Housename",
53512                         "housenumber": "123",
53513                         "conscriptionnumber": "123",
53514                         "street": "Street",
53515                         "city": "City",
53516                         "postcode": "Postcode",
53517                         "place": "Place",
53518                         "hamlet": "Hamlet",
53519                         "suburb": "Suburb",
53520                         "subdistrict": "Subdistrict",
53521                         "district": "District",
53522                         "province": "Province",
53523                         "state": "State",
53524                         "country": "Country"
53525                     }
53526                 },
53527                 "admin_level": {
53528                     "label": "Admin Level"
53529                 },
53530                 "aerialway": {
53531                     "label": "Type"
53532                 },
53533                 "aerialway/access": {
53534                     "label": "Access",
53535                     "options": {
53536                         "entry": "Entry",
53537                         "exit": "Exit",
53538                         "both": "Both"
53539                     }
53540                 },
53541                 "aerialway/bubble": {
53542                     "label": "Bubble"
53543                 },
53544                 "aerialway/capacity": {
53545                     "label": "Capacity (per hour)",
53546                     "placeholder": "500, 2500, 5000..."
53547                 },
53548                 "aerialway/duration": {
53549                     "label": "Duration (minutes)",
53550                     "placeholder": "1, 2, 3..."
53551                 },
53552                 "aerialway/heating": {
53553                     "label": "Heated"
53554                 },
53555                 "aerialway/occupancy": {
53556                     "label": "Occupancy",
53557                     "placeholder": "2, 4, 8..."
53558                 },
53559                 "aerialway/summer/access": {
53560                     "label": "Access (summer)",
53561                     "options": {
53562                         "entry": "Entry",
53563                         "exit": "Exit",
53564                         "both": "Both"
53565                     }
53566                 },
53567                 "aeroway": {
53568                     "label": "Type"
53569                 },
53570                 "amenity": {
53571                     "label": "Type"
53572                 },
53573                 "area/highway": {
53574                     "label": "Type"
53575                 },
53576                 "artist": {
53577                     "label": "Artist"
53578                 },
53579                 "artwork_type": {
53580                     "label": "Type"
53581                 },
53582                 "atm": {
53583                     "label": "ATM"
53584                 },
53585                 "backrest": {
53586                     "label": "Backrest"
53587                 },
53588                 "barrier": {
53589                     "label": "Type"
53590                 },
53591                 "bench": {
53592                     "label": "Bench"
53593                 },
53594                 "bicycle_parking": {
53595                     "label": "Type"
53596                 },
53597                 "boundary": {
53598                     "label": "Type"
53599                 },
53600                 "brand": {
53601                     "label": "Brand"
53602                 },
53603                 "building": {
53604                     "label": "Building"
53605                 },
53606                 "building_area": {
53607                     "label": "Building"
53608                 },
53609                 "capacity": {
53610                     "label": "Capacity",
53611                     "placeholder": "50, 100, 200..."
53612                 },
53613                 "cardinal_direction": {
53614                     "label": "Direction",
53615                     "options": {
53616                         "N": "North",
53617                         "E": "East",
53618                         "S": "South",
53619                         "W": "West",
53620                         "NE": "Northeast",
53621                         "SE": "Southeast",
53622                         "SW": "Southwest",
53623                         "NW": "Northwest",
53624                         "NNE": "North-northeast",
53625                         "ENE": "East-northeast",
53626                         "ESE": "East-southeast",
53627                         "SSE": "South-southeast",
53628                         "SSW": "South-southwest",
53629                         "WSW": "West-southwest",
53630                         "WNW": "West-northwest",
53631                         "NNW": "North-northwest"
53632                     }
53633                 },
53634                 "clock_direction": {
53635                     "label": "Direction",
53636                     "options": {
53637                         "clockwise": "Clockwise",
53638                         "anticlockwise": "Counterclockwise"
53639                     }
53640                 },
53641                 "collection_times": {
53642                     "label": "Collection Times"
53643                 },
53644                 "construction": {
53645                     "label": "Type"
53646                 },
53647                 "content": {
53648                     "label": "Contents"
53649                 },
53650                 "country": {
53651                     "label": "Country"
53652                 },
53653                 "covered": {
53654                     "label": "Covered"
53655                 },
53656                 "craft": {
53657                     "label": "Type"
53658                 },
53659                 "crop": {
53660                     "label": "Crop"
53661                 },
53662                 "crossing": {
53663                     "label": "Type"
53664                 },
53665                 "cuisine": {
53666                     "label": "Cuisine"
53667                 },
53668                 "cycleway": {
53669                     "label": "Bike Lanes",
53670                     "placeholder": "none",
53671                     "types": {
53672                         "cycleway:left": "Left side",
53673                         "cycleway:right": "Right side"
53674                     },
53675                     "options": {
53676                         "none": {
53677                             "title": "None",
53678                             "description": "No bike lane"
53679                         },
53680                         "lane": {
53681                             "title": "Standard bike lane",
53682                             "description": "A bike lane separated from auto traffic by a painted line"
53683                         },
53684                         "shared_lane": {
53685                             "title": "Shared bike lane",
53686                             "description": "A bike lane with no separation from auto traffic"
53687                         },
53688                         "track": {
53689                             "title": "Bike track",
53690                             "description": "A bike lane separated from traffic by a physical barrier"
53691                         },
53692                         "share_busway": {
53693                             "title": "Bike lane shared with bus",
53694                             "description": "A bike lane shared with a bus lane"
53695                         },
53696                         "opposite_lane": {
53697                             "title": "Opposite bike lane",
53698                             "description": "A bike lane that travels in the opposite direction of traffic"
53699                         },
53700                         "opposite": {
53701                             "title": "Contraflow bike lane",
53702                             "description": "A bike lane that travels in both directions on a one-way street"
53703                         }
53704                     }
53705                 },
53706                 "delivery": {
53707                     "label": "Delivery"
53708                 },
53709                 "denomination": {
53710                     "label": "Denomination"
53711                 },
53712                 "denotation": {
53713                     "label": "Denotation"
53714                 },
53715                 "description": {
53716                     "label": "Description"
53717                 },
53718                 "drive_through": {
53719                     "label": "Drive-Through"
53720                 },
53721                 "electrified": {
53722                     "label": "Electrification",
53723                     "placeholder": "Contact Line, Electrified Rail...",
53724                     "options": {
53725                         "contact_line": "Contact Line",
53726                         "rail": "Electrified Rail",
53727                         "yes": "Yes (unspecified)",
53728                         "no": "No"
53729                     }
53730                 },
53731                 "elevation": {
53732                     "label": "Elevation"
53733                 },
53734                 "emergency": {
53735                     "label": "Emergency"
53736                 },
53737                 "entrance": {
53738                     "label": "Type"
53739                 },
53740                 "except": {
53741                     "label": "Exceptions"
53742                 },
53743                 "fax": {
53744                     "label": "Fax",
53745                     "placeholder": "+31 42 123 4567"
53746                 },
53747                 "fee": {
53748                     "label": "Fee"
53749                 },
53750                 "fire_hydrant/type": {
53751                     "label": "Type",
53752                     "options": {
53753                         "pillar": "Pillar/Aboveground",
53754                         "underground": "Underground",
53755                         "wall": "Wall",
53756                         "pond": "Pond"
53757                     }
53758                 },
53759                 "fixme": {
53760                     "label": "Fix Me"
53761                 },
53762                 "fuel": {
53763                     "label": "Fuel"
53764                 },
53765                 "fuel/biodiesel": {
53766                     "label": "Sells Biodiesel"
53767                 },
53768                 "fuel/diesel": {
53769                     "label": "Sells Diesel"
53770                 },
53771                 "fuel/e10": {
53772                     "label": "Sells E10"
53773                 },
53774                 "fuel/e85": {
53775                     "label": "Sells E85"
53776                 },
53777                 "fuel/lpg": {
53778                     "label": "Sells Propane"
53779                 },
53780                 "fuel/octane_100": {
53781                     "label": "Sells Racing Gasoline"
53782                 },
53783                 "fuel/octane_91": {
53784                     "label": "Sells Regular Gasoline"
53785                 },
53786                 "fuel/octane_95": {
53787                     "label": "Sells Midgrade Gasoline"
53788                 },
53789                 "fuel/octane_98": {
53790                     "label": "Sells Premium Gasoline"
53791                 },
53792                 "gauge": {
53793                     "label": "Gauge"
53794                 },
53795                 "gender": {
53796                     "label": "Gender",
53797                     "placeholder": "Unknown",
53798                     "options": {
53799                         "male": "Male",
53800                         "female": "Female",
53801                         "unisex": "Unisex"
53802                     }
53803                 },
53804                 "generator/method": {
53805                     "label": "Method"
53806                 },
53807                 "generator/source": {
53808                     "label": "Source"
53809                 },
53810                 "generator/type": {
53811                     "label": "Type"
53812                 },
53813                 "golf_hole": {
53814                     "label": "Reference",
53815                     "placeholder": "Hole number (1-18)"
53816                 },
53817                 "handicap": {
53818                     "label": "Handicap",
53819                     "placeholder": "1-18"
53820                 },
53821                 "highway": {
53822                     "label": "Type"
53823                 },
53824                 "historic": {
53825                     "label": "Type"
53826                 },
53827                 "hoops": {
53828                     "label": "Hoops",
53829                     "placeholder": "1, 2, 4..."
53830                 },
53831                 "iata": {
53832                     "label": "IATA"
53833                 },
53834                 "icao": {
53835                     "label": "ICAO"
53836                 },
53837                 "incline": {
53838                     "label": "Incline"
53839                 },
53840                 "incline_steps": {
53841                     "label": "Incline",
53842                     "options": {
53843                         "up": "Up",
53844                         "down": "Down"
53845                     }
53846                 },
53847                 "information": {
53848                     "label": "Type"
53849                 },
53850                 "internet_access": {
53851                     "label": "Internet Access",
53852                     "options": {
53853                         "yes": "Yes",
53854                         "no": "No",
53855                         "wlan": "Wifi",
53856                         "wired": "Wired",
53857                         "terminal": "Terminal"
53858                     }
53859                 },
53860                 "lamp_type": {
53861                     "label": "Type"
53862                 },
53863                 "landuse": {
53864                     "label": "Type"
53865                 },
53866                 "lanes": {
53867                     "label": "Lanes",
53868                     "placeholder": "1, 2, 3..."
53869                 },
53870                 "layer": {
53871                     "label": "Layer"
53872                 },
53873                 "leaf_cycle": {
53874                     "label": "Leaf Cycle",
53875                     "options": {
53876                         "evergreen": "Evergreen",
53877                         "deciduous": "Deciduous",
53878                         "semi_evergreen": "Semi-Evergreen",
53879                         "semi_deciduous": "Semi-Deciduous",
53880                         "mixed": "Mixed"
53881                     }
53882                 },
53883                 "leaf_cycle_singular": {
53884                     "label": "Leaf Cycle",
53885                     "options": {
53886                         "evergreen": "Evergreen",
53887                         "deciduous": "Deciduous",
53888                         "semi_evergreen": "Semi-Evergreen",
53889                         "semi_deciduous": "Semi-Deciduous"
53890                     }
53891                 },
53892                 "leaf_type": {
53893                     "label": "Leaf Type",
53894                     "options": {
53895                         "broadleaved": "Broadleaved",
53896                         "needleleaved": "Needleleaved",
53897                         "mixed": "Mixed",
53898                         "leafless": "Leafless"
53899                     }
53900                 },
53901                 "leaf_type_singular": {
53902                     "label": "Leaf Type",
53903                     "options": {
53904                         "broadleaved": "Broadleaved",
53905                         "needleleaved": "Needleleaved",
53906                         "leafless": "Leafless"
53907                     }
53908                 },
53909                 "leisure": {
53910                     "label": "Type"
53911                 },
53912                 "length": {
53913                     "label": "Length (Meters)"
53914                 },
53915                 "level": {
53916                     "label": "Level"
53917                 },
53918                 "levels": {
53919                     "label": "Levels",
53920                     "placeholder": "2, 4, 6..."
53921                 },
53922                 "lit": {
53923                     "label": "Lit"
53924                 },
53925                 "location": {
53926                     "label": "Location"
53927                 },
53928                 "man_made": {
53929                     "label": "Type"
53930                 },
53931                 "maxspeed": {
53932                     "label": "Speed Limit",
53933                     "placeholder": "40, 50, 60..."
53934                 },
53935                 "mtb/scale": {
53936                     "label": "Mountain Biking Difficulty",
53937                     "placeholder": "0, 1, 2, 3...",
53938                     "options": {
53939                         "0": "0: Solid gravel/packed earth, no obstacles, wide curves",
53940                         "1": "1: Some loose surface, small obstacles, wide curves",
53941                         "2": "2: Much loose surface, large obstacles, easy hairpins",
53942                         "3": "3: Slippery surface, large obstacles, tight hairpins",
53943                         "4": "4: Loose surface or boulders, dangerous hairpins",
53944                         "5": "5: Maximum difficulty, boulder fields, landslides",
53945                         "6": "6: Not rideable except by the very best mountain bikers"
53946                     }
53947                 },
53948                 "mtb/scale/imba": {
53949                     "label": "IMBA Trail Difficulty",
53950                     "placeholder": "Easy, Medium, Difficult...",
53951                     "options": {
53952                         "0": "Easiest (white circle)",
53953                         "1": "Easy (green circle)",
53954                         "2": "Medium (blue square)",
53955                         "3": "Difficult (black diamond)",
53956                         "4": "Extremely Difficult (double black diamond)"
53957                     }
53958                 },
53959                 "mtb/scale/uphill": {
53960                     "label": "Mountain Biking Uphill Difficulty",
53961                     "placeholder": "0, 1, 2, 3...",
53962                     "options": {
53963                         "0": "0: Avg. incline <10%, gravel/packed earth, no obstacles",
53964                         "1": "1: Avg. incline <15%, gravel/packed earth, few small objects",
53965                         "2": "2: Avg. incline <20%, stable surface, fistsize rocks/roots",
53966                         "3": "3: Avg. incline <25%, variable surface, fistsize rocks/branches",
53967                         "4": "4: Avg. incline <30%, poor condition, big rocks/branches",
53968                         "5": "5: Very steep, bike generally needs to be pushed or carried"
53969                     }
53970                 },
53971                 "name": {
53972                     "label": "Name",
53973                     "placeholder": "Common name (if any)"
53974                 },
53975                 "natural": {
53976                     "label": "Natural"
53977                 },
53978                 "network": {
53979                     "label": "Network"
53980                 },
53981                 "note": {
53982                     "label": "Note"
53983                 },
53984                 "office": {
53985                     "label": "Type"
53986                 },
53987                 "oneway": {
53988                     "label": "One Way",
53989                     "options": {
53990                         "undefined": "Assumed to be No",
53991                         "yes": "Yes",
53992                         "no": "No"
53993                     }
53994                 },
53995                 "oneway_yes": {
53996                     "label": "One Way",
53997                     "options": {
53998                         "undefined": "Assumed to be Yes",
53999                         "yes": "Yes",
54000                         "no": "No"
54001                     }
54002                 },
54003                 "opening_hours": {
54004                     "label": "Hours"
54005                 },
54006                 "operator": {
54007                     "label": "Operator"
54008                 },
54009                 "par": {
54010                     "label": "Par",
54011                     "placeholder": "3, 4, 5..."
54012                 },
54013                 "park_ride": {
54014                     "label": "Park and Ride"
54015                 },
54016                 "parking": {
54017                     "label": "Type",
54018                     "options": {
54019                         "surface": "Surface",
54020                         "multi-storey": "Multilevel",
54021                         "underground": "Underground",
54022                         "sheds": "Sheds",
54023                         "carports": "Carports",
54024                         "garage_boxes": "Garage Boxes",
54025                         "lane": "Roadside Lane"
54026                     }
54027                 },
54028                 "phone": {
54029                     "label": "Phone",
54030                     "placeholder": "+31 42 123 4567"
54031                 },
54032                 "piste/difficulty": {
54033                     "label": "Difficulty",
54034                     "placeholder": "Easy, Intermediate, Advanced...",
54035                     "options": {
54036                         "novice": "Novice (instructional)",
54037                         "easy": "Easy (green circle)",
54038                         "intermediate": "Intermediate (blue square)",
54039                         "advanced": "Advanced (black diamond)",
54040                         "expert": "Expert (double black diamond)",
54041                         "freeride": "Freeride (off-piste)",
54042                         "extreme": "Extreme (climbing equipment required)"
54043                     }
54044                 },
54045                 "piste/grooming": {
54046                     "label": "Grooming",
54047                     "options": {
54048                         "classic": "Classic",
54049                         "mogul": "Mogul",
54050                         "backcountry": "Backcountry",
54051                         "classic+skating": "Classic and Skating",
54052                         "scooter": "Scooter/Snowmobile",
54053                         "skating": "Skating"
54054                     }
54055                 },
54056                 "piste/type": {
54057                     "label": "Type",
54058                     "options": {
54059                         "downhill": "Downhill",
54060                         "nordic": "Nordic",
54061                         "skitour": "Skitour",
54062                         "sled": "Sled",
54063                         "hike": "Hike",
54064                         "sleigh": "Sleigh",
54065                         "ice_skate": "Ice Skate",
54066                         "snow_park": "Snow Park",
54067                         "playground": "Playground"
54068                     }
54069                 },
54070                 "place": {
54071                     "label": "Type"
54072                 },
54073                 "population": {
54074                     "label": "Population"
54075                 },
54076                 "power": {
54077                     "label": "Type"
54078                 },
54079                 "power_supply": {
54080                     "label": "Power Supply"
54081                 },
54082                 "railway": {
54083                     "label": "Type"
54084                 },
54085                 "recycling/cans": {
54086                     "label": "Accepts Cans"
54087                 },
54088                 "recycling/clothes": {
54089                     "label": "Accepts Clothes"
54090                 },
54091                 "recycling/glass": {
54092                     "label": "Accepts Glass"
54093                 },
54094                 "recycling/glass_bottles": {
54095                     "label": "Accepts Glass Bottles"
54096                 },
54097                 "recycling/paper": {
54098                     "label": "Accepts Paper"
54099                 },
54100                 "recycling/plastic": {
54101                     "label": "Accepts Plastic"
54102                 },
54103                 "recycling/type": {
54104                     "label": "Recycling Type",
54105                     "options": {
54106                         "container": "Container",
54107                         "centre": "Recycling Center"
54108                     }
54109                 },
54110                 "ref": {
54111                     "label": "Reference"
54112                 },
54113                 "relation": {
54114                     "label": "Type"
54115                 },
54116                 "religion": {
54117                     "label": "Religion"
54118                 },
54119                 "restriction": {
54120                     "label": "Type"
54121                 },
54122                 "restrictions": {
54123                     "label": "Turn Restrictions"
54124                 },
54125                 "route": {
54126                     "label": "Type"
54127                 },
54128                 "route_master": {
54129                     "label": "Type"
54130                 },
54131                 "sac_scale": {
54132                     "label": "Hiking Difficulty",
54133                     "placeholder": "Mountain Hiking, Alpine Hiking...",
54134                     "options": {
54135                         "hiking": "T1: Hiking",
54136                         "mountain_hiking": "T2: Mountain Hiking",
54137                         "demanding_mountain_hiking": "T3: Demanding Mountain Hiking",
54138                         "alpine_hiking": "T4: Alpine Hiking",
54139                         "demanding_alpine_hiking": "T5: Demanding Alpine Hiking",
54140                         "difficult_alpine_hiking": "T6: Difficult Alpine Hiking"
54141                     }
54142                 },
54143                 "sanitary_dump_station": {
54144                     "label": "Toilet Disposal"
54145                 },
54146                 "seasonal": {
54147                     "label": "Seasonal"
54148                 },
54149                 "service": {
54150                     "label": "Type"
54151                 },
54152                 "service/bicycle/chain_tool": {
54153                     "label": "Chain Tool",
54154                     "options": {
54155                         "undefined": "Assumed to be No",
54156                         "yes": "Yes",
54157                         "no": "No"
54158                     }
54159                 },
54160                 "service/bicycle/pump": {
54161                     "label": "Air Pump",
54162                     "options": {
54163                         "undefined": "Assumed to be No",
54164                         "yes": "Yes",
54165                         "no": "No"
54166                     }
54167                 },
54168                 "service_rail": {
54169                     "label": "Service Type",
54170                     "options": {
54171                         "spur": "Spur",
54172                         "yard": "Yard",
54173                         "siding": "Siding",
54174                         "crossover": "Crossover"
54175                     }
54176                 },
54177                 "shelter": {
54178                     "label": "Shelter"
54179                 },
54180                 "shelter_type": {
54181                     "label": "Type"
54182                 },
54183                 "shop": {
54184                     "label": "Type"
54185                 },
54186                 "sloped_curb": {
54187                     "label": "Sloped Curb"
54188                 },
54189                 "smoking": {
54190                     "label": "Smoking",
54191                     "placeholder": "No, Separated, Yes...",
54192                     "options": {
54193                         "no": "No smoking anywhere",
54194                         "separated": "In smoking areas, not physically isolated",
54195                         "isolated": "In smoking areas, physically isolated",
54196                         "outside": "Allowed outside",
54197                         "yes": "Allowed everywhere",
54198                         "dedicated": "Dedicated to smokers (e.g. smokers' club)"
54199                     }
54200                 },
54201                 "smoothness": {
54202                     "label": "Smoothness",
54203                     "placeholder": "Thin Rollers, Wheels, Off-Road...",
54204                     "options": {
54205                         "excellent": "Thin Rollers: rollerblade, skateboard",
54206                         "good": "Thin Wheels: racing bike",
54207                         "intermediate": "Wheels: city bike, wheelchair, scooter",
54208                         "bad": "Robust Wheels: trekking bike, car, rickshaw",
54209                         "very_bad": "High Clearance: light duty off-road vehicle",
54210                         "horrible": "Off-Road: heavy duty off-road vehicle",
54211                         "very_horrible": "Specialized off-road: tractor, ATV",
54212                         "impassable": "Impassable / No wheeled vehicle"
54213                     }
54214                 },
54215                 "social_facility_for": {
54216                     "label": "People served",
54217                     "placeholder": "Homeless, Disabled, Child, etc"
54218                 },
54219                 "source": {
54220                     "label": "Source"
54221                 },
54222                 "sport": {
54223                     "label": "Sport"
54224                 },
54225                 "sport_ice": {
54226                     "label": "Sport"
54227                 },
54228                 "sport_racing": {
54229                     "label": "Sport"
54230                 },
54231                 "structure": {
54232                     "label": "Structure",
54233                     "placeholder": "Unknown",
54234                     "options": {
54235                         "bridge": "Bridge",
54236                         "tunnel": "Tunnel",
54237                         "embankment": "Embankment",
54238                         "cutting": "Cutting",
54239                         "ford": "Ford"
54240                     }
54241                 },
54242                 "studio_type": {
54243                     "label": "Type"
54244                 },
54245                 "substation": {
54246                     "label": "Type"
54247                 },
54248                 "supervised": {
54249                     "label": "Supervised"
54250                 },
54251                 "surface": {
54252                     "label": "Surface"
54253                 },
54254                 "tactile_paving": {
54255                     "label": "Tactile Paving"
54256                 },
54257                 "takeaway": {
54258                     "label": "Takeaway",
54259                     "placeholder": "Yes, No, Takeaway Only...",
54260                     "options": {
54261                         "yes": "Yes",
54262                         "no": "No",
54263                         "only": "Takeaway Only"
54264                     }
54265                 },
54266                 "toilets/disposal": {
54267                     "label": "Disposal",
54268                     "options": {
54269                         "flush": "Flush",
54270                         "pitlatrine": "Pit/Latrine",
54271                         "chemical": "Chemical",
54272                         "bucket": "Bucket"
54273                     }
54274                 },
54275                 "tourism": {
54276                     "label": "Type"
54277                 },
54278                 "towertype": {
54279                     "label": "Tower type"
54280                 },
54281                 "tracktype": {
54282                     "label": "Track Type",
54283                     "placeholder": "Solid, Mostly Solid, Soft...",
54284                     "options": {
54285                         "grade1": "Solid: paved or heavily compacted hardcore surface",
54286                         "grade2": "Mostly Solid: gravel/rock with some soft material mixed in",
54287                         "grade3": "Even mixture of hard and soft materials",
54288                         "grade4": "Mostly Soft: soil/sand/grass with some hard material mixed in",
54289                         "grade5": "Soft: soil/sand/grass"
54290                     }
54291                 },
54292                 "trail_visibility": {
54293                     "label": "Trail Visibility",
54294                     "placeholder": "Excellent, Good, Bad...",
54295                     "options": {
54296                         "excellent": "Excellent: unambiguous path or markers everywhere",
54297                         "good": "Good: markers visible, sometimes require searching",
54298                         "intermediate": "Intermediate: few markers, path mostly visible",
54299                         "bad": "Bad: no markers, path sometimes invisible/pathless",
54300                         "horrible": "Horrible: often pathless, some orientation skills required",
54301                         "no": "No: pathless, excellent orientation skills required"
54302                     }
54303                 },
54304                 "trees": {
54305                     "label": "Trees"
54306                 },
54307                 "tunnel": {
54308                     "label": "Tunnel"
54309                 },
54310                 "vending": {
54311                     "label": "Type of Goods"
54312                 },
54313                 "water": {
54314                     "label": "Type"
54315                 },
54316                 "water_point": {
54317                     "label": "Water Point"
54318                 },
54319                 "waterway": {
54320                     "label": "Type"
54321                 },
54322                 "website": {
54323                     "label": "Website",
54324                     "placeholder": "http://example.com/"
54325                 },
54326                 "wetland": {
54327                     "label": "Type"
54328                 },
54329                 "wheelchair": {
54330                     "label": "Wheelchair Access"
54331                 },
54332                 "width": {
54333                     "label": "Width (Meters)"
54334                 },
54335                 "wikipedia": {
54336                     "label": "Wikipedia"
54337                 }
54338             },
54339             "presets": {
54340                 "address": {
54341                     "name": "Address",
54342                     "terms": ""
54343                 },
54344                 "aerialway": {
54345                     "name": "Aerialway",
54346                     "terms": "ski lift,funifor,funitel"
54347                 },
54348                 "aerialway/cable_car": {
54349                     "name": "Cable Car",
54350                     "terms": "tramway,ropeway"
54351                 },
54352                 "aerialway/chair_lift": {
54353                     "name": "Chair Lift",
54354                     "terms": ""
54355                 },
54356                 "aerialway/gondola": {
54357                     "name": "Gondola",
54358                     "terms": ""
54359                 },
54360                 "aerialway/magic_carpet": {
54361                     "name": "Magic Carpet Lift",
54362                     "terms": ""
54363                 },
54364                 "aerialway/platter": {
54365                     "name": "Platter Lift",
54366                     "terms": "button lift,poma lift"
54367                 },
54368                 "aerialway/pylon": {
54369                     "name": "Aerialway Pylon",
54370                     "terms": ""
54371                 },
54372                 "aerialway/rope_tow": {
54373                     "name": "Rope Tow Lift",
54374                     "terms": "handle tow,bugel lift"
54375                 },
54376                 "aerialway/station": {
54377                     "name": "Aerialway Station",
54378                     "terms": ""
54379                 },
54380                 "aerialway/t-bar": {
54381                     "name": "T-bar Lift",
54382                     "terms": ""
54383                 },
54384                 "aeroway": {
54385                     "name": "Aeroway",
54386                     "terms": ""
54387                 },
54388                 "aeroway/aerodrome": {
54389                     "name": "Airport",
54390                     "terms": "airplane,airport,aerodrome"
54391                 },
54392                 "aeroway/apron": {
54393                     "name": "Apron",
54394                     "terms": "ramp"
54395                 },
54396                 "aeroway/gate": {
54397                     "name": "Airport gate",
54398                     "terms": ""
54399                 },
54400                 "aeroway/hangar": {
54401                     "name": "Hangar",
54402                     "terms": ""
54403                 },
54404                 "aeroway/helipad": {
54405                     "name": "Helipad",
54406                     "terms": "helicopter,helipad,heliport"
54407                 },
54408                 "aeroway/runway": {
54409                     "name": "Runway",
54410                     "terms": "landing strip"
54411                 },
54412                 "aeroway/taxiway": {
54413                     "name": "Taxiway",
54414                     "terms": ""
54415                 },
54416                 "aeroway/terminal": {
54417                     "name": "Airport terminal",
54418                     "terms": "airport,aerodrome"
54419                 },
54420                 "amenity": {
54421                     "name": "Amenity",
54422                     "terms": ""
54423                 },
54424                 "amenity/arts_centre": {
54425                     "name": "Arts Center",
54426                     "terms": ""
54427                 },
54428                 "amenity/atm": {
54429                     "name": "ATM",
54430                     "terms": "money,cash,machine"
54431                 },
54432                 "amenity/bank": {
54433                     "name": "Bank",
54434                     "terms": "credit union,check,deposit,fund,investment,repository,reserve,safe,savings,stock,treasury,trust,vault"
54435                 },
54436                 "amenity/bar": {
54437                     "name": "Bar",
54438                     "terms": "dive,beer,bier,booze"
54439                 },
54440                 "amenity/bbq": {
54441                     "name": "Barbecue/Grill",
54442                     "terms": "bbq"
54443                 },
54444                 "amenity/bench": {
54445                     "name": "Bench",
54446                     "terms": ""
54447                 },
54448                 "amenity/bicycle_parking": {
54449                     "name": "Bicycle Parking",
54450                     "terms": "bike"
54451                 },
54452                 "amenity/bicycle_rental": {
54453                     "name": "Bicycle Rental",
54454                     "terms": "bike"
54455                 },
54456                 "amenity/bicycle_repair_station": {
54457                     "name": "Bicycle Repair Station",
54458                     "terms": "bike"
54459                 },
54460                 "amenity/biergarten": {
54461                     "name": "Beer Garden",
54462                     "terms": "beer,bier,booze"
54463                 },
54464                 "amenity/boat_rental": {
54465                     "name": "Boat Rental",
54466                     "terms": ""
54467                 },
54468                 "amenity/bureau_de_change": {
54469                     "name": "Currency Exchange",
54470                     "terms": "bureau de change,money changer"
54471                 },
54472                 "amenity/bus_station": {
54473                     "name": "Bus Station",
54474                     "terms": ""
54475                 },
54476                 "amenity/cafe": {
54477                     "name": "Cafe",
54478                     "terms": "coffee,tea"
54479                 },
54480                 "amenity/car_rental": {
54481                     "name": "Car Rental",
54482                     "terms": ""
54483                 },
54484                 "amenity/car_sharing": {
54485                     "name": "Car Sharing",
54486                     "terms": ""
54487                 },
54488                 "amenity/car_wash": {
54489                     "name": "Car Wash",
54490                     "terms": ""
54491                 },
54492                 "amenity/casino": {
54493                     "name": "Casino",
54494                     "terms": "gambling,roulette,craps,poker,blackjack"
54495                 },
54496                 "amenity/charging_station": {
54497                     "name": "Charging Station",
54498                     "terms": "EV,Electric Vehicle,Supercharger"
54499                 },
54500                 "amenity/childcare": {
54501                     "name": "Nursery/Childcare",
54502                     "terms": "daycare,orphanage,playgroup"
54503                 },
54504                 "amenity/cinema": {
54505                     "name": "Cinema",
54506                     "terms": "drive-in,film,flick,movie,theater,picture,show,screen"
54507                 },
54508                 "amenity/clinic": {
54509                     "name": "Clinic",
54510                     "terms": "medical,urgentcare"
54511                 },
54512                 "amenity/clock": {
54513                     "name": "Clock",
54514                     "terms": ""
54515                 },
54516                 "amenity/college": {
54517                     "name": "College Grounds",
54518                     "terms": "university"
54519                 },
54520                 "amenity/community_centre": {
54521                     "name": "Community Center",
54522                     "terms": "event,hall"
54523                 },
54524                 "amenity/compressed_air": {
54525                     "name": "Compressed Air",
54526                     "terms": ""
54527                 },
54528                 "amenity/courthouse": {
54529                     "name": "Courthouse",
54530                     "terms": ""
54531                 },
54532                 "amenity/dentist": {
54533                     "name": "Dentist",
54534                     "terms": "tooth,teeth"
54535                 },
54536                 "amenity/doctor": {
54537                     "name": "Doctor",
54538                     "terms": "medic*"
54539                 },
54540                 "amenity/dojo": {
54541                     "name": "Dojo / Martial Arts Academy",
54542                     "terms": "martial arts,dojang"
54543                 },
54544                 "amenity/drinking_water": {
54545                     "name": "Drinking Water",
54546                     "terms": "fountain,potable"
54547                 },
54548                 "amenity/embassy": {
54549                     "name": "Embassy",
54550                     "terms": ""
54551                 },
54552                 "amenity/fast_food": {
54553                     "name": "Fast Food",
54554                     "terms": "restaurant"
54555                 },
54556                 "amenity/fire_station": {
54557                     "name": "Fire Station",
54558                     "terms": ""
54559                 },
54560                 "amenity/fountain": {
54561                     "name": "Fountain",
54562                     "terms": ""
54563                 },
54564                 "amenity/fuel": {
54565                     "name": "Gas Station",
54566                     "terms": "petrol,fuel,propane,diesel,lng,cng,biodiesel"
54567                 },
54568                 "amenity/grave_yard": {
54569                     "name": "Graveyard",
54570                     "terms": ""
54571                 },
54572                 "amenity/grit_bin": {
54573                     "name": "Grit Bin",
54574                     "terms": "salt,sand"
54575                 },
54576                 "amenity/hospital": {
54577                     "name": "Hospital Grounds",
54578                     "terms": "clinic,doctor,emergency room,health service,hospice,infirmary,institution,nursing home,sanatorium,sanitarium,sick,surgery,ward"
54579                 },
54580                 "amenity/kindergarten": {
54581                     "name": "Preschool/Kindergarten Grounds",
54582                     "terms": "kindergarden,pre-school"
54583                 },
54584                 "amenity/library": {
54585                     "name": "Library",
54586                     "terms": "book"
54587                 },
54588                 "amenity/marketplace": {
54589                     "name": "Marketplace",
54590                     "terms": ""
54591                 },
54592                 "amenity/nightclub": {
54593                     "name": "Nightclub",
54594                     "terms": "disco*,night club,dancing,dance club"
54595                 },
54596                 "amenity/parking": {
54597                     "name": "Car Parking",
54598                     "terms": ""
54599                 },
54600                 "amenity/parking_entrance": {
54601                     "name": "Parking Garage Entrance/Exit",
54602                     "terms": ""
54603                 },
54604                 "amenity/pharmacy": {
54605                     "name": "Pharmacy",
54606                     "terms": "drug,medicine"
54607                 },
54608                 "amenity/place_of_worship": {
54609                     "name": "Place of Worship",
54610                     "terms": "abbey,basilica,bethel,cathedral,chancel,chantry,chapel,church,fold,house of God,house of prayer,house of worship,minster,mission,mosque,oratory,parish,sacellum,sanctuary,shrine,synagogue,tabernacle,temple"
54611                 },
54612                 "amenity/place_of_worship/buddhist": {
54613                     "name": "Buddhist Temple",
54614                     "terms": "stupa,vihara,monastery,temple,pagoda,zendo,dojo"
54615                 },
54616                 "amenity/place_of_worship/christian": {
54617                     "name": "Church",
54618                     "terms": "christian,abbey,basilica,bethel,cathedral,chancel,chantry,chapel,fold,house of God,house of prayer,house of worship,minster,mission,oratory,parish,sacellum,sanctuary,shrine,tabernacle,temple"
54619                 },
54620                 "amenity/place_of_worship/jewish": {
54621                     "name": "Synagogue",
54622                     "terms": "jewish"
54623                 },
54624                 "amenity/place_of_worship/muslim": {
54625                     "name": "Mosque",
54626                     "terms": "muslim"
54627                 },
54628                 "amenity/police": {
54629                     "name": "Police",
54630                     "terms": "badge,constable,constabulary,cop,detective,fed,law,enforcement,officer,patrol"
54631                 },
54632                 "amenity/post_box": {
54633                     "name": "Mailbox",
54634                     "terms": "letter,post"
54635                 },
54636                 "amenity/post_office": {
54637                     "name": "Post Office",
54638                     "terms": "letter,mail"
54639                 },
54640                 "amenity/pub": {
54641                     "name": "Pub",
54642                     "terms": "dive,beer,bier,booze"
54643                 },
54644                 "amenity/public_bookcase": {
54645                     "name": "Public Bookcase",
54646                     "terms": "library,bookcrossing"
54647                 },
54648                 "amenity/ranger_station": {
54649                     "name": "Ranger Station",
54650                     "terms": "visitor center,visitor centre,permit center,permit centre,backcountry office,warden office,warden center"
54651                 },
54652                 "amenity/recycling": {
54653                     "name": "Recycling",
54654                     "terms": "can,bottle,garbage,scrap,trash"
54655                 },
54656                 "amenity/register_office": {
54657                     "name": "Register Office",
54658                     "terms": ""
54659                 },
54660                 "amenity/restaurant": {
54661                     "name": "Restaurant",
54662                     "terms": "bar,breakfast,cafe,café,canteen,coffee,dine,dining,dinner,drive-in,eat,grill,lunch,table"
54663                 },
54664                 "amenity/sanitary_dump_station": {
54665                     "name": "RV Toilet Disposal",
54666                     "terms": "Motor Home,Camper,Sanitary,Dump Station,Elsan,CDP,CTDP,Chemical Toilet"
54667                 },
54668                 "amenity/school": {
54669                     "name": "School Grounds",
54670                     "terms": "academy,elementary school,middle school,high school"
54671                 },
54672                 "amenity/shelter": {
54673                     "name": "Shelter",
54674                     "terms": "lean-to,gazebo,picnic"
54675                 },
54676                 "amenity/social_facility": {
54677                     "name": "Social Facility",
54678                     "terms": ""
54679                 },
54680                 "amenity/social_facility/food_bank": {
54681                     "name": "Food Bank",
54682                     "terms": ""
54683                 },
54684                 "amenity/social_facility/group_home": {
54685                     "name": "Elderly Group Home",
54686                     "terms": "old,senior,living"
54687                 },
54688                 "amenity/social_facility/homeless_shelter": {
54689                     "name": "Homeless Shelter",
54690                     "terms": "houseless,unhoused,displaced"
54691                 },
54692                 "amenity/studio": {
54693                     "name": "Studio",
54694                     "terms": "recording,radio,television"
54695                 },
54696                 "amenity/swimming_pool": {
54697                     "name": "Swimming Pool",
54698                     "terms": ""
54699                 },
54700                 "amenity/taxi": {
54701                     "name": "Taxi Stand",
54702                     "terms": "cab"
54703                 },
54704                 "amenity/telephone": {
54705                     "name": "Telephone",
54706                     "terms": "phone"
54707                 },
54708                 "amenity/theatre": {
54709                     "name": "Theater",
54710                     "terms": "theatre,performance,play,musical"
54711                 },
54712                 "amenity/toilets": {
54713                     "name": "Toilets",
54714                     "terms": "bathroom,restroom,outhouse,privy,head,lavatory,latrine,water closet,WC,W.C."
54715                 },
54716                 "amenity/townhall": {
54717                     "name": "Town Hall",
54718                     "terms": "village,city,government,courthouse,municipal"
54719                 },
54720                 "amenity/university": {
54721                     "name": "University Grounds",
54722                     "terms": "college"
54723                 },
54724                 "amenity/vending_machine": {
54725                     "name": "Vending Machine",
54726                     "terms": "snack,soda,ticket"
54727                 },
54728                 "amenity/veterinary": {
54729                     "name": "Veterinary",
54730                     "terms": "pet clinic,veterinarian,animal hospital,pet doctor"
54731                 },
54732                 "amenity/waste_basket": {
54733                     "name": "Waste Basket",
54734                     "terms": "rubbish,litter,trash,garbage"
54735                 },
54736                 "area": {
54737                     "name": "Area",
54738                     "terms": ""
54739                 },
54740                 "area/highway": {
54741                     "name": "Road Surface",
54742                     "terms": ""
54743                 },
54744                 "barrier": {
54745                     "name": "Barrier",
54746                     "terms": ""
54747                 },
54748                 "barrier/block": {
54749                     "name": "Block",
54750                     "terms": ""
54751                 },
54752                 "barrier/bollard": {
54753                     "name": "Bollard",
54754                     "terms": ""
54755                 },
54756                 "barrier/cattle_grid": {
54757                     "name": "Cattle Grid",
54758                     "terms": ""
54759                 },
54760                 "barrier/city_wall": {
54761                     "name": "City Wall",
54762                     "terms": ""
54763                 },
54764                 "barrier/cycle_barrier": {
54765                     "name": "Cycle Barrier",
54766                     "terms": ""
54767                 },
54768                 "barrier/ditch": {
54769                     "name": "Ditch",
54770                     "terms": ""
54771                 },
54772                 "barrier/entrance": {
54773                     "name": "Entrance",
54774                     "terms": ""
54775                 },
54776                 "barrier/fence": {
54777                     "name": "Fence",
54778                     "terms": ""
54779                 },
54780                 "barrier/gate": {
54781                     "name": "Gate",
54782                     "terms": ""
54783                 },
54784                 "barrier/hedge": {
54785                     "name": "Hedge",
54786                     "terms": ""
54787                 },
54788                 "barrier/kissing_gate": {
54789                     "name": "Kissing Gate",
54790                     "terms": ""
54791                 },
54792                 "barrier/lift_gate": {
54793                     "name": "Lift Gate",
54794                     "terms": ""
54795                 },
54796                 "barrier/retaining_wall": {
54797                     "name": "Retaining Wall",
54798                     "terms": ""
54799                 },
54800                 "barrier/stile": {
54801                     "name": "Stile",
54802                     "terms": ""
54803                 },
54804                 "barrier/toll_booth": {
54805                     "name": "Toll Booth",
54806                     "terms": ""
54807                 },
54808                 "barrier/wall": {
54809                     "name": "Wall",
54810                     "terms": ""
54811                 },
54812                 "boundary/administrative": {
54813                     "name": "Administrative Boundary",
54814                     "terms": ""
54815                 },
54816                 "building": {
54817                     "name": "Building",
54818                     "terms": ""
54819                 },
54820                 "building/apartments": {
54821                     "name": "Apartments",
54822                     "terms": ""
54823                 },
54824                 "building/barn": {
54825                     "name": "Barn",
54826                     "terms": ""
54827                 },
54828                 "building/bunker": {
54829                     "name": "Bunker",
54830                     "terms": ""
54831                 },
54832                 "building/cabin": {
54833                     "name": "Cabin",
54834                     "terms": ""
54835                 },
54836                 "building/cathedral": {
54837                     "name": "Cathedral",
54838                     "terms": ""
54839                 },
54840                 "building/chapel": {
54841                     "name": "Chapel",
54842                     "terms": ""
54843                 },
54844                 "building/church": {
54845                     "name": "Church",
54846                     "terms": ""
54847                 },
54848                 "building/college": {
54849                     "name": "College Building",
54850                     "terms": "university"
54851                 },
54852                 "building/commercial": {
54853                     "name": "Commercial Building",
54854                     "terms": ""
54855                 },
54856                 "building/construction": {
54857                     "name": "Building Under Construction",
54858                     "terms": ""
54859                 },
54860                 "building/detached": {
54861                     "name": "Detached Home",
54862                     "terms": ""
54863                 },
54864                 "building/dormitory": {
54865                     "name": "Dormitory",
54866                     "terms": ""
54867                 },
54868                 "building/entrance": {
54869                     "name": "Entrance/Exit",
54870                     "terms": ""
54871                 },
54872                 "building/garage": {
54873                     "name": "Garage",
54874                     "terms": ""
54875                 },
54876                 "building/garages": {
54877                     "name": "Garages",
54878                     "terms": ""
54879                 },
54880                 "building/greenhouse": {
54881                     "name": "Greenhouse",
54882                     "terms": ""
54883                 },
54884                 "building/hospital": {
54885                     "name": "Hospital Building",
54886                     "terms": ""
54887                 },
54888                 "building/hotel": {
54889                     "name": "Hotel Building",
54890                     "terms": ""
54891                 },
54892                 "building/house": {
54893                     "name": "House",
54894                     "terms": ""
54895                 },
54896                 "building/hut": {
54897                     "name": "Hut",
54898                     "terms": ""
54899                 },
54900                 "building/industrial": {
54901                     "name": "Industrial Building",
54902                     "terms": ""
54903                 },
54904                 "building/kindergarten": {
54905                     "name": "Preschool/Kindergarten Building",
54906                     "terms": "kindergarden,pre-school"
54907                 },
54908                 "building/public": {
54909                     "name": "Public Building",
54910                     "terms": ""
54911                 },
54912                 "building/residential": {
54913                     "name": "Residential Building",
54914                     "terms": ""
54915                 },
54916                 "building/retail": {
54917                     "name": "Retail Building",
54918                     "terms": ""
54919                 },
54920                 "building/roof": {
54921                     "name": "Roof",
54922                     "terms": ""
54923                 },
54924                 "building/school": {
54925                     "name": "School Building",
54926                     "terms": "academy,elementary school,middle school,high school"
54927                 },
54928                 "building/shed": {
54929                     "name": "Shed",
54930                     "terms": ""
54931                 },
54932                 "building/stable": {
54933                     "name": "Stable",
54934                     "terms": ""
54935                 },
54936                 "building/static_caravan": {
54937                     "name": "Static Mobile Home",
54938                     "terms": ""
54939                 },
54940                 "building/terrace": {
54941                     "name": "Row Houses",
54942                     "terms": ""
54943                 },
54944                 "building/train_station": {
54945                     "name": "Train Station",
54946                     "terms": ""
54947                 },
54948                 "building/university": {
54949                     "name": "University Building",
54950                     "terms": "college"
54951                 },
54952                 "building/warehouse": {
54953                     "name": "Warehouse",
54954                     "terms": ""
54955                 },
54956                 "craft": {
54957                     "name": "Craft",
54958                     "terms": ""
54959                 },
54960                 "craft/basket_maker": {
54961                     "name": "Basket Maker",
54962                     "terms": ""
54963                 },
54964                 "craft/beekeeper": {
54965                     "name": "Beekeeper",
54966                     "terms": ""
54967                 },
54968                 "craft/blacksmith": {
54969                     "name": "Blacksmith",
54970                     "terms": ""
54971                 },
54972                 "craft/boatbuilder": {
54973                     "name": "Boat Builder",
54974                     "terms": ""
54975                 },
54976                 "craft/bookbinder": {
54977                     "name": "Bookbinder",
54978                     "terms": "book repair"
54979                 },
54980                 "craft/brewery": {
54981                     "name": "Brewery",
54982                     "terms": "beer,bier"
54983                 },
54984                 "craft/carpenter": {
54985                     "name": "Carpenter",
54986                     "terms": "woodworker"
54987                 },
54988                 "craft/carpet_layer": {
54989                     "name": "Carpet Layer",
54990                     "terms": ""
54991                 },
54992                 "craft/caterer": {
54993                     "name": "Caterer",
54994                     "terms": ""
54995                 },
54996                 "craft/clockmaker": {
54997                     "name": "Clockmaker",
54998                     "terms": ""
54999                 },
55000                 "craft/confectionery": {
55001                     "name": "Confectionery",
55002                     "terms": "sweets,candy"
55003                 },
55004                 "craft/dressmaker": {
55005                     "name": "Dressmaker",
55006                     "terms": "seamstress"
55007                 },
55008                 "craft/electrician": {
55009                     "name": "Electrician",
55010                     "terms": "power,wire"
55011                 },
55012                 "craft/gardener": {
55013                     "name": "Gardener",
55014                     "terms": "landscaper,grounds keeper"
55015                 },
55016                 "craft/glaziery": {
55017                     "name": "Glaziery",
55018                     "terms": "glass,stained-glass,window"
55019                 },
55020                 "craft/handicraft": {
55021                     "name": "Handicraft",
55022                     "terms": ""
55023                 },
55024                 "craft/hvac": {
55025                     "name": "HVAC",
55026                     "terms": "heat*,vent*,air conditioning"
55027                 },
55028                 "craft/insulator": {
55029                     "name": "Insulator",
55030                     "terms": ""
55031                 },
55032                 "craft/jeweler": {
55033                     "name": "Jeweler",
55034                     "terms": ""
55035                 },
55036                 "craft/key_cutter": {
55037                     "name": "Key Cutter",
55038                     "terms": ""
55039                 },
55040                 "craft/locksmith": {
55041                     "name": "Locksmith",
55042                     "terms": ""
55043                 },
55044                 "craft/metal_construction": {
55045                     "name": "Metal Construction",
55046                     "terms": ""
55047                 },
55048                 "craft/optician": {
55049                     "name": "Optician",
55050                     "terms": ""
55051                 },
55052                 "craft/painter": {
55053                     "name": "Painter",
55054                     "terms": ""
55055                 },
55056                 "craft/photographer": {
55057                     "name": "Photographer",
55058                     "terms": ""
55059                 },
55060                 "craft/photographic_laboratory": {
55061                     "name": "Photographic Laboratory",
55062                     "terms": "film"
55063                 },
55064                 "craft/plasterer": {
55065                     "name": "Plasterer",
55066                     "terms": ""
55067                 },
55068                 "craft/plumber": {
55069                     "name": "Plumber",
55070                     "terms": "pipe"
55071                 },
55072                 "craft/pottery": {
55073                     "name": "Pottery",
55074                     "terms": "ceramic"
55075                 },
55076                 "craft/rigger": {
55077                     "name": "Rigger",
55078                     "terms": ""
55079                 },
55080                 "craft/roofer": {
55081                     "name": "Roofer",
55082                     "terms": ""
55083                 },
55084                 "craft/saddler": {
55085                     "name": "Saddler",
55086                     "terms": ""
55087                 },
55088                 "craft/sailmaker": {
55089                     "name": "Sailmaker",
55090                     "terms": ""
55091                 },
55092                 "craft/sawmill": {
55093                     "name": "Sawmill",
55094                     "terms": "lumber"
55095                 },
55096                 "craft/scaffolder": {
55097                     "name": "Scaffolder",
55098                     "terms": ""
55099                 },
55100                 "craft/sculpter": {
55101                     "name": "Sculpter",
55102                     "terms": ""
55103                 },
55104                 "craft/shoemaker": {
55105                     "name": "Shoemaker",
55106                     "terms": "cobbler"
55107                 },
55108                 "craft/stonemason": {
55109                     "name": "Stonemason",
55110                     "terms": "masonry"
55111                 },
55112                 "craft/sweep": {
55113                     "name": "Chimney Sweep",
55114                     "terms": ""
55115                 },
55116                 "craft/tailor": {
55117                     "name": "Tailor",
55118                     "terms": "clothes,suit"
55119                 },
55120                 "craft/tiler": {
55121                     "name": "Tiler",
55122                     "terms": ""
55123                 },
55124                 "craft/tinsmith": {
55125                     "name": "Tinsmith",
55126                     "terms": ""
55127                 },
55128                 "craft/upholsterer": {
55129                     "name": "Upholsterer",
55130                     "terms": ""
55131                 },
55132                 "craft/watchmaker": {
55133                     "name": "Watchmaker",
55134                     "terms": ""
55135                 },
55136                 "craft/window_construction": {
55137                     "name": "Window Construction",
55138                     "terms": "glass"
55139                 },
55140                 "craft/winery": {
55141                     "name": "Winery",
55142                     "terms": ""
55143                 },
55144                 "embankment": {
55145                     "name": "Embankment",
55146                     "terms": ""
55147                 },
55148                 "emergency/ambulance_station": {
55149                     "name": "Ambulance Station",
55150                     "terms": "EMS,EMT,rescue"
55151                 },
55152                 "emergency/fire_hydrant": {
55153                     "name": "Fire Hydrant",
55154                     "terms": ""
55155                 },
55156                 "emergency/phone": {
55157                     "name": "Emergency Phone",
55158                     "terms": ""
55159                 },
55160                 "entrance": {
55161                     "name": "Entrance/Exit",
55162                     "terms": ""
55163                 },
55164                 "footway/crossing": {
55165                     "name": "Street Crossing",
55166                     "terms": ""
55167                 },
55168                 "footway/crosswalk": {
55169                     "name": "Pedestrian Crosswalk",
55170                     "terms": "zebra crossing"
55171                 },
55172                 "footway/sidewalk": {
55173                     "name": "Sidewalk",
55174                     "terms": ""
55175                 },
55176                 "ford": {
55177                     "name": "Ford",
55178                     "terms": ""
55179                 },
55180                 "golf/bunker": {
55181                     "name": "Sand Trap",
55182                     "terms": "hazard,bunker"
55183                 },
55184                 "golf/fairway": {
55185                     "name": "Fairway",
55186                     "terms": ""
55187                 },
55188                 "golf/green": {
55189                     "name": "Putting Green",
55190                     "terms": ""
55191                 },
55192                 "golf/hole": {
55193                     "name": "Golf Hole",
55194                     "terms": ""
55195                 },
55196                 "golf/lateral_water_hazard": {
55197                     "name": "Lateral Water Hazard",
55198                     "terms": ""
55199                 },
55200                 "golf/rough": {
55201                     "name": "Rough",
55202                     "terms": ""
55203                 },
55204                 "golf/tee": {
55205                     "name": "Tee Box",
55206                     "terms": "teeing ground"
55207                 },
55208                 "golf/water_hazard": {
55209                     "name": "Water Hazard",
55210                     "terms": ""
55211                 },
55212                 "highway": {
55213                     "name": "Highway",
55214                     "terms": ""
55215                 },
55216                 "highway/bridleway": {
55217                     "name": "Bridle Path",
55218                     "terms": "bridleway,equestrian,horse"
55219                 },
55220                 "highway/bus_stop": {
55221                     "name": "Bus Stop",
55222                     "terms": ""
55223                 },
55224                 "highway/corridor": {
55225                     "name": "Indoor Corridor",
55226                     "terms": "gallery,hall,hallway,indoor,passage,passageway"
55227                 },
55228                 "highway/crossing": {
55229                     "name": "Street Crossing",
55230                     "terms": ""
55231                 },
55232                 "highway/crosswalk": {
55233                     "name": "Pedestrian Crosswalk",
55234                     "terms": "zebra crossing"
55235                 },
55236                 "highway/cycleway": {
55237                     "name": "Cycle Path",
55238                     "terms": "bike"
55239                 },
55240                 "highway/footway": {
55241                     "name": "Foot Path",
55242                     "terms": "hike,hiking,trackway,trail,walk"
55243                 },
55244                 "highway/living_street": {
55245                     "name": "Living Street",
55246                     "terms": ""
55247                 },
55248                 "highway/mini_roundabout": {
55249                     "name": "Mini-Roundabout",
55250                     "terms": ""
55251                 },
55252                 "highway/motorway": {
55253                     "name": "Motorway",
55254                     "terms": ""
55255                 },
55256                 "highway/motorway_junction": {
55257                     "name": "Motorway Junction / Exit",
55258                     "terms": ""
55259                 },
55260                 "highway/motorway_link": {
55261                     "name": "Motorway Link",
55262                     "terms": "ramp,on ramp,off ramp"
55263                 },
55264                 "highway/path": {
55265                     "name": "Path",
55266                     "terms": "hike,hiking,trackway,trail,walk"
55267                 },
55268                 "highway/pedestrian": {
55269                     "name": "Pedestrian Street",
55270                     "terms": ""
55271                 },
55272                 "highway/primary": {
55273                     "name": "Primary Road",
55274                     "terms": ""
55275                 },
55276                 "highway/primary_link": {
55277                     "name": "Primary Link",
55278                     "terms": "ramp,on ramp,off ramp"
55279                 },
55280                 "highway/raceway": {
55281                     "name": "Motor Raceway",
55282                     "terms": "auto*,race*,nascar"
55283                 },
55284                 "highway/residential": {
55285                     "name": "Residential Road",
55286                     "terms": ""
55287                 },
55288                 "highway/rest_area": {
55289                     "name": "Rest Area",
55290                     "terms": "rest stop"
55291                 },
55292                 "highway/road": {
55293                     "name": "Unknown Road",
55294                     "terms": ""
55295                 },
55296                 "highway/secondary": {
55297                     "name": "Secondary Road",
55298                     "terms": ""
55299                 },
55300                 "highway/secondary_link": {
55301                     "name": "Secondary Link",
55302                     "terms": "ramp,on ramp,off ramp"
55303                 },
55304                 "highway/service": {
55305                     "name": "Service Road",
55306                     "terms": ""
55307                 },
55308                 "highway/service/alley": {
55309                     "name": "Alley",
55310                     "terms": ""
55311                 },
55312                 "highway/service/drive-through": {
55313                     "name": "Drive-Through",
55314                     "terms": ""
55315                 },
55316                 "highway/service/driveway": {
55317                     "name": "Driveway",
55318                     "terms": ""
55319                 },
55320                 "highway/service/emergency_access": {
55321                     "name": "Emergency Access",
55322                     "terms": ""
55323                 },
55324                 "highway/service/parking_aisle": {
55325                     "name": "Parking Aisle",
55326                     "terms": ""
55327                 },
55328                 "highway/services": {
55329                     "name": "Service Area",
55330                     "terms": "services,travel plaza,service station"
55331                 },
55332                 "highway/steps": {
55333                     "name": "Steps",
55334                     "terms": "stairs,staircase"
55335                 },
55336                 "highway/stop": {
55337                     "name": "Stop Sign",
55338                     "terms": "stop sign"
55339                 },
55340                 "highway/street_lamp": {
55341                     "name": "Street Lamp",
55342                     "terms": "streetlight,street light,lamp,light,gaslight"
55343                 },
55344                 "highway/tertiary": {
55345                     "name": "Tertiary Road",
55346                     "terms": ""
55347                 },
55348                 "highway/tertiary_link": {
55349                     "name": "Tertiary Link",
55350                     "terms": "ramp,on ramp,off ramp"
55351                 },
55352                 "highway/track": {
55353                     "name": "Track",
55354                     "terms": "woods road,fire road"
55355                 },
55356                 "highway/traffic_signals": {
55357                     "name": "Traffic Signals",
55358                     "terms": "light,stoplight,traffic light"
55359                 },
55360                 "highway/trunk": {
55361                     "name": "Trunk Road",
55362                     "terms": ""
55363                 },
55364                 "highway/trunk_link": {
55365                     "name": "Trunk Link",
55366                     "terms": "ramp,on ramp,off ramp"
55367                 },
55368                 "highway/turning_circle": {
55369                     "name": "Turning Circle",
55370                     "terms": "cul-de-sac"
55371                 },
55372                 "highway/unclassified": {
55373                     "name": "Unclassified Road",
55374                     "terms": ""
55375                 },
55376                 "historic": {
55377                     "name": "Historic Site",
55378                     "terms": ""
55379                 },
55380                 "historic/archaeological_site": {
55381                     "name": "Archaeological Site",
55382                     "terms": ""
55383                 },
55384                 "historic/boundary_stone": {
55385                     "name": "Boundary Stone",
55386                     "terms": ""
55387                 },
55388                 "historic/castle": {
55389                     "name": "Castle",
55390                     "terms": ""
55391                 },
55392                 "historic/memorial": {
55393                     "name": "Memorial",
55394                     "terms": ""
55395                 },
55396                 "historic/monument": {
55397                     "name": "Monument",
55398                     "terms": ""
55399                 },
55400                 "historic/ruins": {
55401                     "name": "Ruins",
55402                     "terms": ""
55403                 },
55404                 "historic/wayside_cross": {
55405                     "name": "Wayside Cross",
55406                     "terms": ""
55407                 },
55408                 "historic/wayside_shrine": {
55409                     "name": "Wayside Shrine",
55410                     "terms": ""
55411                 },
55412                 "junction": {
55413                     "name": "Junction",
55414                     "terms": ""
55415                 },
55416                 "landuse": {
55417                     "name": "Land Use",
55418                     "terms": ""
55419                 },
55420                 "landuse/allotments": {
55421                     "name": "Allotments",
55422                     "terms": ""
55423                 },
55424                 "landuse/basin": {
55425                     "name": "Basin",
55426                     "terms": ""
55427                 },
55428                 "landuse/cemetery": {
55429                     "name": "Cemetery",
55430                     "terms": ""
55431                 },
55432                 "landuse/churchyard": {
55433                     "name": "Churchyard",
55434                     "terms": ""
55435                 },
55436                 "landuse/commercial": {
55437                     "name": "Commercial Area",
55438                     "terms": ""
55439                 },
55440                 "landuse/construction": {
55441                     "name": "Construction",
55442                     "terms": ""
55443                 },
55444                 "landuse/farm": {
55445                     "name": "Farmland",
55446                     "terms": ""
55447                 },
55448                 "landuse/farmland": {
55449                     "name": "Farmland",
55450                     "terms": ""
55451                 },
55452                 "landuse/farmyard": {
55453                     "name": "Farmyard",
55454                     "terms": ""
55455                 },
55456                 "landuse/forest": {
55457                     "name": "Forest",
55458                     "terms": "tree"
55459                 },
55460                 "landuse/garages": {
55461                     "name": "Garages",
55462                     "terms": ""
55463                 },
55464                 "landuse/grass": {
55465                     "name": "Grass",
55466                     "terms": ""
55467                 },
55468                 "landuse/industrial": {
55469                     "name": "Industrial Area",
55470                     "terms": ""
55471                 },
55472                 "landuse/landfill": {
55473                     "name": "Landfill",
55474                     "terms": "dump"
55475                 },
55476                 "landuse/meadow": {
55477                     "name": "Meadow",
55478                     "terms": ""
55479                 },
55480                 "landuse/military": {
55481                     "name": "Military Area",
55482                     "terms": ""
55483                 },
55484                 "landuse/orchard": {
55485                     "name": "Orchard",
55486                     "terms": ""
55487                 },
55488                 "landuse/plant_nursery": {
55489                     "name": "Plant Nursery",
55490                     "terms": "vivero"
55491                 },
55492                 "landuse/quarry": {
55493                     "name": "Quarry",
55494                     "terms": ""
55495                 },
55496                 "landuse/residential": {
55497                     "name": "Residential Area",
55498                     "terms": ""
55499                 },
55500                 "landuse/retail": {
55501                     "name": "Retail Area",
55502                     "terms": ""
55503                 },
55504                 "landuse/vineyard": {
55505                     "name": "Vineyard",
55506                     "terms": ""
55507                 },
55508                 "leisure": {
55509                     "name": "Leisure",
55510                     "terms": ""
55511                 },
55512                 "leisure/adult_gaming_centre": {
55513                     "name": "Adult Gaming Center",
55514                     "terms": "gambling,slot machine"
55515                 },
55516                 "leisure/bowling_alley": {
55517                     "name": "Bowling Alley",
55518                     "terms": ""
55519                 },
55520                 "leisure/common": {
55521                     "name": "Common",
55522                     "terms": "open space"
55523                 },
55524                 "leisure/dog_park": {
55525                     "name": "Dog Park",
55526                     "terms": ""
55527                 },
55528                 "leisure/firepit": {
55529                     "name": "Firepit",
55530                     "terms": "fireplace,campfire"
55531                 },
55532                 "leisure/garden": {
55533                     "name": "Garden",
55534                     "terms": ""
55535                 },
55536                 "leisure/golf_course": {
55537                     "name": "Golf Course",
55538                     "terms": "links"
55539                 },
55540                 "leisure/ice_rink": {
55541                     "name": "Ice Rink",
55542                     "terms": "hockey,skating,curling"
55543                 },
55544                 "leisure/marina": {
55545                     "name": "Marina",
55546                     "terms": "boat"
55547                 },
55548                 "leisure/nature_reserve": {
55549                     "name": "Nature Reserve",
55550                     "terms": "protected,wildlife"
55551                 },
55552                 "leisure/park": {
55553                     "name": "Park",
55554                     "terms": "esplanade,estate,forest,garden,grass,green,grounds,lawn,lot,meadow,parkland,place,playground,plaza,pleasure garden,recreation area,square,tract,village green,woodland"
55555                 },
55556                 "leisure/picnic_table": {
55557                     "name": "Picnic Table",
55558                     "terms": "bench"
55559                 },
55560                 "leisure/pitch": {
55561                     "name": "Sport Pitch",
55562                     "terms": "field"
55563                 },
55564                 "leisure/pitch/american_football": {
55565                     "name": "American Football Field",
55566                     "terms": ""
55567                 },
55568                 "leisure/pitch/baseball": {
55569                     "name": "Baseball Diamond",
55570                     "terms": ""
55571                 },
55572                 "leisure/pitch/basketball": {
55573                     "name": "Basketball Court",
55574                     "terms": ""
55575                 },
55576                 "leisure/pitch/skateboard": {
55577                     "name": "Skate Park",
55578                     "terms": ""
55579                 },
55580                 "leisure/pitch/soccer": {
55581                     "name": "Soccer Field",
55582                     "terms": ""
55583                 },
55584                 "leisure/pitch/tennis": {
55585                     "name": "Tennis Court",
55586                     "terms": ""
55587                 },
55588                 "leisure/pitch/volleyball": {
55589                     "name": "Volleyball Court",
55590                     "terms": ""
55591                 },
55592                 "leisure/playground": {
55593                     "name": "Playground",
55594                     "terms": "jungle gym,play area"
55595                 },
55596                 "leisure/running_track": {
55597                     "name": "Running Track",
55598                     "terms": ""
55599                 },
55600                 "leisure/slipway": {
55601                     "name": "Slipway",
55602                     "terms": "boat launch,boat ramp"
55603                 },
55604                 "leisure/sports_center": {
55605                     "name": "Sports Center / Gym",
55606                     "terms": "gym"
55607                 },
55608                 "leisure/stadium": {
55609                     "name": "Stadium",
55610                     "terms": ""
55611                 },
55612                 "leisure/swimming_pool": {
55613                     "name": "Swimming Pool",
55614                     "terms": ""
55615                 },
55616                 "leisure/track": {
55617                     "name": "Racetrack (non-Motorsport)",
55618                     "terms": ""
55619                 },
55620                 "line": {
55621                     "name": "Line",
55622                     "terms": ""
55623                 },
55624                 "man_made": {
55625                     "name": "Man Made",
55626                     "terms": ""
55627                 },
55628                 "man_made/adit": {
55629                     "name": "Adit",
55630                     "terms": "entrance,underground,mine,cave"
55631                 },
55632                 "man_made/breakwater": {
55633                     "name": "Breakwater",
55634                     "terms": ""
55635                 },
55636                 "man_made/cutline": {
55637                     "name": "Cut line",
55638                     "terms": ""
55639                 },
55640                 "man_made/embankment": {
55641                     "name": "Embankment",
55642                     "terms": ""
55643                 },
55644                 "man_made/flagpole": {
55645                     "name": "Flagpole",
55646                     "terms": ""
55647                 },
55648                 "man_made/lighthouse": {
55649                     "name": "Lighthouse",
55650                     "terms": ""
55651                 },
55652                 "man_made/mast": {
55653                     "name": "Radio Mast",
55654                     "terms": "broadcast tower,cell phone tower,cell tower,guyed tower,mobile phone tower,radio tower,television tower,transmission mast,transmission tower,tv tower"
55655                 },
55656                 "man_made/observation": {
55657                     "name": "Observation Tower",
55658                     "terms": "lookout tower,fire tower"
55659                 },
55660                 "man_made/petroleum_well": {
55661                     "name": "Oil Well",
55662                     "terms": "drilling rig,oil derrick,oil drill,oil horse,oil rig,oil pump,petroleum well,pumpjack"
55663                 },
55664                 "man_made/pier": {
55665                     "name": "Pier",
55666                     "terms": ""
55667                 },
55668                 "man_made/pipeline": {
55669                     "name": "Pipeline",
55670                     "terms": ""
55671                 },
55672                 "man_made/silo": {
55673                     "name": "Silo",
55674                     "terms": "grain,corn,wheat"
55675                 },
55676                 "man_made/storage_tank": {
55677                     "name": "Storage Tank",
55678                     "terms": "water,oil,gas,petrol"
55679                 },
55680                 "man_made/survey_point": {
55681                     "name": "Survey Point",
55682                     "terms": ""
55683                 },
55684                 "man_made/tower": {
55685                     "name": "Tower",
55686                     "terms": ""
55687                 },
55688                 "man_made/wastewater_plant": {
55689                     "name": "Wastewater Plant",
55690                     "terms": "sewage*,water treatment plant,reclamation plant"
55691                 },
55692                 "man_made/water_tower": {
55693                     "name": "Water Tower",
55694                     "terms": ""
55695                 },
55696                 "man_made/water_well": {
55697                     "name": "Water Well",
55698                     "terms": ""
55699                 },
55700                 "man_made/water_works": {
55701                     "name": "Water Works",
55702                     "terms": ""
55703                 },
55704                 "military/airfield": {
55705                     "name": "Airfield",
55706                     "terms": ""
55707                 },
55708                 "military/barracks": {
55709                     "name": "Barracks",
55710                     "terms": ""
55711                 },
55712                 "military/bunker": {
55713                     "name": "Bunker",
55714                     "terms": ""
55715                 },
55716                 "military/range": {
55717                     "name": "Military Range",
55718                     "terms": ""
55719                 },
55720                 "natural": {
55721                     "name": "Natural",
55722                     "terms": ""
55723                 },
55724                 "natural/bay": {
55725                     "name": "Bay",
55726                     "terms": ""
55727                 },
55728                 "natural/beach": {
55729                     "name": "Beach",
55730                     "terms": ""
55731                 },
55732                 "natural/cave_entrance": {
55733                     "name": "Cave Entrance",
55734                     "terms": "cavern,hollow,grotto,shelter,cavity"
55735                 },
55736                 "natural/cliff": {
55737                     "name": "Cliff",
55738                     "terms": ""
55739                 },
55740                 "natural/coastline": {
55741                     "name": "Coastline",
55742                     "terms": "shore"
55743                 },
55744                 "natural/fell": {
55745                     "name": "Fell",
55746                     "terms": ""
55747                 },
55748                 "natural/glacier": {
55749                     "name": "Glacier",
55750                     "terms": ""
55751                 },
55752                 "natural/grassland": {
55753                     "name": "Grassland",
55754                     "terms": ""
55755                 },
55756                 "natural/heath": {
55757                     "name": "Heath",
55758                     "terms": ""
55759                 },
55760                 "natural/peak": {
55761                     "name": "Peak",
55762                     "terms": "acme,aiguille,alp,climax,crest,crown,hill,mount,mountain,pinnacle,summit,tip,top"
55763                 },
55764                 "natural/saddle": {
55765                     "name": "Saddle",
55766                     "terms": "pass,mountain pass,top"
55767                 },
55768                 "natural/scree": {
55769                     "name": "Scree",
55770                     "terms": "loose rocks"
55771                 },
55772                 "natural/scrub": {
55773                     "name": "Scrub",
55774                     "terms": "bush,shrubs"
55775                 },
55776                 "natural/spring": {
55777                     "name": "Spring",
55778                     "terms": ""
55779                 },
55780                 "natural/tree": {
55781                     "name": "Tree",
55782                     "terms": ""
55783                 },
55784                 "natural/tree_row": {
55785                     "name": "Tree row",
55786                     "terms": ""
55787                 },
55788                 "natural/volcano": {
55789                     "name": "Volcano",
55790                     "terms": "mountain,crater"
55791                 },
55792                 "natural/water": {
55793                     "name": "Water",
55794                     "terms": ""
55795                 },
55796                 "natural/water/lake": {
55797                     "name": "Lake",
55798                     "terms": "lakelet,loch,mere"
55799                 },
55800                 "natural/water/pond": {
55801                     "name": "Pond",
55802                     "terms": "lakelet,millpond,tarn,pool,mere"
55803                 },
55804                 "natural/water/reservoir": {
55805                     "name": "Reservoir",
55806                     "terms": ""
55807                 },
55808                 "natural/wetland": {
55809                     "name": "Wetland",
55810                     "terms": ""
55811                 },
55812                 "natural/wood": {
55813                     "name": "Wood",
55814                     "terms": "tree"
55815                 },
55816                 "office": {
55817                     "name": "Office",
55818                     "terms": ""
55819                 },
55820                 "office/accountant": {
55821                     "name": "Accountant",
55822                     "terms": ""
55823                 },
55824                 "office/administrative": {
55825                     "name": "Administrative Office",
55826                     "terms": ""
55827                 },
55828                 "office/architect": {
55829                     "name": "Architect",
55830                     "terms": ""
55831                 },
55832                 "office/company": {
55833                     "name": "Company Office",
55834                     "terms": ""
55835                 },
55836                 "office/educational_institution": {
55837                     "name": "Educational Institution",
55838                     "terms": ""
55839                 },
55840                 "office/employment_agency": {
55841                     "name": "Employment Agency",
55842                     "terms": "job"
55843                 },
55844                 "office/estate_agent": {
55845                     "name": "Real Estate Office",
55846                     "terms": ""
55847                 },
55848                 "office/financial": {
55849                     "name": "Financial Office",
55850                     "terms": ""
55851                 },
55852                 "office/government": {
55853                     "name": "Government Office",
55854                     "terms": ""
55855                 },
55856                 "office/insurance": {
55857                     "name": "Insurance Office",
55858                     "terms": ""
55859                 },
55860                 "office/it": {
55861                     "name": "IT Office",
55862                     "terms": ""
55863                 },
55864                 "office/lawyer": {
55865                     "name": "Law Office",
55866                     "terms": ""
55867                 },
55868                 "office/newspaper": {
55869                     "name": "Newspaper",
55870                     "terms": ""
55871                 },
55872                 "office/ngo": {
55873                     "name": "NGO Office",
55874                     "terms": ""
55875                 },
55876                 "office/physician": {
55877                     "name": "Physician",
55878                     "terms": ""
55879                 },
55880                 "office/political_party": {
55881                     "name": "Political Party",
55882                     "terms": ""
55883                 },
55884                 "office/research": {
55885                     "name": "Research Office",
55886                     "terms": ""
55887                 },
55888                 "office/telecommunication": {
55889                     "name": "Telecom Office",
55890                     "terms": ""
55891                 },
55892                 "office/therapist": {
55893                     "name": "Therapist",
55894                     "terms": ""
55895                 },
55896                 "office/travel_agent": {
55897                     "name": "Travel Agency",
55898                     "terms": ""
55899                 },
55900                 "piste": {
55901                     "name": "Piste/Ski Trail",
55902                     "terms": "ski,sled,sleigh,snowboard,nordic,downhill,snowmobile"
55903                 },
55904                 "place": {
55905                     "name": "Place",
55906                     "terms": ""
55907                 },
55908                 "place/city": {
55909                     "name": "City",
55910                     "terms": ""
55911                 },
55912                 "place/farm": {
55913                     "name": "Farm",
55914                     "terms": ""
55915                 },
55916                 "place/hamlet": {
55917                     "name": "Hamlet",
55918                     "terms": ""
55919                 },
55920                 "place/island": {
55921                     "name": "Island",
55922                     "terms": "archipelago,atoll,bar,cay,isle,islet,key,reef"
55923                 },
55924                 "place/isolated_dwelling": {
55925                     "name": "Isolated Dwelling",
55926                     "terms": ""
55927                 },
55928                 "place/locality": {
55929                     "name": "Locality",
55930                     "terms": ""
55931                 },
55932                 "place/neighbourhood": {
55933                     "name": "Neighborhood",
55934                     "terms": "neighbourhood"
55935                 },
55936                 "place/suburb": {
55937                     "name": "Borough",
55938                     "terms": "Boro,Quarter"
55939                 },
55940                 "place/town": {
55941                     "name": "Town",
55942                     "terms": ""
55943                 },
55944                 "place/village": {
55945                     "name": "Village",
55946                     "terms": ""
55947                 },
55948                 "point": {
55949                     "name": "Point",
55950                     "terms": ""
55951                 },
55952                 "power": {
55953                     "name": "Power",
55954                     "terms": ""
55955                 },
55956                 "power/generator": {
55957                     "name": "Power Generator",
55958                     "terms": ""
55959                 },
55960                 "power/line": {
55961                     "name": "Power Line",
55962                     "terms": ""
55963                 },
55964                 "power/minor_line": {
55965                     "name": "Minor Power Line",
55966                     "terms": ""
55967                 },
55968                 "power/pole": {
55969                     "name": "Power Pole",
55970                     "terms": ""
55971                 },
55972                 "power/sub_station": {
55973                     "name": "Substation",
55974                     "terms": ""
55975                 },
55976                 "power/substation": {
55977                     "name": "Substation",
55978                     "terms": ""
55979                 },
55980                 "power/tower": {
55981                     "name": "High-Voltage Tower",
55982                     "terms": ""
55983                 },
55984                 "power/transformer": {
55985                     "name": "Transformer",
55986                     "terms": ""
55987                 },
55988                 "public_transport/platform": {
55989                     "name": "Platform",
55990                     "terms": ""
55991                 },
55992                 "public_transport/stop_position": {
55993                     "name": "Stop Position",
55994                     "terms": ""
55995                 },
55996                 "railway": {
55997                     "name": "Railway",
55998                     "terms": ""
55999                 },
56000                 "railway/abandoned": {
56001                     "name": "Abandoned Railway",
56002                     "terms": ""
56003                 },
56004                 "railway/disused": {
56005                     "name": "Disused Railway",
56006                     "terms": ""
56007                 },
56008                 "railway/funicular": {
56009                     "name": "Funicular",
56010                     "terms": "venicular,cliff railway,cable car,cable railway,funicular railway"
56011                 },
56012                 "railway/halt": {
56013                     "name": "Railway Halt",
56014                     "terms": "break,interrupt,rest,wait,interruption"
56015                 },
56016                 "railway/level_crossing": {
56017                     "name": "Railway Crossing",
56018                     "terms": "crossing,railroad crossing,level crossing,grade crossing,road through railroad,train crossing"
56019                 },
56020                 "railway/monorail": {
56021                     "name": "Monorail",
56022                     "terms": ""
56023                 },
56024                 "railway/narrow_gauge": {
56025                     "name": "Narrow Gauge Rail",
56026                     "terms": "narrow gauge railway,narrow gauge railroad"
56027                 },
56028                 "railway/platform": {
56029                     "name": "Railway Platform",
56030                     "terms": ""
56031                 },
56032                 "railway/rail": {
56033                     "name": "Rail",
56034                     "terms": ""
56035                 },
56036                 "railway/station": {
56037                     "name": "Railway Station",
56038                     "terms": "train station,station"
56039                 },
56040                 "railway/subway": {
56041                     "name": "Subway",
56042                     "terms": ""
56043                 },
56044                 "railway/subway_entrance": {
56045                     "name": "Subway Entrance",
56046                     "terms": ""
56047                 },
56048                 "railway/tram": {
56049                     "name": "Tram",
56050                     "terms": "streetcar"
56051                 },
56052                 "relation": {
56053                     "name": "Relation",
56054                     "terms": ""
56055                 },
56056                 "roundabout": {
56057                     "name": "Roundabout",
56058                     "terms": ""
56059                 },
56060                 "route/ferry": {
56061                     "name": "Ferry Route",
56062                     "terms": ""
56063                 },
56064                 "shop": {
56065                     "name": "Shop",
56066                     "terms": ""
56067                 },
56068                 "shop/alcohol": {
56069                     "name": "Liquor Store",
56070                     "terms": "alcohol,beer,booze,wine"
56071                 },
56072                 "shop/anime": {
56073                     "name": "Anime Shop",
56074                     "terms": ""
56075                 },
56076                 "shop/antiques": {
56077                     "name": "Antiques Shop",
56078                     "terms": ""
56079                 },
56080                 "shop/art": {
56081                     "name": "Art Gallery",
56082                     "terms": ""
56083                 },
56084                 "shop/baby_goods": {
56085                     "name": "Baby Goods Store",
56086                     "terms": ""
56087                 },
56088                 "shop/bag": {
56089                     "name": "Bag/Luggage Store",
56090                     "terms": "handbag,purse"
56091                 },
56092                 "shop/bakery": {
56093                     "name": "Bakery",
56094                     "terms": ""
56095                 },
56096                 "shop/bathroom_furnishing": {
56097                     "name": "Bathroom Furnishing Store",
56098                     "terms": ""
56099                 },
56100                 "shop/beauty": {
56101                     "name": "Beauty Shop",
56102                     "terms": "nail spa,spa,salon,tanning"
56103                 },
56104                 "shop/bed": {
56105                     "name": "Bedding/Mattress Store",
56106                     "terms": ""
56107                 },
56108                 "shop/beverages": {
56109                     "name": "Beverage Store",
56110                     "terms": ""
56111                 },
56112                 "shop/bicycle": {
56113                     "name": "Bicycle Shop",
56114                     "terms": ""
56115                 },
56116                 "shop/bookmaker": {
56117                     "name": "Bookmaker",
56118                     "terms": ""
56119                 },
56120                 "shop/books": {
56121                     "name": "Book Store",
56122                     "terms": ""
56123                 },
56124                 "shop/boutique": {
56125                     "name": "Boutique",
56126                     "terms": ""
56127                 },
56128                 "shop/butcher": {
56129                     "name": "Butcher",
56130                     "terms": "meat"
56131                 },
56132                 "shop/candles": {
56133                     "name": "Candle Shop",
56134                     "terms": ""
56135                 },
56136                 "shop/car": {
56137                     "name": "Car Dealership",
56138                     "terms": "auto"
56139                 },
56140                 "shop/car_parts": {
56141                     "name": "Car Parts Store",
56142                     "terms": "auto"
56143                 },
56144                 "shop/car_repair": {
56145                     "name": "Car Repair Shop",
56146                     "terms": "auto"
56147                 },
56148                 "shop/carpet": {
56149                     "name": "Carpet Store",
56150                     "terms": "rug"
56151                 },
56152                 "shop/cheese": {
56153                     "name": "Cheese Store",
56154                     "terms": ""
56155                 },
56156                 "shop/chemist": {
56157                     "name": "Chemist",
56158                     "terms": ""
56159                 },
56160                 "shop/chocolate": {
56161                     "name": "Chocolate Store",
56162                     "terms": ""
56163                 },
56164                 "shop/clothes": {
56165                     "name": "Clothing Store",
56166                     "terms": ""
56167                 },
56168                 "shop/computer": {
56169                     "name": "Computer Store",
56170                     "terms": ""
56171                 },
56172                 "shop/confectionery": {
56173                     "name": "Candy Store",
56174                     "terms": ""
56175                 },
56176                 "shop/convenience": {
56177                     "name": "Convenience Store",
56178                     "terms": ""
56179                 },
56180                 "shop/copyshop": {
56181                     "name": "Copy Store",
56182                     "terms": ""
56183                 },
56184                 "shop/cosmetics": {
56185                     "name": "Cosmetics Store",
56186                     "terms": ""
56187                 },
56188                 "shop/craft": {
56189                     "name": "Arts and Crafts Store",
56190                     "terms": ""
56191                 },
56192                 "shop/curtain": {
56193                     "name": "Curtain Store",
56194                     "terms": "drape*,window"
56195                 },
56196                 "shop/dairy": {
56197                     "name": "Dairy Store",
56198                     "terms": "milk,egg,cheese"
56199                 },
56200                 "shop/deli": {
56201                     "name": "Deli",
56202                     "terms": "lunch,meat,sandwich"
56203                 },
56204                 "shop/department_store": {
56205                     "name": "Department Store",
56206                     "terms": ""
56207                 },
56208                 "shop/doityourself": {
56209                     "name": "DIY Store",
56210                     "terms": ""
56211                 },
56212                 "shop/dry_cleaning": {
56213                     "name": "Dry Cleaner",
56214                     "terms": ""
56215                 },
56216                 "shop/electronics": {
56217                     "name": "Electronics Store",
56218                     "terms": "appliance,audio,computer,tv"
56219                 },
56220                 "shop/erotic": {
56221                     "name": "Erotic Store",
56222                     "terms": "sex,porn"
56223                 },
56224                 "shop/fabric": {
56225                     "name": "Fabric Store",
56226                     "terms": "sew"
56227                 },
56228                 "shop/farm": {
56229                     "name": "Produce Stand",
56230                     "terms": "farm shop,farm stand"
56231                 },
56232                 "shop/fashion": {
56233                     "name": "Fashion Store",
56234                     "terms": ""
56235                 },
56236                 "shop/fishmonger": {
56237                     "name": "Fishmonger",
56238                     "terms": ""
56239                 },
56240                 "shop/florist": {
56241                     "name": "Florist",
56242                     "terms": "flower"
56243                 },
56244                 "shop/frame": {
56245                     "name": "Framing Shop",
56246                     "terms": ""
56247                 },
56248                 "shop/funeral_directors": {
56249                     "name": "Funeral Home",
56250                     "terms": "undertaker,memorial home"
56251                 },
56252                 "shop/furnace": {
56253                     "name": "Furnace Store",
56254                     "terms": "oven,stove"
56255                 },
56256                 "shop/furniture": {
56257                     "name": "Furniture Store",
56258                     "terms": "chair,sofa,table"
56259                 },
56260                 "shop/garden_centre": {
56261                     "name": "Garden Center",
56262                     "terms": "landscape,mulch,shrub,tree"
56263                 },
56264                 "shop/gift": {
56265                     "name": "Gift Shop",
56266                     "terms": ""
56267                 },
56268                 "shop/greengrocer": {
56269                     "name": "Greengrocer",
56270                     "terms": "fruit,vegetable"
56271                 },
56272                 "shop/hairdresser": {
56273                     "name": "Hairdresser",
56274                     "terms": ""
56275                 },
56276                 "shop/hardware": {
56277                     "name": "Hardware Store",
56278                     "terms": ""
56279                 },
56280                 "shop/hearing_aids": {
56281                     "name": "Hearing Aids Store",
56282                     "terms": ""
56283                 },
56284                 "shop/herbalist": {
56285                     "name": "Herbalist",
56286                     "terms": ""
56287                 },
56288                 "shop/hifi": {
56289                     "name": "Hifi Store",
56290                     "terms": "stereo,video"
56291                 },
56292                 "shop/houseware": {
56293                     "name": "Houseware Store",
56294                     "terms": "home,household"
56295                 },
56296                 "shop/interior_decoration": {
56297                     "name": "Interior Decoration Store",
56298                     "terms": ""
56299                 },
56300                 "shop/jewelry": {
56301                     "name": "Jeweler",
56302                     "terms": "diamond,gem,ring"
56303                 },
56304                 "shop/kiosk": {
56305                     "name": "News Kiosk",
56306                     "terms": ""
56307                 },
56308                 "shop/kitchen": {
56309                     "name": "Kitchen Design Store",
56310                     "terms": ""
56311                 },
56312                 "shop/laundry": {
56313                     "name": "Laundry",
56314                     "terms": ""
56315                 },
56316                 "shop/leather": {
56317                     "name": "Leather Store",
56318                     "terms": ""
56319                 },
56320                 "shop/locksmith": {
56321                     "name": "Locksmith",
56322                     "terms": "key,lockpick"
56323                 },
56324                 "shop/lottery": {
56325                     "name": "Lottery Shop",
56326                     "terms": ""
56327                 },
56328                 "shop/mall": {
56329                     "name": "Mall",
56330                     "terms": ""
56331                 },
56332                 "shop/massage": {
56333                     "name": "Massage Shop",
56334                     "terms": ""
56335                 },
56336                 "shop/medical_supply": {
56337                     "name": "Medical Supply Store",
56338                     "terms": ""
56339                 },
56340                 "shop/mobile_phone": {
56341                     "name": "Mobile Phone Store",
56342                     "terms": ""
56343                 },
56344                 "shop/money_lender": {
56345                     "name": "Money Lender",
56346                     "terms": ""
56347                 },
56348                 "shop/motorcycle": {
56349                     "name": "Motorcycle Dealership",
56350                     "terms": ""
56351                 },
56352                 "shop/music": {
56353                     "name": "Music Store",
56354                     "terms": "CD,vinyl"
56355                 },
56356                 "shop/musical_instrument": {
56357                     "name": "Musical Instrument Store",
56358                     "terms": ""
56359                 },
56360                 "shop/newsagent": {
56361                     "name": "Newspaper/Magazine Shop",
56362                     "terms": ""
56363                 },
56364                 "shop/optician": {
56365                     "name": "Optician",
56366                     "terms": "eye,glasses"
56367                 },
56368                 "shop/organic": {
56369                     "name": "Organic Goods Store",
56370                     "terms": ""
56371                 },
56372                 "shop/outdoor": {
56373                     "name": "Outdoors Store",
56374                     "terms": "camping,climbing,hiking"
56375                 },
56376                 "shop/paint": {
56377                     "name": "Paint Store",
56378                     "terms": ""
56379                 },
56380                 "shop/pawnbroker": {
56381                     "name": "Pawn Shop",
56382                     "terms": ""
56383                 },
56384                 "shop/pet": {
56385                     "name": "Pet Store",
56386                     "terms": "cat,dog,fish"
56387                 },
56388                 "shop/photo": {
56389                     "name": "Photography Store",
56390                     "terms": "camera,film"
56391                 },
56392                 "shop/pyrotechnics": {
56393                     "name": "Fireworks Store",
56394                     "terms": ""
56395                 },
56396                 "shop/radiotechnics": {
56397                     "name": "Radio/Electronic Component Store",
56398                     "terms": ""
56399                 },
56400                 "shop/religion": {
56401                     "name": "Religious Store",
56402                     "terms": ""
56403                 },
56404                 "shop/scuba_diving": {
56405                     "name": "Scuba Diving Shop",
56406                     "terms": ""
56407                 },
56408                 "shop/seafood": {
56409                     "name": "Seafood Shop",
56410                     "terms": "fishmonger"
56411                 },
56412                 "shop/second_hand": {
56413                     "name": "Consignment/Thrift Store",
56414                     "terms": "secondhand,second hand,resale,thrift,used"
56415                 },
56416                 "shop/shoes": {
56417                     "name": "Shoe Store",
56418                     "terms": ""
56419                 },
56420                 "shop/sports": {
56421                     "name": "Sporting Goods Store",
56422                     "terms": ""
56423                 },
56424                 "shop/stationery": {
56425                     "name": "Stationery Store",
56426                     "terms": "card,paper"
56427                 },
56428                 "shop/supermarket": {
56429                     "name": "Supermarket",
56430                     "terms": "grocery,store,shop"
56431                 },
56432                 "shop/tailor": {
56433                     "name": "Tailor",
56434                     "terms": "clothes,suit"
56435                 },
56436                 "shop/tattoo": {
56437                     "name": "Tattoo Parlor",
56438                     "terms": ""
56439                 },
56440                 "shop/tea": {
56441                     "name": "Tea Store",
56442                     "terms": ""
56443                 },
56444                 "shop/ticket": {
56445                     "name": "Ticket Seller",
56446                     "terms": ""
56447                 },
56448                 "shop/tobacco": {
56449                     "name": "Tobacco Shop",
56450                     "terms": ""
56451                 },
56452                 "shop/toys": {
56453                     "name": "Toy Store",
56454                     "terms": ""
56455                 },
56456                 "shop/travel_agency": {
56457                     "name": "Travel Agency",
56458                     "terms": ""
56459                 },
56460                 "shop/tyres": {
56461                     "name": "Tire Store",
56462                     "terms": ""
56463                 },
56464                 "shop/vacant": {
56465                     "name": "Vacant Shop",
56466                     "terms": ""
56467                 },
56468                 "shop/vacuum_cleaner": {
56469                     "name": "Vacuum Cleaner Store",
56470                     "terms": ""
56471                 },
56472                 "shop/variety_store": {
56473                     "name": "Variety Store",
56474                     "terms": ""
56475                 },
56476                 "shop/video": {
56477                     "name": "Video Store",
56478                     "terms": "DVD"
56479                 },
56480                 "shop/video_games": {
56481                     "name": "Video Game Store",
56482                     "terms": ""
56483                 },
56484                 "shop/water_sports": {
56485                     "name": "Watersport/Swim Shop",
56486                     "terms": ""
56487                 },
56488                 "shop/weapons": {
56489                     "name": "Weapon Shop",
56490                     "terms": "ammo,gun,knife,knives"
56491                 },
56492                 "shop/window_blind": {
56493                     "name": "Window Blind Store",
56494                     "terms": ""
56495                 },
56496                 "shop/wine": {
56497                     "name": "Wine Shop",
56498                     "terms": ""
56499                 },
56500                 "tourism": {
56501                     "name": "Tourism",
56502                     "terms": ""
56503                 },
56504                 "tourism/alpine_hut": {
56505                     "name": "Alpine Hut",
56506                     "terms": ""
56507                 },
56508                 "tourism/artwork": {
56509                     "name": "Artwork",
56510                     "terms": "mural,sculpture,statue"
56511                 },
56512                 "tourism/attraction": {
56513                     "name": "Tourist Attraction",
56514                     "terms": ""
56515                 },
56516                 "tourism/camp_site": {
56517                     "name": "Camp Site",
56518                     "terms": "Tent"
56519                 },
56520                 "tourism/caravan_site": {
56521                     "name": "RV Park",
56522                     "terms": "Motor Home,Camper"
56523                 },
56524                 "tourism/chalet": {
56525                     "name": "Chalet",
56526                     "terms": ""
56527                 },
56528                 "tourism/guest_house": {
56529                     "name": "Guest House",
56530                     "terms": "B&B,Bed and Breakfast"
56531                 },
56532                 "tourism/hostel": {
56533                     "name": "Hostel",
56534                     "terms": ""
56535                 },
56536                 "tourism/hotel": {
56537                     "name": "Hotel",
56538                     "terms": ""
56539                 },
56540                 "tourism/information": {
56541                     "name": "Information",
56542                     "terms": ""
56543                 },
56544                 "tourism/motel": {
56545                     "name": "Motel",
56546                     "terms": ""
56547                 },
56548                 "tourism/museum": {
56549                     "name": "Museum",
56550                     "terms": "exhibition,foundation,gallery,hall,institution"
56551                 },
56552                 "tourism/picnic_site": {
56553                     "name": "Picnic Site",
56554                     "terms": "camp"
56555                 },
56556                 "tourism/theme_park": {
56557                     "name": "Theme Park",
56558                     "terms": ""
56559                 },
56560                 "tourism/viewpoint": {
56561                     "name": "Viewpoint",
56562                     "terms": ""
56563                 },
56564                 "tourism/zoo": {
56565                     "name": "Zoo",
56566                     "terms": ""
56567                 },
56568                 "traffic_calming/bump": {
56569                     "name": "Speed Bump",
56570                     "terms": "speed hump"
56571                 },
56572                 "traffic_calming/hump": {
56573                     "name": "Speed Hump",
56574                     "terms": "speed bump"
56575                 },
56576                 "traffic_calming/rumble_strip": {
56577                     "name": "Rumble Strip",
56578                     "terms": "sleeper lines,audible lines,growlers"
56579                 },
56580                 "traffic_calming/table": {
56581                     "name": "Raised Pedestrian Crossing",
56582                     "terms": "speed table,flat top hump"
56583                 },
56584                 "type/boundary": {
56585                     "name": "Boundary",
56586                     "terms": ""
56587                 },
56588                 "type/boundary/administrative": {
56589                     "name": "Administrative Boundary",
56590                     "terms": ""
56591                 },
56592                 "type/multipolygon": {
56593                     "name": "Multipolygon",
56594                     "terms": ""
56595                 },
56596                 "type/restriction": {
56597                     "name": "Restriction",
56598                     "terms": ""
56599                 },
56600                 "type/restriction/no_left_turn": {
56601                     "name": "No Left Turn",
56602                     "terms": ""
56603                 },
56604                 "type/restriction/no_right_turn": {
56605                     "name": "No Right Turn",
56606                     "terms": ""
56607                 },
56608                 "type/restriction/no_straight_on": {
56609                     "name": "No Straight On",
56610                     "terms": ""
56611                 },
56612                 "type/restriction/no_u_turn": {
56613                     "name": "No U-turn",
56614                     "terms": ""
56615                 },
56616                 "type/restriction/only_left_turn": {
56617                     "name": "Left Turn Only",
56618                     "terms": ""
56619                 },
56620                 "type/restriction/only_right_turn": {
56621                     "name": "Right Turn Only",
56622                     "terms": ""
56623                 },
56624                 "type/restriction/only_straight_on": {
56625                     "name": "No Turns",
56626                     "terms": ""
56627                 },
56628                 "type/route": {
56629                     "name": "Route",
56630                     "terms": ""
56631                 },
56632                 "type/route/bicycle": {
56633                     "name": "Cycle Route",
56634                     "terms": ""
56635                 },
56636                 "type/route/bus": {
56637                     "name": "Bus Route",
56638                     "terms": ""
56639                 },
56640                 "type/route/detour": {
56641                     "name": "Detour Route",
56642                     "terms": ""
56643                 },
56644                 "type/route/ferry": {
56645                     "name": "Ferry Route",
56646                     "terms": ""
56647                 },
56648                 "type/route/foot": {
56649                     "name": "Foot Route",
56650                     "terms": ""
56651                 },
56652                 "type/route/hiking": {
56653                     "name": "Hiking Route",
56654                     "terms": ""
56655                 },
56656                 "type/route/pipeline": {
56657                     "name": "Pipeline Route",
56658                     "terms": ""
56659                 },
56660                 "type/route/power": {
56661                     "name": "Power Route",
56662                     "terms": ""
56663                 },
56664                 "type/route/road": {
56665                     "name": "Road Route",
56666                     "terms": ""
56667                 },
56668                 "type/route/train": {
56669                     "name": "Train Route",
56670                     "terms": ""
56671                 },
56672                 "type/route/tram": {
56673                     "name": "Tram Route",
56674                     "terms": ""
56675                 },
56676                 "type/route_master": {
56677                     "name": "Route Master",
56678                     "terms": ""
56679                 },
56680                 "vertex": {
56681                     "name": "Other",
56682                     "terms": ""
56683                 },
56684                 "waterway": {
56685                     "name": "Waterway",
56686                     "terms": ""
56687                 },
56688                 "waterway/canal": {
56689                     "name": "Canal",
56690                     "terms": ""
56691                 },
56692                 "waterway/dam": {
56693                     "name": "Dam",
56694                     "terms": ""
56695                 },
56696                 "waterway/ditch": {
56697                     "name": "Ditch",
56698                     "terms": ""
56699                 },
56700                 "waterway/drain": {
56701                     "name": "Drain",
56702                     "terms": ""
56703                 },
56704                 "waterway/fuel": {
56705                     "name": "Marine Fuel Station",
56706                     "terms": "petrol,gas,diesel,boat"
56707                 },
56708                 "waterway/river": {
56709                     "name": "River",
56710                     "terms": "beck,branch,brook,course,creek,estuary,rill,rivulet,run,runnel,stream,tributary,watercourse"
56711                 },
56712                 "waterway/riverbank": {
56713                     "name": "Riverbank",
56714                     "terms": ""
56715                 },
56716                 "waterway/sanitary_dump_station": {
56717                     "name": "Marine Toilet Disposal",
56718                     "terms": "Boat,Watercraft,Sanitary,Dump Station,Pumpout,Pump out,Elsan,CDP,CTDP,Chemical Toilet"
56719                 },
56720                 "waterway/stream": {
56721                     "name": "Stream",
56722                     "terms": "beck,branch,brook,burn,course,creek,current,drift,flood,flow,freshet,race,rill,rindle,rivulet,run,runnel,rush,spate,spritz,surge,tide,torrent,tributary,watercourse"
56723                 },
56724                 "waterway/weir": {
56725                     "name": "Weir",
56726                     "terms": ""
56727                 }
56728             }
56729         }
56730     },
56731     "suggestions": {
56732         "amenity": {
56733             "fuel": {
56734                 "76": {
56735                     "count": 314
56736                 },
56737                 "Neste": {
56738                     "count": 189
56739                 },
56740                 "BP": {
56741                     "count": 2511
56742                 },
56743                 "Shell": {
56744                     "count": 8380
56745                 },
56746                 "Agip": {
56747                     "count": 2651
56748                 },
56749                 "Migrol": {
56750                     "count": 65
56751                 },
56752                 "Avia": {
56753                     "count": 897
56754                 },
56755                 "Texaco": {
56756                     "count": 680
56757                 },
56758                 "Total": {
56759                     "count": 2607
56760                 },
56761                 "Statoil": {
56762                     "count": 596
56763                 },
56764                 "Esso": {
56765                     "count": 3652
56766                 },
56767                 "Jet": {
56768                     "count": 441
56769                 },
56770                 "Avanti": {
56771                     "count": 90
56772                 },
56773                 "Sainsbury's": {
56774                     "count": 58
56775                 },
56776                 "OMV": {
56777                     "count": 701
56778                 },
56779                 "Aral": {
56780                     "count": 1339
56781                 },
56782                 "Tesco": {
56783                     "count": 197
56784                 },
56785                 "JET": {
56786                     "count": 180
56787                 },
56788                 "Morrisons": {
56789                     "count": 111
56790                 },
56791                 "United": {
56792                     "count": 91
56793                 },
56794                 "Canadian Tire": {
56795                     "count": 66
56796                 },
56797                 "Mobil": {
56798                     "count": 613
56799                 },
56800                 "Caltex": {
56801                     "count": 1001
56802                 },
56803                 "Sunoco": {
56804                     "count": 355
56805                 },
56806                 "Q8": {
56807                     "count": 1161
56808                 },
56809                 "ABC": {
56810                     "count": 79
56811                 },
56812                 "ARAL": {
56813                     "count": 375
56814                 },
56815                 "CEPSA": {
56816                     "count": 1018
56817                 },
56818                 "BFT": {
56819                     "count": 89
56820                 },
56821                 "Petron": {
56822                     "count": 878
56823                 },
56824                 "Intermarché": {
56825                     "count": 434
56826                 },
56827                 "Total Access": {
56828                     "count": 51
56829                 },
56830                 "Super U": {
56831                     "count": 124
56832                 },
56833                 "Auchan": {
56834                     "count": 53
56835                 },
56836                 "Elf": {
56837                     "count": 129
56838                 },
56839                 "Carrefour": {
56840                     "count": 205
56841                 },
56842                 "Station Service E. Leclerc": {
56843                     "count": 530
56844                 },
56845                 "Shell Express": {
56846                     "count": 131
56847                 },
56848                 "Hess": {
56849                     "count": 127
56850                 },
56851                 "Flying V": {
56852                     "count": 129
56853                 },
56854                 "bft": {
56855                     "count": 168
56856                 },
56857                 "Gulf": {
56858                     "count": 199
56859                 },
56860                 "PTT": {
56861                     "count": 191
56862                 },
56863                 "St1": {
56864                     "count": 100
56865                 },
56866                 "Teboil": {
56867                     "count": 115
56868                 },
56869                 "HEM": {
56870                     "count": 212
56871                 },
56872                 "GALP": {
56873                     "count": 626
56874                 },
56875                 "OK": {
56876                     "count": 163
56877                 },
56878                 "ÖMV": {
56879                     "count": 101
56880                 },
56881                 "Tinq": {
56882                     "count": 215
56883                 },
56884                 "OKQ8": {
56885                     "count": 186
56886                 },
56887                 "Repsol": {
56888                     "count": 424
56889                 },
56890                 "Westfalen": {
56891                     "count": 96
56892                 },
56893                 "Esso Express": {
56894                     "count": 98
56895                 },
56896                 "Raiffeisenbank": {
56897                     "count": 117
56898                 },
56899                 "Tamoil": {
56900                     "count": 866
56901                 },
56902                 "Engen": {
56903                     "count": 241
56904                 },
56905                 "Sasol": {
56906                     "count": 59
56907                 },
56908                 "Topaz": {
56909                     "count": 78
56910                 },
56911                 "LPG": {
56912                     "count": 174
56913                 },
56914                 "Coop": {
56915                     "count": 62
56916                 },
56917                 "Orlen": {
56918                     "count": 598
56919                 },
56920                 "Oilibya": {
56921                     "count": 68
56922                 },
56923                 "Tango": {
56924                     "count": 122
56925                 },
56926                 "Star": {
56927                     "count": 319
56928                 },
56929                 "Петрол": {
56930                     "count": 84
56931                 },
56932                 "Cepsa": {
56933                     "count": 96
56934                 },
56935                 "OIL!": {
56936                     "count": 63
56937                 },
56938                 "Ultramar": {
56939                     "count": 125
56940                 },
56941                 "Irving": {
56942                     "count": 87
56943                 },
56944                 "Lukoil": {
56945                     "count": 701
56946                 },
56947                 "Petro-Canada": {
56948                     "count": 489
56949                 },
56950                 "7-Eleven": {
56951                     "count": 488
56952                 },
56953                 "Agrola": {
56954                     "count": 69
56955                 },
56956                 "Husky": {
56957                     "count": 126
56958                 },
56959                 "Slovnaft": {
56960                     "count": 219
56961                 },
56962                 "Sheetz": {
56963                     "count": 134
56964                 },
56965                 "Mol": {
56966                     "count": 61
56967                 },
56968                 "Petronas": {
56969                     "count": 159
56970                 },
56971                 "Газпромнефть": {
56972                     "count": 748
56973                 },
56974                 "Лукойл": {
56975                     "count": 1477
56976                 },
56977                 "Elan": {
56978                     "count": 112
56979                 },
56980                 "Роснефть": {
56981                     "count": 638
56982                 },
56983                 "Turmöl": {
56984                     "count": 57
56985                 },
56986                 "Neste A24": {
56987                     "count": 55
56988                 },
56989                 "Marathon": {
56990                     "count": 189
56991                 },
56992                 "Valero": {
56993                     "count": 366
56994                 },
56995                 "Eni": {
56996                     "count": 236
56997                 },
56998                 "Chevron": {
56999                     "count": 954
57000                 },
57001                 "ТНК": {
57002                     "count": 520
57003                 },
57004                 "REPSOL": {
57005                     "count": 1603
57006                 },
57007                 "MOL": {
57008                     "count": 228
57009                 },
57010                 "Bliska": {
57011                     "count": 150
57012                 },
57013                 "Api": {
57014                     "count": 302
57015                 },
57016                 "Arco": {
57017                     "count": 179
57018                 },
57019                 "Pemex": {
57020                     "count": 423
57021                 },
57022                 "Exxon": {
57023                     "count": 506
57024                 },
57025                 "Coles Express": {
57026                     "count": 115
57027                 },
57028                 "Petrom": {
57029                     "count": 259
57030                 },
57031                 "PETRONOR": {
57032                     "count": 207
57033                 },
57034                 "Rompetrol": {
57035                     "count": 174
57036                 },
57037                 "Lotos": {
57038                     "count": 178
57039                 },
57040                 "ОМВ": {
57041                     "count": 60
57042                 },
57043                 "BR": {
57044                     "count": 129
57045                 },
57046                 "Copec": {
57047                     "count": 505
57048                 },
57049                 "Petrobras": {
57050                     "count": 270
57051                 },
57052                 "Liberty": {
57053                     "count": 55
57054                 },
57055                 "IP": {
57056                     "count": 871
57057                 },
57058                 "Erg": {
57059                     "count": 596
57060                 },
57061                 "Eneos": {
57062                     "count": 97
57063                 },
57064                 "Citgo": {
57065                     "count": 279
57066                 },
57067                 "Metano": {
57068                     "count": 208
57069                 },
57070                 "Сургутнефтегаз": {
57071                     "count": 61
57072                 },
57073                 "EKO": {
57074                     "count": 59
57075                 },
57076                 "Eko": {
57077                     "count": 58
57078                 },
57079                 "Indipend.": {
57080                     "count": 172
57081                 },
57082                 "IES": {
57083                     "count": 63
57084                 },
57085                 "TotalErg": {
57086                     "count": 89
57087                 },
57088                 "Cenex": {
57089                     "count": 115
57090                 },
57091                 "ПТК": {
57092                     "count": 82
57093                 },
57094                 "HP": {
57095                     "count": 79
57096                 },
57097                 "Phillips 66": {
57098                     "count": 216
57099                 },
57100                 "CARREFOUR": {
57101                     "count": 74
57102                 },
57103                 "ERG": {
57104                     "count": 76
57105                 },
57106                 "Speedway": {
57107                     "count": 148
57108                 },
57109                 "Benzina": {
57110                     "count": 96
57111                 },
57112                 "Татнефть": {
57113                     "count": 264
57114                 },
57115                 "Terpel": {
57116                     "count": 259
57117                 },
57118                 "WOG": {
57119                     "count": 189
57120                 },
57121                 "Seaoil": {
57122                     "count": 54
57123                 },
57124                 "АЗС": {
57125                     "count": 1077
57126                 },
57127                 "Kwik Trip": {
57128                     "count": 108
57129                 },
57130                 "Wawa": {
57131                     "count": 89
57132                 },
57133                 "Pertamina": {
57134                     "count": 186
57135                 },
57136                 "COSMO": {
57137                     "count": 64
57138                 },
57139                 "Z": {
57140                     "count": 76
57141                 },
57142                 "Indian Oil": {
57143                     "count": 183
57144                 },
57145                 "АГЗС": {
57146                     "count": 494
57147                 },
57148                 "INA": {
57149                     "count": 121
57150                 },
57151                 "JOMO": {
57152                     "count": 62
57153                 },
57154                 "Holiday": {
57155                     "count": 97
57156                 },
57157                 "YPF": {
57158                     "count": 70
57159                 },
57160                 "IDEMITSU": {
57161                     "count": 87
57162                 },
57163                 "ENEOS": {
57164                     "count": 736
57165                 },
57166                 "Bharat Petroleum": {
57167                     "count": 64
57168                 },
57169                 "CAMPSA": {
57170                     "count": 615
57171                 },
57172                 "Casey's General Store": {
57173                     "count": 190
57174                 },
57175                 "Башнефть": {
57176                     "count": 60
57177                 },
57178                 "Kangaroo": {
57179                     "count": 60
57180                 },
57181                 "コスモ石油 (COSMO)": {
57182                     "count": 136
57183                 },
57184                 "MEROIL": {
57185                     "count": 77
57186                 },
57187                 "1-2-3": {
57188                     "count": 71
57189                 },
57190                 "出光": {
57191                     "count": 228,
57192                     "tags": {
57193                         "name:en": "IDEMITSU"
57194                     }
57195                 },
57196                 "НК Альянс": {
57197                     "count": 88
57198                 },
57199                 "Sinclair": {
57200                     "count": 100
57201                 },
57202                 "Conoco": {
57203                     "count": 189
57204                 },
57205                 "SPBU": {
57206                     "count": 54
57207                 },
57208                 "Макпетрол": {
57209                     "count": 109
57210                 },
57211                 "Circle K": {
57212                     "count": 166
57213                 },
57214                 "Posto Ipiranga": {
57215                     "count": 70
57216                 },
57217                 "Posto Shell": {
57218                     "count": 54
57219                 },
57220                 "Phoenix": {
57221                     "count": 144
57222                 },
57223                 "Ipiranga": {
57224                     "count": 119
57225                 },
57226                 "OKKO": {
57227                     "count": 85
57228                 },
57229                 "ОККО": {
57230                     "count": 119
57231                 },
57232                 "บางจาก": {
57233                     "count": 60
57234                 },
57235                 "QuikTrip": {
57236                     "count": 105
57237                 },
57238                 "Stewart's": {
57239                     "count": 63
57240                 },
57241                 "Posto BR": {
57242                     "count": 68
57243                 },
57244                 "ป ต ท": {
57245                     "count": 152
57246                 },
57247                 "ปตท": {
57248                     "count": 88
57249                 },
57250                 "ANP": {
57251                     "count": 80
57252                 },
57253                 "Kum & Go": {
57254                     "count": 80
57255                 },
57256                 "Petrolimex": {
57257                     "count": 55
57258                 },
57259                 "Sokimex": {
57260                     "count": 66
57261                 },
57262                 "Tela": {
57263                     "count": 154
57264                 },
57265                 "Posto": {
57266                     "count": 71
57267                 },
57268                 "H-E-B": {
57269                     "count": 182
57270                 },
57271                 "Укрнафта": {
57272                     "count": 58
57273                 },
57274                 "Татнефтепродукт": {
57275                     "count": 54
57276                 },
57277                 "Afriquia": {
57278                     "count": 88
57279                 },
57280                 "Murphy USA": {
57281                     "count": 67
57282                 },
57283                 "昭和シェル (Showa-shell)": {
57284                     "count": 94
57285                 },
57286                 "エネオス": {
57287                     "count": 53
57288                 },
57289                 "CNG": {
57290                     "count": 94
57291                 }
57292             },
57293             "pub": {
57294                 "Kings Arms": {
57295                     "count": 67
57296                 },
57297                 "The Ship": {
57298                     "count": 89
57299                 },
57300                 "The White Horse": {
57301                     "count": 204
57302                 },
57303                 "The White Hart": {
57304                     "count": 226
57305                 },
57306                 "Royal Oak": {
57307                     "count": 150
57308                 },
57309                 "The Red Lion": {
57310                     "count": 233
57311                 },
57312                 "The Kings Arms": {
57313                     "count": 58
57314                 },
57315                 "The Star": {
57316                     "count": 73
57317                 },
57318                 "The Anchor": {
57319                     "count": 64
57320                 },
57321                 "The Cross Keys": {
57322                     "count": 55
57323                 },
57324                 "The Wheatsheaf": {
57325                     "count": 117
57326                 },
57327                 "The Crown Inn": {
57328                     "count": 67
57329                 },
57330                 "The Kings Head": {
57331                     "count": 53
57332                 },
57333                 "The Castle": {
57334                     "count": 62
57335                 },
57336                 "The Railway": {
57337                     "count": 102
57338                 },
57339                 "The White Lion": {
57340                     "count": 118
57341                 },
57342                 "The Bell": {
57343                     "count": 121
57344                 },
57345                 "The Bull": {
57346                     "count": 68
57347                 },
57348                 "The Plough": {
57349                     "count": 179
57350                 },
57351                 "The George": {
57352                     "count": 110
57353                 },
57354                 "The Royal Oak": {
57355                     "count": 209
57356                 },
57357                 "The Fox": {
57358                     "count": 74
57359                 },
57360                 "Prince of Wales": {
57361                     "count": 77
57362                 },
57363                 "The Rising Sun": {
57364                     "count": 71
57365                 },
57366                 "The Prince of Wales": {
57367                     "count": 51
57368                 },
57369                 "The Crown": {
57370                     "count": 244
57371                 },
57372                 "The Chequers": {
57373                     "count": 66
57374                 },
57375                 "The Swan": {
57376                     "count": 152
57377                 },
57378                 "Rose and Crown": {
57379                     "count": 79
57380                 },
57381                 "The Victoria": {
57382                     "count": 67
57383                 },
57384                 "New Inn": {
57385                     "count": 90
57386                 },
57387                 "Royal Hotel": {
57388                     "count": 57
57389                 },
57390                 "Red Lion": {
57391                     "count": 207
57392                 },
57393                 "Cross Keys": {
57394                     "count": 61
57395                 },
57396                 "The Greyhound": {
57397                     "count": 96
57398                 },
57399                 "The Black Horse": {
57400                     "count": 94
57401                 },
57402                 "The New Inn": {
57403                     "count": 105
57404                 },
57405                 "Kings Head": {
57406                     "count": 59
57407                 },
57408                 "The Albion": {
57409                     "count": 51
57410                 },
57411                 "The Angel": {
57412                     "count": 52
57413                 },
57414                 "The Queens Head": {
57415                     "count": 52
57416                 },
57417                 "The Ship Inn": {
57418                     "count": 83
57419                 },
57420                 "Rose & Crown": {
57421                     "count": 51
57422                 },
57423                 "Queens Head": {
57424                     "count": 52
57425                 },
57426                 "Irish Pub": {
57427                     "count": 76
57428                 }
57429             },
57430             "fast_food": {
57431                 "Quick": {
57432                     "count": 484
57433                 },
57434                 "McDonald's": {
57435                     "count": 12376,
57436                     "tags": {
57437                         "cuisine": "burger"
57438                     }
57439                 },
57440                 "Subway": {
57441                     "count": 5576,
57442                     "tags": {
57443                         "cuisine": "sandwich"
57444                     }
57445                 },
57446                 "Burger King": {
57447                     "count": 3734,
57448                     "tags": {
57449                         "cuisine": "burger"
57450                     }
57451                 },
57452                 "Ali Baba": {
57453                     "count": 61
57454                 },
57455                 "Hungry Jacks": {
57456                     "count": 173,
57457                     "tags": {
57458                         "cuisine": "burger"
57459                     }
57460                 },
57461                 "Red Rooster": {
57462                     "count": 148
57463                 },
57464                 "KFC": {
57465                     "count": 3198,
57466                     "tags": {
57467                         "cuisine": "chicken"
57468                     }
57469                 },
57470                 "Domino's Pizza": {
57471                     "count": 985,
57472                     "tags": {
57473                         "cuisine": "pizza"
57474                     }
57475                 },
57476                 "Chowking": {
57477                     "count": 142
57478                 },
57479                 "Jollibee": {
57480                     "count": 396
57481                 },
57482                 "Hesburger": {
57483                     "count": 102
57484                 },
57485                 "肯德基": {
57486                     "count": 86
57487                 },
57488                 "Wendy's": {
57489                     "count": 1621,
57490                     "tags": {
57491                         "cuisine": "burger"
57492                     }
57493                 },
57494                 "Tim Hortons": {
57495                     "count": 323
57496                 },
57497                 "Steers": {
57498                     "count": 151
57499                 },
57500                 "Hardee's": {
57501                     "count": 268,
57502                     "tags": {
57503                         "cuisine": "burger"
57504                     }
57505                 },
57506                 "Arby's": {
57507                     "count": 782
57508                 },
57509                 "A&W": {
57510                     "count": 283
57511                 },
57512                 "Dairy Queen": {
57513                     "count": 791
57514                 },
57515                 "Hallo Pizza": {
57516                     "count": 76
57517                 },
57518                 "Fish & Chips": {
57519                     "count": 93
57520                 },
57521                 "Harvey's": {
57522                     "count": 90
57523                 },
57524                 "麥當勞": {
57525                     "count": 65
57526                 },
57527                 "Pizza Pizza": {
57528                     "count": 215
57529                 },
57530                 "Kotipizza": {
57531                     "count": 74
57532                 },
57533                 "Jack in the Box": {
57534                     "count": 546,
57535                     "tags": {
57536                         "cuisine": "burger"
57537                     }
57538                 },
57539                 "Istanbul": {
57540                     "count": 56
57541                 },
57542                 "Kochlöffel": {
57543                     "count": 68
57544                 },
57545                 "Döner": {
57546                     "count": 228
57547                 },
57548                 "Telepizza": {
57549                     "count": 201
57550                 },
57551                 "Sibylla": {
57552                     "count": 61
57553                 },
57554                 "Carl's Jr.": {
57555                     "count": 298,
57556                     "tags": {
57557                         "cuisine": "burger"
57558                     }
57559                 },
57560                 "Quiznos": {
57561                     "count": 266,
57562                     "tags": {
57563                         "cuisine": "sandwich"
57564                     }
57565                 },
57566                 "Wimpy": {
57567                     "count": 141
57568                 },
57569                 "Sonic": {
57570                     "count": 566,
57571                     "tags": {
57572                         "cuisine": "burger"
57573                     }
57574                 },
57575                 "Taco Bell": {
57576                     "count": 1423,
57577                     "tags": {
57578                         "cuisine": "mexican"
57579                     }
57580                 },
57581                 "Pizza Nova": {
57582                     "count": 63
57583                 },
57584                 "Papa John's": {
57585                     "count": 304,
57586                     "tags": {
57587                         "cuisine": "pizza"
57588                     }
57589                 },
57590                 "Nordsee": {
57591                     "count": 159
57592                 },
57593                 "Mr. Sub": {
57594                     "count": 103
57595                 },
57596                 "Макдоналдс": {
57597                     "count": 324,
57598                     "tags": {
57599                         "name:en": "McDonald's"
57600                     }
57601                 },
57602                 "Asia Imbiss": {
57603                     "count": 111
57604                 },
57605                 "Chipotle": {
57606                     "count": 290,
57607                     "tags": {
57608                         "cuisine": "mexican"
57609                     }
57610                 },
57611                 "マクドナルド": {
57612                     "count": 692,
57613                     "tags": {
57614                         "name:en": "McDonald's",
57615                         "cuisine": "burger"
57616                     }
57617                 },
57618                 "In-N-Out Burger": {
57619                     "count": 65
57620                 },
57621                 "Jimmy John's": {
57622                     "count": 141
57623                 },
57624                 "Jamba Juice": {
57625                     "count": 68
57626                 },
57627                 "Робин Сдобин": {
57628                     "count": 82
57629                 },
57630                 "Baskin Robbins": {
57631                     "count": 74
57632                 },
57633                 "ケンタッキーフライドチキン": {
57634                     "count": 164,
57635                     "tags": {
57636                         "name:en": "KFC",
57637                         "cuisine": "chicken"
57638                     }
57639                 },
57640                 "吉野家": {
57641                     "count": 191
57642                 },
57643                 "Taco Time": {
57644                     "count": 88
57645                 },
57646                 "松屋": {
57647                     "count": 281,
57648                     "tags": {
57649                         "name:en": "Matsuya"
57650                     }
57651                 },
57652                 "Little Caesars": {
57653                     "count": 81
57654                 },
57655                 "El Pollo Loco": {
57656                     "count": 63
57657                 },
57658                 "Del Taco": {
57659                     "count": 141
57660                 },
57661                 "White Castle": {
57662                     "count": 80
57663                 },
57664                 "Boston Market": {
57665                     "count": 66
57666                 },
57667                 "Chick-fil-A": {
57668                     "count": 257,
57669                     "tags": {
57670                         "cuisine": "chicken"
57671                     }
57672                 },
57673                 "Panda Express": {
57674                     "count": 238,
57675                     "tags": {
57676                         "cuisine": "chinese"
57677                     }
57678                 },
57679                 "Whataburger": {
57680                     "count": 364
57681                 },
57682                 "Taco John's": {
57683                     "count": 78
57684                 },
57685                 "Теремок": {
57686                     "count": 68
57687                 },
57688                 "Culver's": {
57689                     "count": 425
57690                 },
57691                 "Five Guys": {
57692                     "count": 141
57693                 },
57694                 "Church's Chicken": {
57695                     "count": 95
57696                 },
57697                 "Popeye's": {
57698                     "count": 167,
57699                     "tags": {
57700                         "cuisine": "chicken"
57701                     }
57702                 },
57703                 "Long John Silver's": {
57704                     "count": 93
57705                 },
57706                 "Pollo Campero": {
57707                     "count": 62
57708                 },
57709                 "Zaxby's": {
57710                     "count": 51
57711                 },
57712                 "すき家": {
57713                     "count": 276,
57714                     "tags": {
57715                         "name:en": "SUKIYA"
57716                     }
57717                 },
57718                 "モスバーガー": {
57719                     "count": 257,
57720                     "tags": {
57721                         "name:en": "MOS BURGER"
57722                     }
57723                 },
57724                 "Русский Аппетит": {
57725                     "count": 69
57726                 },
57727                 "なか卯": {
57728                     "count": 63
57729                 }
57730             },
57731             "restaurant": {
57732                 "Pizza Hut": {
57733                     "count": 1180,
57734                     "tags": {
57735                         "cuisine": "pizza"
57736                     }
57737                 },
57738                 "Little Chef": {
57739                     "count": 64
57740                 },
57741                 "Adler": {
57742                     "count": 158
57743                 },
57744                 "Zur Krone": {
57745                     "count": 90
57746                 },
57747                 "Deutsches Haus": {
57748                     "count": 90
57749                 },
57750                 "Krone": {
57751                     "count": 171
57752                 },
57753                 "Akropolis": {
57754                     "count": 152
57755                 },
57756                 "Schützenhaus": {
57757                     "count": 124
57758                 },
57759                 "Kreuz": {
57760                     "count": 74
57761                 },
57762                 "Waldschänke": {
57763                     "count": 55
57764                 },
57765                 "La Piazza": {
57766                     "count": 69
57767                 },
57768                 "Lamm": {
57769                     "count": 66
57770                 },
57771                 "Zur Sonne": {
57772                     "count": 73
57773                 },
57774                 "Zur Linde": {
57775                     "count": 204
57776                 },
57777                 "Poseidon": {
57778                     "count": 110
57779                 },
57780                 "Shanghai": {
57781                     "count": 82
57782                 },
57783                 "Red Lobster": {
57784                     "count": 235
57785                 },
57786                 "Zum Löwen": {
57787                     "count": 84
57788                 },
57789                 "Swiss Chalet": {
57790                     "count": 107
57791                 },
57792                 "Olympia": {
57793                     "count": 74
57794                 },
57795                 "Wagamama": {
57796                     "count": 64
57797                 },
57798                 "Frankie & Benny's": {
57799                     "count": 66
57800                 },
57801                 "Hooters": {
57802                     "count": 103
57803                 },
57804                 "Sternen": {
57805                     "count": 78
57806                 },
57807                 "Hirschen": {
57808                     "count": 79
57809                 },
57810                 "Denny's": {
57811                     "count": 450
57812                 },
57813                 "Athen": {
57814                     "count": 68
57815                 },
57816                 "Sonne": {
57817                     "count": 126
57818                 },
57819                 "Hirsch": {
57820                     "count": 79
57821                 },
57822                 "Ratskeller": {
57823                     "count": 150
57824                 },
57825                 "La Cantina": {
57826                     "count": 56
57827                 },
57828                 "Gasthaus Krone": {
57829                     "count": 56
57830                 },
57831                 "El Greco": {
57832                     "count": 86
57833                 },
57834                 "Gasthof zur Post": {
57835                     "count": 79
57836                 },
57837                 "Nando's": {
57838                     "count": 246
57839                 },
57840                 "Löwen": {
57841                     "count": 112
57842                 },
57843                 "La Pataterie": {
57844                     "count": 51
57845                 },
57846                 "Bella Napoli": {
57847                     "count": 53
57848                 },
57849                 "Pizza Express": {
57850                     "count": 262
57851                 },
57852                 "Mandarin": {
57853                     "count": 65
57854                 },
57855                 "Hong Kong": {
57856                     "count": 83
57857                 },
57858                 "Zizzi": {
57859                     "count": 68
57860                 },
57861                 "Cracker Barrel": {
57862                     "count": 183
57863                 },
57864                 "Rhodos": {
57865                     "count": 81
57866                 },
57867                 "Lindenhof": {
57868                     "count": 79
57869                 },
57870                 "Milano": {
57871                     "count": 54
57872                 },
57873                 "Dolce Vita": {
57874                     "count": 77
57875                 },
57876                 "Kirchenwirt": {
57877                     "count": 81
57878                 },
57879                 "Kantine": {
57880                     "count": 52
57881                 },
57882                 "Ochsen": {
57883                     "count": 95
57884                 },
57885                 "Spur": {
57886                     "count": 62
57887                 },
57888                 "Mykonos": {
57889                     "count": 59
57890                 },
57891                 "Lotus": {
57892                     "count": 66
57893                 },
57894                 "Applebee's": {
57895                     "count": 531
57896                 },
57897                 "Flunch": {
57898                     "count": 72
57899                 },
57900                 "Zur Post": {
57901                     "count": 116
57902                 },
57903                 "China Town": {
57904                     "count": 76
57905                 },
57906                 "La Dolce Vita": {
57907                     "count": 73
57908                 },
57909                 "Waffle House": {
57910                     "count": 207
57911                 },
57912                 "Delphi": {
57913                     "count": 88
57914                 },
57915                 "Linde": {
57916                     "count": 103
57917                 },
57918                 "Outback Steakhouse": {
57919                     "count": 218
57920                 },
57921                 "Dionysos": {
57922                     "count": 69
57923                 },
57924                 "Kelsey's": {
57925                     "count": 57
57926                 },
57927                 "Boston Pizza": {
57928                     "count": 165
57929                 },
57930                 "Bella Italia": {
57931                     "count": 132
57932                 },
57933                 "Sizzler": {
57934                     "count": 53
57935                 },
57936                 "Grüner Baum": {
57937                     "count": 116
57938                 },
57939                 "Taj Mahal": {
57940                     "count": 104
57941                 },
57942                 "Rössli": {
57943                     "count": 68
57944                 },
57945                 "Wimpy": {
57946                     "count": 51
57947                 },
57948                 "Traube": {
57949                     "count": 65
57950                 },
57951                 "Adria": {
57952                     "count": 52
57953                 },
57954                 "Red Robin": {
57955                     "count": 185
57956                 },
57957                 "Roma": {
57958                     "count": 61
57959                 },
57960                 "San Marco": {
57961                     "count": 67
57962                 },
57963                 "Hellas": {
57964                     "count": 55
57965                 },
57966                 "La Perla": {
57967                     "count": 67
57968                 },
57969                 "Vips": {
57970                     "count": 53
57971                 },
57972                 "Panera Bread": {
57973                     "count": 218
57974                 },
57975                 "Da Vinci": {
57976                     "count": 54
57977                 },
57978                 "Hippopotamus": {
57979                     "count": 96
57980                 },
57981                 "Prezzo": {
57982                     "count": 75
57983                 },
57984                 "Courtepaille": {
57985                     "count": 106
57986                 },
57987                 "Hard Rock Cafe": {
57988                     "count": 70
57989                 },
57990                 "Panorama": {
57991                     "count": 61
57992                 },
57993                 "デニーズ": {
57994                     "count": 82
57995                 },
57996                 "Sportheim": {
57997                     "count": 65
57998                 },
57999                 "餃子の王将": {
58000                     "count": 57
58001                 },
58002                 "Bären": {
58003                     "count": 60
58004                 },
58005                 "Alte Post": {
58006                     "count": 60
58007                 },
58008                 "Pizzeria Roma": {
58009                     "count": 51
58010                 },
58011                 "China Garden": {
58012                     "count": 66
58013                 },
58014                 "Vapiano": {
58015                     "count": 82
58016                 },
58017                 "Mamma Mia": {
58018                     "count": 64
58019                 },
58020                 "Schwarzer Adler": {
58021                     "count": 57
58022                 },
58023                 "IHOP": {
58024                     "count": 317
58025                 },
58026                 "Chili's": {
58027                     "count": 328
58028                 },
58029                 "Asia": {
58030                     "count": 51
58031                 },
58032                 "Olive Garden": {
58033                     "count": 279
58034                 },
58035                 "TGI Friday's": {
58036                     "count": 159
58037                 },
58038                 "Friendly's": {
58039                     "count": 78
58040                 },
58041                 "Buffalo Grill": {
58042                     "count": 202
58043                 },
58044                 "Texas Roadhouse": {
58045                     "count": 110
58046                 },
58047                 "ガスト": {
58048                     "count": 230,
58049                     "tags": {
58050                         "name:en": "Gusto"
58051                     }
58052                 },
58053                 "Sakura": {
58054                     "count": 75
58055                 },
58056                 "Mensa": {
58057                     "count": 99
58058                 },
58059                 "The Keg": {
58060                     "count": 53
58061                 },
58062                 "サイゼリヤ": {
58063                     "count": 93
58064                 },
58065                 "La Strada": {
58066                     "count": 52
58067                 },
58068                 "Village Inn": {
58069                     "count": 92
58070                 },
58071                 "Buffalo Wild Wings": {
58072                     "count": 176
58073                 },
58074                 "Peking": {
58075                     "count": 59
58076                 },
58077                 "Boston Market": {
58078                     "count": 61
58079                 },
58080                 "Round Table Pizza": {
58081                     "count": 53
58082                 },
58083                 "Jimmy John's": {
58084                     "count": 69
58085                 },
58086                 "California Pizza Kitchen": {
58087                     "count": 61
58088                 },
58089                 "Якитория": {
58090                     "count": 77
58091                 },
58092                 "Golden Corral": {
58093                     "count": 101
58094                 },
58095                 "Perkins": {
58096                     "count": 105
58097                 },
58098                 "Ruby Tuesday": {
58099                     "count": 162
58100                 },
58101                 "Shari's": {
58102                     "count": 65
58103                 },
58104                 "Bob Evans": {
58105                     "count": 129
58106                 },
58107                 "바다횟집 (Bada Fish Restaurant)": {
58108                     "count": 55
58109                 },
58110                 "Mang Inasal": {
58111                     "count": 84
58112                 },
58113                 "Евразия": {
58114                     "count": 102
58115                 },
58116                 "ジョナサン": {
58117                     "count": 59
58118                 },
58119                 "Longhorn Steakhouse": {
58120                     "count": 66
58121                 }
58122             },
58123             "bank": {
58124                 "Chase": {
58125                     "count": 721
58126                 },
58127                 "Commonwealth Bank": {
58128                     "count": 232
58129                 },
58130                 "Citibank": {
58131                     "count": 277
58132                 },
58133                 "HSBC": {
58134                     "count": 1102
58135                 },
58136                 "Barclays": {
58137                     "count": 965
58138                 },
58139                 "Westpac": {
58140                     "count": 208
58141                 },
58142                 "NAB": {
58143                     "count": 131
58144                 },
58145                 "ANZ": {
58146                     "count": 218
58147                 },
58148                 "Lloyds Bank": {
58149                     "count": 547
58150                 },
58151                 "Landbank": {
58152                     "count": 81
58153                 },
58154                 "Sparkasse": {
58155                     "count": 4555
58156                 },
58157                 "UCPB": {
58158                     "count": 92
58159                 },
58160                 "PNB": {
58161                     "count": 244
58162                 },
58163                 "Metrobank": {
58164                     "count": 269
58165                 },
58166                 "BDO": {
58167                     "count": 290
58168                 },
58169                 "Volksbank": {
58170                     "count": 2591
58171                 },
58172                 "BPI": {
58173                     "count": 415
58174                 },
58175                 "Postbank": {
58176                     "count": 443
58177                 },
58178                 "NatWest": {
58179                     "count": 628
58180                 },
58181                 "Raiffeisenbank": {
58182                     "count": 2119
58183                 },
58184                 "Yorkshire Bank": {
58185                     "count": 63
58186                 },
58187                 "ABSA": {
58188                     "count": 95
58189                 },
58190                 "Standard Bank": {
58191                     "count": 109
58192                 },
58193                 "FNB": {
58194                     "count": 97
58195                 },
58196                 "Deutsche Bank": {
58197                     "count": 855
58198                 },
58199                 "SEB": {
58200                     "count": 133
58201                 },
58202                 "Commerzbank": {
58203                     "count": 806
58204                 },
58205                 "Targobank": {
58206                     "count": 166
58207                 },
58208                 "ABN AMRO": {
58209                     "count": 130
58210                 },
58211                 "Handelsbanken": {
58212                     "count": 184
58213                 },
58214                 "Swedbank": {
58215                     "count": 223
58216                 },
58217                 "Kreissparkasse": {
58218                     "count": 600
58219                 },
58220                 "UniCredit Bank": {
58221                     "count": 408
58222                 },
58223                 "Monte dei Paschi di Siena": {
58224                     "count": 132
58225                 },
58226                 "Caja Rural": {
58227                     "count": 99
58228                 },
58229                 "Dresdner Bank": {
58230                     "count": 66
58231                 },
58232                 "Sparda-Bank": {
58233                     "count": 320
58234                 },
58235                 "VÚB": {
58236                     "count": 107
58237                 },
58238                 "Slovenská sporiteľňa": {
58239                     "count": 134
58240                 },
58241                 "Bank of Montreal": {
58242                     "count": 118
58243                 },
58244                 "KBC": {
58245                     "count": 203
58246                 },
58247                 "Royal Bank of Scotland": {
58248                     "count": 111
58249                 },
58250                 "TSB": {
58251                     "count": 80
58252                 },
58253                 "US Bank": {
58254                     "count": 256
58255                 },
58256                 "HypoVereinsbank": {
58257                     "count": 561
58258                 },
58259                 "Bank Austria": {
58260                     "count": 176
58261                 },
58262                 "ING": {
58263                     "count": 496
58264                 },
58265                 "Erste Bank": {
58266                     "count": 180
58267                 },
58268                 "CIBC": {
58269                     "count": 326
58270                 },
58271                 "Scotiabank": {
58272                     "count": 413
58273                 },
58274                 "Caisse d'Épargne": {
58275                     "count": 882
58276                 },
58277                 "Santander": {
58278                     "count": 1323
58279                 },
58280                 "Bank of Scotland": {
58281                     "count": 89
58282                 },
58283                 "TD Canada Trust": {
58284                     "count": 450
58285                 },
58286                 "BMO": {
58287                     "count": 169
58288                 },
58289                 "Danske Bank": {
58290                     "count": 131
58291                 },
58292                 "OTP": {
58293                     "count": 192
58294                 },
58295                 "Crédit Agricole": {
58296                     "count": 1239
58297                 },
58298                 "LCL": {
58299                     "count": 553
58300                 },
58301                 "VR-Bank": {
58302                     "count": 430
58303                 },
58304                 "ČSOB": {
58305                     "count": 160
58306                 },
58307                 "Česká spořitelna": {
58308                     "count": 212
58309                 },
58310                 "BNP": {
58311                     "count": 112
58312                 },
58313                 "Royal Bank": {
58314                     "count": 65
58315                 },
58316                 "Nationwide": {
58317                     "count": 209
58318                 },
58319                 "Halifax": {
58320                     "count": 225
58321                 },
58322                 "BAWAG PSK": {
58323                     "count": 102
58324                 },
58325                 "National Bank": {
58326                     "count": 84
58327                 },
58328                 "Nedbank": {
58329                     "count": 80
58330                 },
58331                 "First National Bank": {
58332                     "count": 85
58333                 },
58334                 "Nordea": {
58335                     "count": 319
58336                 },
58337                 "Rabobank": {
58338                     "count": 609
58339                 },
58340                 "Sparkasse KölnBonn": {
58341                     "count": 69
58342                 },
58343                 "Tatra banka": {
58344                     "count": 67
58345                 },
58346                 "Berliner Sparkasse": {
58347                     "count": 62
58348                 },
58349                 "Berliner Volksbank": {
58350                     "count": 77
58351                 },
58352                 "Wells Fargo": {
58353                     "count": 874
58354                 },
58355                 "Credit Suisse": {
58356                     "count": 71
58357                 },
58358                 "Société Générale": {
58359                     "count": 634
58360                 },
58361                 "Osuuspankki": {
58362                     "count": 75
58363                 },
58364                 "Sparkasse Aachen": {
58365                     "count": 56
58366                 },
58367                 "Hamburger Sparkasse": {
58368                     "count": 156
58369                 },
58370                 "Cassa di Risparmio del Veneto": {
58371                     "count": 68
58372                 },
58373                 "BNP Paribas": {
58374                     "count": 617
58375                 },
58376                 "Banque Populaire": {
58377                     "count": 433
58378                 },
58379                 "BNP Paribas Fortis": {
58380                     "count": 209
58381                 },
58382                 "Banco Popular": {
58383                     "count": 291
58384                 },
58385                 "Bancaja": {
58386                     "count": 55
58387                 },
58388                 "Banesto": {
58389                     "count": 208
58390                 },
58391                 "La Caixa": {
58392                     "count": 583
58393                 },
58394                 "Santander Consumer Bank": {
58395                     "count": 88
58396                 },
58397                 "BRD": {
58398                     "count": 191
58399                 },
58400                 "BCR": {
58401                     "count": 143
58402                 },
58403                 "Banca Transilvania": {
58404                     "count": 141
58405                 },
58406                 "BW-Bank": {
58407                     "count": 97
58408                 },
58409                 "Komerční banka": {
58410                     "count": 132
58411                 },
58412                 "Banco Pastor": {
58413                     "count": 64
58414                 },
58415                 "Stadtsparkasse": {
58416                     "count": 86
58417                 },
58418                 "Ulster Bank": {
58419                     "count": 86
58420                 },
58421                 "Sberbank": {
58422                     "count": 58
58423                 },
58424                 "CIC": {
58425                     "count": 427
58426                 },
58427                 "Bancpost": {
58428                     "count": 56
58429                 },
58430                 "Caja Madrid": {
58431                     "count": 115
58432                 },
58433                 "Maybank": {
58434                     "count": 94
58435                 },
58436                 "中国银行": {
58437                     "count": 85
58438                 },
58439                 "Unicredit Banca": {
58440                     "count": 243
58441                 },
58442                 "Crédit Mutuel": {
58443                     "count": 690
58444                 },
58445                 "BBVA": {
58446                     "count": 647
58447                 },
58448                 "Intesa San Paolo": {
58449                     "count": 69
58450                 },
58451                 "TD Bank": {
58452                     "count": 206
58453                 },
58454                 "Belfius": {
58455                     "count": 231
58456                 },
58457                 "Bank of America": {
58458                     "count": 924
58459                 },
58460                 "RBC": {
58461                     "count": 230
58462                 },
58463                 "Alpha Bank": {
58464                     "count": 123
58465                 },
58466                 "Сбербанк": {
58467                     "count": 4794
58468                 },
58469                 "Россельхозбанк": {
58470                     "count": 201
58471                 },
58472                 "Crédit du Nord": {
58473                     "count": 96
58474                 },
58475                 "BancoEstado": {
58476                     "count": 80
58477                 },
58478                 "Millennium Bank": {
58479                     "count": 414
58480                 },
58481                 "State Bank of India": {
58482                     "count": 151
58483                 },
58484                 "Беларусбанк": {
58485                     "count": 242
58486                 },
58487                 "ING Bank Śląski": {
58488                     "count": 67
58489                 },
58490                 "Caixa Geral de Depósitos": {
58491                     "count": 129
58492                 },
58493                 "Kreissparkasse Köln": {
58494                     "count": 65
58495                 },
58496                 "Banco BCI": {
58497                     "count": 51
58498                 },
58499                 "Banco de Chile": {
58500                     "count": 98
58501                 },
58502                 "ВТБ24": {
58503                     "count": 326
58504                 },
58505                 "UBS": {
58506                     "count": 134
58507                 },
58508                 "PKO BP": {
58509                     "count": 265
58510                 },
58511                 "Chinabank": {
58512                     "count": 55
58513                 },
58514                 "PSBank": {
58515                     "count": 59
58516                 },
58517                 "Union Bank": {
58518                     "count": 124
58519                 },
58520                 "China Bank": {
58521                     "count": 66
58522                 },
58523                 "RCBC": {
58524                     "count": 122
58525                 },
58526                 "Unicaja": {
58527                     "count": 83
58528                 },
58529                 "BBK": {
58530                     "count": 79
58531                 },
58532                 "Ibercaja": {
58533                     "count": 69
58534                 },
58535                 "RBS": {
58536                     "count": 143
58537                 },
58538                 "Commercial Bank of Ceylon PLC": {
58539                     "count": 79
58540                 },
58541                 "Bank of Ireland": {
58542                     "count": 109
58543                 },
58544                 "BNL": {
58545                     "count": 87
58546                 },
58547                 "Banco Santander": {
58548                     "count": 138
58549                 },
58550                 "Banco Itaú": {
58551                     "count": 111
58552                 },
58553                 "AIB": {
58554                     "count": 72
58555                 },
58556                 "BZ WBK": {
58557                     "count": 77
58558                 },
58559                 "Banco do Brasil": {
58560                     "count": 557
58561                 },
58562                 "Caixa Econômica Federal": {
58563                     "count": 184
58564                 },
58565                 "Fifth Third Bank": {
58566                     "count": 84
58567                 },
58568                 "Banca Popolare di Vicenza": {
58569                     "count": 81
58570                 },
58571                 "Wachovia": {
58572                     "count": 58
58573                 },
58574                 "OLB": {
58575                     "count": 53
58576                 },
58577                 "みずほ銀行": {
58578                     "count": 78
58579                 },
58580                 "BES": {
58581                     "count": 72
58582                 },
58583                 "ICICI Bank": {
58584                     "count": 91
58585                 },
58586                 "HDFC Bank": {
58587                     "count": 91
58588                 },
58589                 "La Banque Postale": {
58590                     "count": 67
58591                 },
58592                 "Pekao SA": {
58593                     "count": 56
58594                 },
58595                 "Oberbank": {
58596                     "count": 90
58597                 },
58598                 "Bradesco": {
58599                     "count": 295
58600                 },
58601                 "Oldenburgische Landesbank": {
58602                     "count": 56
58603                 },
58604                 "Bendigo Bank": {
58605                     "count": 93
58606                 },
58607                 "Argenta": {
58608                     "count": 86
58609                 },
58610                 "AXA": {
58611                     "count": 68
58612                 },
58613                 "Axis Bank": {
58614                     "count": 61
58615                 },
58616                 "Banco Nación": {
58617                     "count": 67
58618                 },
58619                 "GE Money Bank": {
58620                     "count": 72
58621                 },
58622                 "Альфа-Банк": {
58623                     "count": 185
58624                 },
58625                 "Белагропромбанк": {
58626                     "count": 70
58627                 },
58628                 "Caja Círculo": {
58629                     "count": 65
58630                 },
58631                 "Banco Galicia": {
58632                     "count": 51
58633                 },
58634                 "Eurobank": {
58635                     "count": 97
58636                 },
58637                 "Banca Intesa": {
58638                     "count": 62
58639                 },
58640                 "Canara Bank": {
58641                     "count": 92
58642                 },
58643                 "Cajamar": {
58644                     "count": 77
58645                 },
58646                 "Banamex": {
58647                     "count": 149
58648                 },
58649                 "Crédit Mutuel de Bretagne": {
58650                     "count": 335
58651                 },
58652                 "Davivienda": {
58653                     "count": 83
58654                 },
58655                 "Bank Spółdzielczy": {
58656                     "count": 159
58657                 },
58658                 "Credit Agricole": {
58659                     "count": 157
58660                 },
58661                 "Bankinter": {
58662                     "count": 59
58663                 },
58664                 "Banque Nationale": {
58665                     "count": 63
58666                 },
58667                 "Bank of the West": {
58668                     "count": 96
58669                 },
58670                 "Key Bank": {
58671                     "count": 155
58672                 },
58673                 "Western Union": {
58674                     "count": 88
58675                 },
58676                 "Citizens Bank": {
58677                     "count": 115
58678                 },
58679                 "ПриватБанк": {
58680                     "count": 513
58681                 },
58682                 "Security Bank": {
58683                     "count": 78
58684                 },
58685                 "Millenium": {
58686                     "count": 60
58687                 },
58688                 "Bankia": {
58689                     "count": 149
58690                 },
58691                 "三菱東京UFJ銀行": {
58692                     "count": 159
58693                 },
58694                 "Caixa": {
58695                     "count": 117
58696                 },
58697                 "Banco de Costa Rica": {
58698                     "count": 63
58699                 },
58700                 "SunTrust Bank": {
58701                     "count": 73
58702                 },
58703                 "Itaú": {
58704                     "count": 338
58705                 },
58706                 "PBZ": {
58707                     "count": 52
58708                 },
58709                 "中国工商银行": {
58710                     "count": 51
58711                 },
58712                 "Bancolombia": {
58713                     "count": 89
58714                 },
58715                 "Райффайзен Банк Аваль": {
58716                     "count": 64
58717                 },
58718                 "Bancomer": {
58719                     "count": 115
58720                 },
58721                 "Banorte": {
58722                     "count": 80
58723                 },
58724                 "Alior Bank": {
58725                     "count": 81
58726                 },
58727                 "BOC": {
58728                     "count": 51
58729                 },
58730                 "Банк Москвы": {
58731                     "count": 118
58732                 },
58733                 "ВТБ": {
58734                     "count": 59
58735                 },
58736                 "Getin Bank": {
58737                     "count": 55
58738                 },
58739                 "Caja Duero": {
58740                     "count": 57
58741                 },
58742                 "Regions Bank": {
58743                     "count": 62
58744                 },
58745                 "Росбанк": {
58746                     "count": 177
58747                 },
58748                 "Banco Estado": {
58749                     "count": 72
58750                 },
58751                 "BCI": {
58752                     "count": 68
58753                 },
58754                 "SunTrust": {
58755                     "count": 68
58756                 },
58757                 "PNC Bank": {
58758                     "count": 254
58759                 },
58760                 "신한은행": {
58761                     "count": 217,
58762                     "tags": {
58763                         "name:en": "Sinhan Bank"
58764                     }
58765                 },
58766                 "우리은행": {
58767                     "count": 291,
58768                     "tags": {
58769                         "name:en": "Uri Bank"
58770                     }
58771                 },
58772                 "국민은행": {
58773                     "count": 165,
58774                     "tags": {
58775                         "name:en": "Gungmin Bank"
58776                     }
58777                 },
58778                 "중소기업은행": {
58779                     "count": 52,
58780                     "tags": {
58781                         "name:en": "Industrial Bank of Korea"
58782                     }
58783                 },
58784                 "광주은행": {
58785                     "count": 51,
58786                     "tags": {
58787                         "name:en": "Gwangju Bank"
58788                     }
58789                 },
58790                 "Газпромбанк": {
58791                     "count": 100
58792                 },
58793                 "M&T Bank": {
58794                     "count": 92
58795                 },
58796                 "Caja de Burgos": {
58797                     "count": 51
58798                 },
58799                 "Santander Totta": {
58800                     "count": 69
58801                 },
58802                 "УкрСиббанк": {
58803                     "count": 192
58804                 },
58805                 "Ощадбанк": {
58806                     "count": 364
58807                 },
58808                 "Уралсиб": {
58809                     "count": 85
58810                 },
58811                 "りそな銀行": {
58812                     "count": 225,
58813                     "tags": {
58814                         "name:en": "Mizuho Bank"
58815                     }
58816                 },
58817                 "Ecobank": {
58818                     "count": 66
58819                 },
58820                 "Cajero Automatico Bancared": {
58821                     "count": 145
58822                 },
58823                 "Промсвязьбанк": {
58824                     "count": 93
58825                 },
58826                 "三井住友銀行": {
58827                     "count": 129
58828                 },
58829                 "Banco Provincia": {
58830                     "count": 67
58831                 },
58832                 "BB&T": {
58833                     "count": 147
58834                 },
58835                 "Возрождение": {
58836                     "count": 59
58837                 },
58838                 "Capital One": {
58839                     "count": 59
58840                 },
58841                 "横浜銀行": {
58842                     "count": 51
58843                 },
58844                 "Bank Mandiri": {
58845                     "count": 62
58846                 },
58847                 "Banco de la Nación": {
58848                     "count": 92
58849                 },
58850                 "Banco G&T Continental": {
58851                     "count": 62
58852                 },
58853                 "Peoples Bank": {
58854                     "count": 60
58855                 },
58856                 "工商银行": {
58857                     "count": 51
58858                 },
58859                 "Совкомбанк": {
58860                     "count": 55
58861                 },
58862                 "Provincial": {
58863                     "count": 56
58864                 },
58865                 "Banco de Desarrollo Banrural": {
58866                     "count": 73
58867                 },
58868                 "Banco Bradesco": {
58869                     "count": 65
58870                 },
58871                 "Bicentenario": {
58872                     "count": 182
58873                 },
58874                 "ლიბერთი ბანკი": {
58875                     "count": 54,
58876                     "tags": {
58877                         "name:en": "Liberty Bank"
58878                     }
58879                 },
58880                 "Banesco": {
58881                     "count": 108
58882                 },
58883                 "Mercantil": {
58884                     "count": 75
58885                 },
58886                 "Bank BRI": {
58887                     "count": 53
58888                 },
58889                 "Del Tesoro": {
58890                     "count": 91
58891                 },
58892                 "하나은행": {
58893                     "count": 77
58894                 },
58895                 "CityCommerce Bank": {
58896                     "count": 71
58897                 },
58898                 "De Venezuela": {
58899                     "count": 117
58900                 }
58901             },
58902             "car_rental": {
58903                 "Europcar": {
58904                     "count": 291
58905                 },
58906                 "Budget": {
58907                     "count": 92
58908                 },
58909                 "Sixt": {
58910                     "count": 161
58911                 },
58912                 "Avis": {
58913                     "count": 282
58914                 },
58915                 "Hertz": {
58916                     "count": 293
58917                 },
58918                 "Enterprise": {
58919                     "count": 199
58920                 },
58921                 "stadtmobil CarSharing-Station": {
58922                     "count": 148
58923                 }
58924             },
58925             "pharmacy": {
58926                 "Rowlands Pharmacy": {
58927                     "count": 71
58928                 },
58929                 "Boots": {
58930                     "count": 840
58931                 },
58932                 "Marien-Apotheke": {
58933                     "count": 314
58934                 },
58935                 "Mercury Drug": {
58936                     "count": 426
58937                 },
58938                 "Löwen-Apotheke": {
58939                     "count": 356
58940                 },
58941                 "Superdrug": {
58942                     "count": 117
58943                 },
58944                 "Sonnen-Apotheke": {
58945                     "count": 311
58946                 },
58947                 "Rathaus-Apotheke": {
58948                     "count": 132
58949                 },
58950                 "Engel-Apotheke": {
58951                     "count": 123
58952                 },
58953                 "Hirsch-Apotheke": {
58954                     "count": 83
58955                 },
58956                 "Stern-Apotheke": {
58957                     "count": 67
58958                 },
58959                 "Lloyds Pharmacy": {
58960                     "count": 295
58961                 },
58962                 "Rosen-Apotheke": {
58963                     "count": 208
58964                 },
58965                 "Stadt-Apotheke": {
58966                     "count": 302
58967                 },
58968                 "Markt-Apotheke": {
58969                     "count": 164
58970                 },
58971                 "Аптека": {
58972                     "count": 1989
58973                 },
58974                 "Pharmasave": {
58975                     "count": 64
58976                 },
58977                 "Brunnen-Apotheke": {
58978                     "count": 53
58979                 },
58980                 "Shoppers Drug Mart": {
58981                     "count": 430
58982                 },
58983                 "Apotheke am Markt": {
58984                     "count": 60
58985                 },
58986                 "Alte Apotheke": {
58987                     "count": 88
58988                 },
58989                 "Neue Apotheke": {
58990                     "count": 109
58991                 },
58992                 "Gintarinė vaistinė": {
58993                     "count": 101
58994                 },
58995                 "Rats-Apotheke": {
58996                     "count": 84
58997                 },
58998                 "Adler Apotheke": {
58999                     "count": 313
59000                 },
59001                 "Pharmacie Centrale": {
59002                     "count": 64
59003                 },
59004                 "Walgreens": {
59005                     "count": 1619
59006                 },
59007                 "Rite Aid": {
59008                     "count": 745
59009                 },
59010                 "Apotheke": {
59011                     "count": 165
59012                 },
59013                 "Linden-Apotheke": {
59014                     "count": 211
59015                 },
59016                 "Bahnhof-Apotheke": {
59017                     "count": 66
59018                 },
59019                 "Burg-Apotheke": {
59020                     "count": 55
59021                 },
59022                 "Jean Coutu": {
59023                     "count": 62
59024                 },
59025                 "Pharmaprix": {
59026                     "count": 60
59027                 },
59028                 "Farmacias Ahumada": {
59029                     "count": 104
59030                 },
59031                 "Farmacia Comunale": {
59032                     "count": 113
59033                 },
59034                 "Farmacias Cruz Verde": {
59035                     "count": 86
59036                 },
59037                 "Cruz Verde": {
59038                     "count": 99
59039                 },
59040                 "Hubertus Apotheke": {
59041                     "count": 52
59042                 },
59043                 "CVS": {
59044                     "count": 1560
59045                 },
59046                 "Farmacias SalcoBrand": {
59047                     "count": 133
59048                 },
59049                 "Фармация": {
59050                     "count": 120
59051                 },
59052                 "Bären-Apotheke": {
59053                     "count": 74
59054                 },
59055                 "Clicks": {
59056                     "count": 113
59057                 },
59058                 "セイジョー": {
59059                     "count": 53
59060                 },
59061                 "マツモトキヨシ": {
59062                     "count": 115
59063                 },
59064                 "Dr. Max": {
59065                     "count": 51
59066                 },
59067                 "Вита": {
59068                     "count": 106
59069                 },
59070                 "Радуга": {
59071                     "count": 70
59072                 },
59073                 "サンドラッグ": {
59074                     "count": 61
59075                 },
59076                 "Apteka": {
59077                     "count": 366
59078                 },
59079                 "Первая помощь": {
59080                     "count": 74
59081                 },
59082                 "Ригла": {
59083                     "count": 113
59084                 },
59085                 "Имплозия": {
59086                     "count": 63
59087                 },
59088                 "Kinney Drugs": {
59089                     "count": 68
59090                 },
59091                 "Классика": {
59092                     "count": 67
59093                 },
59094                 "Ljekarna": {
59095                     "count": 53
59096                 },
59097                 "SalcoBrand": {
59098                     "count": 88
59099                 },
59100                 "Аптека 36,6": {
59101                     "count": 224
59102                 },
59103                 "Фармакор": {
59104                     "count": 75
59105                 },
59106                 "スギ薬局": {
59107                     "count": 84
59108                 },
59109                 "Аптечный пункт": {
59110                     "count": 148
59111                 },
59112                 "Невис": {
59113                     "count": 60
59114                 },
59115                 "トモズ (Tomod's)": {
59116                     "count": 83
59117                 },
59118                 "Eurovaistinė": {
59119                     "count": 65
59120                 },
59121                 "Farmacity": {
59122                     "count": 68
59123                 },
59124                 "аптека": {
59125                     "count": 96
59126                 },
59127                 "The Generics Pharmacy": {
59128                     "count": 95
59129                 },
59130                 "Farmatodo": {
59131                     "count": 123
59132                 },
59133                 "Duane Reade": {
59134                     "count": 61
59135                 },
59136                 "H-E-B": {
59137                     "count": 262
59138                 },
59139                 "Фармленд": {
59140                     "count": 82
59141                 },
59142                 "ドラッグてらしま (Drug Terashima)": {
59143                     "count": 96
59144                 },
59145                 "Арніка": {
59146                     "count": 125
59147                 },
59148                 "ავერსი (Aversi)": {
59149                     "count": 62
59150                 },
59151                 "Farmahorro": {
59152                     "count": 58
59153                 }
59154             },
59155             "cafe": {
59156                 "Starbucks": {
59157                     "count": 4238,
59158                     "tags": {
59159                         "cuisine": "coffee_shop"
59160                     }
59161                 },
59162                 "Cafeteria": {
59163                     "count": 115
59164                 },
59165                 "Costa": {
59166                     "count": 618
59167                 },
59168                 "Caffè Nero": {
59169                     "count": 169
59170                 },
59171                 "Кафе": {
59172                     "count": 226
59173                 },
59174                 "Café Central": {
59175                     "count": 61
59176                 },
59177                 "Second Cup": {
59178                     "count": 193
59179                 },
59180                 "Dunkin Donuts": {
59181                     "count": 428,
59182                     "tags": {
59183                         "cuisine": "donut"
59184                     }
59185                 },
59186                 "Espresso House": {
59187                     "count": 53
59188                 },
59189                 "Segafredo": {
59190                     "count": 69
59191                 },
59192                 "Coffee Time": {
59193                     "count": 94
59194                 },
59195                 "Cafe Coffee Day": {
59196                     "count": 120
59197                 },
59198                 "Eiscafe Venezia": {
59199                     "count": 180
59200                 },
59201                 "スターバックス": {
59202                     "count": 251,
59203                     "tags": {
59204                         "name:en": "Starbucks"
59205                     }
59206                 },
59207                 "Шоколадница": {
59208                     "count": 145
59209                 },
59210                 "Pret A Manger": {
59211                     "count": 119
59212                 },
59213                 "Столовая": {
59214                     "count": 391
59215                 },
59216                 "Jamba Juice": {
59217                     "count": 53
59218                 },
59219                 "ドトール": {
59220                     "count": 164,
59221                     "tags": {
59222                         "name:en": "DOUTOR"
59223                     }
59224                 },
59225                 "Tchibo": {
59226                     "count": 100
59227                 },
59228                 "Кофе Хауз": {
59229                     "count": 104
59230                 },
59231                 "Caribou Coffee": {
59232                     "count": 100
59233                 },
59234                 "Уют": {
59235                     "count": 51
59236                 },
59237                 "Шашлычная": {
59238                     "count": 58
59239                 },
59240                 "คาเฟ่ อเมซอน": {
59241                     "count": 62
59242                 },
59243                 "Traveler's Coffee": {
59244                     "count": 60
59245                 },
59246                 "カフェ・ド・クリエ": {
59247                     "count": 67,
59248                     "tags": {
59249                         "name:en": "Cafe de CRIE"
59250                     }
59251                 },
59252                 "Cafe Amazon": {
59253                     "count": 65
59254                 }
59255             }
59256         },
59257         "shop": {
59258             "supermarket": {
59259                 "Budgens": {
59260                     "count": 88
59261                 },
59262                 "Morrisons": {
59263                     "count": 411
59264                 },
59265                 "Interspar": {
59266                     "count": 142
59267                 },
59268                 "Merkur": {
59269                     "count": 107
59270                 },
59271                 "Sainsbury's": {
59272                     "count": 547
59273                 },
59274                 "Lidl": {
59275                     "count": 7130
59276                 },
59277                 "Edeka": {
59278                     "count": 2293
59279                 },
59280                 "Coles": {
59281                     "count": 400
59282                 },
59283                 "Iceland": {
59284                     "count": 315
59285                 },
59286                 "Coop": {
59287                     "count": 2100
59288                 },
59289                 "Tesco": {
59290                     "count": 1297
59291                 },
59292                 "Woolworths": {
59293                     "count": 541
59294                 },
59295                 "Zielpunkt": {
59296                     "count": 239
59297                 },
59298                 "Nahkauf": {
59299                     "count": 170
59300                 },
59301                 "Billa": {
59302                     "count": 1432
59303                 },
59304                 "Kaufland": {
59305                     "count": 1004
59306                 },
59307                 "Plus": {
59308                     "count": 120
59309                 },
59310                 "ALDI": {
59311                     "count": 5172
59312                 },
59313                 "Checkers": {
59314                     "count": 128
59315                 },
59316                 "Tesco Metro": {
59317                     "count": 137
59318                 },
59319                 "NP": {
59320                     "count": 153
59321                 },
59322                 "Penny": {
59323                     "count": 1759
59324                 },
59325                 "Norma": {
59326                     "count": 1068
59327                 },
59328                 "Asda": {
59329                     "count": 225
59330                 },
59331                 "Netto": {
59332                     "count": 4379
59333                 },
59334                 "Rewe": {
59335                     "count": 2645
59336                 },
59337                 "Aldi Süd": {
59338                     "count": 594
59339                 },
59340                 "Real": {
59341                     "count": 246
59342                 },
59343                 "Tesco Express": {
59344                     "count": 406
59345                 },
59346                 "King Soopers": {
59347                     "count": 72
59348                 },
59349                 "Kiwi": {
59350                     "count": 167
59351                 },
59352                 "Pick n Pay": {
59353                     "count": 241
59354                 },
59355                 "ICA": {
59356                     "count": 192
59357                 },
59358                 "Tengelmann": {
59359                     "count": 188
59360                 },
59361                 "Carrefour": {
59362                     "count": 1640
59363                 },
59364                 "Waitrose": {
59365                     "count": 258
59366                 },
59367                 "Spar": {
59368                     "count": 2386
59369                 },
59370                 "Hofer": {
59371                     "count": 442
59372                 },
59373                 "M-Preis": {
59374                     "count": 76
59375                 },
59376                 "tegut": {
59377                     "count": 210
59378                 },
59379                 "Sainsbury's Local": {
59380                     "count": 118
59381                 },
59382                 "E-Center": {
59383                     "count": 66
59384                 },
59385                 "Aldi Nord": {
59386                     "count": 210
59387                 },
59388                 "nahkauf": {
59389                     "count": 84
59390                 },
59391                 "Meijer": {
59392                     "count": 76
59393                 },
59394                 "Safeway": {
59395                     "count": 410
59396                 },
59397                 "Costco": {
59398                     "count": 152
59399                 },
59400                 "Albert": {
59401                     "count": 185
59402                 },
59403                 "Jumbo": {
59404                     "count": 194
59405                 },
59406                 "Shoprite": {
59407                     "count": 244
59408                 },
59409                 "MPreis": {
59410                     "count": 54
59411                 },
59412                 "Penny Market": {
59413                     "count": 429
59414                 },
59415                 "Tesco Extra": {
59416                     "count": 123
59417                 },
59418                 "Albert Heijn": {
59419                     "count": 476
59420                 },
59421                 "IGA": {
59422                     "count": 363
59423                 },
59424                 "Super U": {
59425                     "count": 488
59426                 },
59427                 "Metro": {
59428                     "count": 260
59429                 },
59430                 "Neukauf": {
59431                     "count": 77
59432                 },
59433                 "Migros": {
59434                     "count": 459
59435                 },
59436                 "Marktkauf": {
59437                     "count": 121
59438                 },
59439                 "Delikatesy Centrum": {
59440                     "count": 59
59441                 },
59442                 "C1000": {
59443                     "count": 307
59444                 },
59445                 "Hoogvliet": {
59446                     "count": 53
59447                 },
59448                 "Food Basics": {
59449                     "count": 75
59450                 },
59451                 "Casino": {
59452                     "count": 264
59453                 },
59454                 "Penny Markt": {
59455                     "count": 466
59456                 },
59457                 "Giant": {
59458                     "count": 191
59459                 },
59460                 "COOP Jednota": {
59461                     "count": 73
59462                 },
59463                 "Rema 1000": {
59464                     "count": 368
59465                 },
59466                 "Kaufpark": {
59467                     "count": 96
59468                 },
59469                 "ALDI SÜD": {
59470                     "count": 113
59471                 },
59472                 "Simply Market": {
59473                     "count": 330
59474                 },
59475                 "Konzum": {
59476                     "count": 230
59477                 },
59478                 "Carrefour Express": {
59479                     "count": 353
59480                 },
59481                 "Eurospar": {
59482                     "count": 270
59483                 },
59484                 "Mercator": {
59485                     "count": 125
59486                 },
59487                 "Famila": {
59488                     "count": 130
59489                 },
59490                 "Hemköp": {
59491                     "count": 82
59492                 },
59493                 "real,-": {
59494                     "count": 81
59495                 },
59496                 "Markant": {
59497                     "count": 88
59498                 },
59499                 "Volg": {
59500                     "count": 135
59501                 },
59502                 "Leader Price": {
59503                     "count": 267
59504                 },
59505                 "Treff 3000": {
59506                     "count": 94
59507                 },
59508                 "SuperBrugsen": {
59509                     "count": 67
59510                 },
59511                 "Kaiser's": {
59512                     "count": 256
59513                 },
59514                 "K+K": {
59515                     "count": 106
59516                 },
59517                 "Unimarkt": {
59518                     "count": 86
59519                 },
59520                 "Carrefour City": {
59521                     "count": 126
59522                 },
59523                 "Sobeys": {
59524                     "count": 122
59525                 },
59526                 "S-Market": {
59527                     "count": 109
59528                 },
59529                 "Combi": {
59530                     "count": 55
59531                 },
59532                 "Denner": {
59533                     "count": 276
59534                 },
59535                 "Konsum": {
59536                     "count": 133
59537                 },
59538                 "Franprix": {
59539                     "count": 312
59540                 },
59541                 "Monoprix": {
59542                     "count": 198
59543                 },
59544                 "Diska": {
59545                     "count": 69
59546                 },
59547                 "PENNY": {
59548                     "count": 79
59549                 },
59550                 "Dia": {
59551                     "count": 835
59552                 },
59553                 "Giant Eagle": {
59554                     "count": 85
59555                 },
59556                 "NORMA": {
59557                     "count": 115
59558                 },
59559                 "AD Delhaize": {
59560                     "count": 63
59561                 },
59562                 "Auchan": {
59563                     "count": 152
59564                 },
59565                 "Mercadona": {
59566                     "count": 769
59567                 },
59568                 "Consum": {
59569                     "count": 130
59570                 },
59571                 "Carrefour Market": {
59572                     "count": 80
59573                 },
59574                 "Whole Foods": {
59575                     "count": 210,
59576                     "tags": {
59577                         "shop": "supermarket"
59578                     }
59579                 },
59580                 "Pam": {
59581                     "count": 56
59582                 },
59583                 "sky": {
59584                     "count": 105
59585                 },
59586                 "Despar": {
59587                     "count": 146
59588                 },
59589                 "Eroski": {
59590                     "count": 208
59591                 },
59592                 "Costcutter": {
59593                     "count": 63
59594                 },
59595                 "Maxi": {
59596                     "count": 108
59597                 },
59598                 "Colruyt": {
59599                     "count": 180
59600                 },
59601                 "The Co-operative": {
59602                     "count": 64
59603                 },
59604                 "Intermarché": {
59605                     "count": 1210
59606                 },
59607                 "Delhaize": {
59608                     "count": 207
59609                 },
59610                 "CBA": {
59611                     "count": 176
59612                 },
59613                 "Shopi": {
59614                     "count": 53
59615                 },
59616                 "Walmart": {
59617                     "count": 644
59618                 },
59619                 "Kroger": {
59620                     "count": 317
59621                 },
59622                 "Albertsons": {
59623                     "count": 242
59624                 },
59625                 "Trader Joe's": {
59626                     "count": 235
59627                 },
59628                 "Feneberg": {
59629                     "count": 58
59630                 },
59631                 "denn's Biomarkt": {
59632                     "count": 52
59633                 },
59634                 "dm": {
59635                     "count": 114
59636                 },
59637                 "Kvickly": {
59638                     "count": 55
59639                 },
59640                 "Makro": {
59641                     "count": 140
59642                 },
59643                 "Dico": {
59644                     "count": 53
59645                 },
59646                 "Nah & Frisch": {
59647                     "count": 73
59648                 },
59649                 "Champion": {
59650                     "count": 59
59651                 },
59652                 "ICA Supermarket": {
59653                     "count": 51
59654                 },
59655                 "Fakta": {
59656                     "count": 235
59657                 },
59658                 "Магнит": {
59659                     "count": 1760
59660                 },
59661                 "Caprabo": {
59662                     "count": 103
59663                 },
59664                 "Famiglia Cooperativa": {
59665                     "count": 64
59666                 },
59667                 "Народная 7Я семьЯ": {
59668                     "count": 154
59669                 },
59670                 "Esselunga": {
59671                     "count": 85
59672                 },
59673                 "Maxima": {
59674                     "count": 102
59675                 },
59676                 "Petit Casino": {
59677                     "count": 111
59678                 },
59679                 "Wasgau": {
59680                     "count": 60
59681                 },
59682                 "Pingo Doce": {
59683                     "count": 253
59684                 },
59685                 "Match": {
59686                     "count": 140
59687                 },
59688                 "Profi": {
59689                     "count": 60
59690                 },
59691                 "Lider": {
59692                     "count": 65
59693                 },
59694                 "Unimarc": {
59695                     "count": 177
59696                 },
59697                 "The Co-operative Food": {
59698                     "count": 190
59699                 },
59700                 "Santa Isabel": {
59701                     "count": 128
59702                 },
59703                 "Седьмой континент": {
59704                     "count": 79
59705                 },
59706                 "HIT": {
59707                     "count": 59
59708                 },
59709                 "Rimi": {
59710                     "count": 106
59711                 },
59712                 "Conad": {
59713                     "count": 304
59714                 },
59715                 "Фуршет": {
59716                     "count": 76
59717                 },
59718                 "Willys": {
59719                     "count": 56
59720                 },
59721                 "Farmfoods": {
59722                     "count": 64
59723                 },
59724                 "U Express": {
59725                     "count": 51
59726                 },
59727                 "Фора": {
59728                     "count": 52
59729                 },
59730                 "Dunnes Stores": {
59731                     "count": 73
59732                 },
59733                 "Сільпо": {
59734                     "count": 125
59735                 },
59736                 "マルエツ": {
59737                     "count": 59
59738                 },
59739                 "Piggly Wiggly": {
59740                     "count": 57
59741                 },
59742                 "Crai": {
59743                     "count": 54
59744                 },
59745                 "El Árbol": {
59746                     "count": 73
59747                 },
59748                 "Centre Commercial E. Leclerc": {
59749                     "count": 549
59750                 },
59751                 "Foodland": {
59752                     "count": 100
59753                 },
59754                 "Super Brugsen": {
59755                     "count": 67
59756                 },
59757                 "Дикси": {
59758                     "count": 683
59759                 },
59760                 "Пятёрочка": {
59761                     "count": 1344
59762                 },
59763                 "Publix": {
59764                     "count": 339
59765                 },
59766                 "Føtex": {
59767                     "count": 66
59768                 },
59769                 "coop": {
59770                     "count": 73
59771                 },
59772                 "Fressnapf": {
59773                     "count": 69
59774                 },
59775                 "Coop Konsum": {
59776                     "count": 79
59777                 },
59778                 "Carrefour Contact": {
59779                     "count": 83
59780                 },
59781                 "No Frills": {
59782                     "count": 105
59783                 },
59784                 "Plodine": {
59785                     "count": 52
59786                 },
59787                 "ADEG": {
59788                     "count": 68
59789                 },
59790                 "Minipreço": {
59791                     "count": 111
59792                 },
59793                 "Biedronka": {
59794                     "count": 1335
59795                 },
59796                 "Eurospin": {
59797                     "count": 155
59798                 },
59799                 "Семья": {
59800                     "count": 62
59801                 },
59802                 "Gadis": {
59803                     "count": 53
59804                 },
59805                 "Евроопт": {
59806                     "count": 68
59807                 },
59808                 "Centra": {
59809                     "count": 51
59810                 },
59811                 "Квартал": {
59812                     "count": 82
59813                 },
59814                 "New World": {
59815                     "count": 69
59816                 },
59817                 "Countdown": {
59818                     "count": 95
59819                 },
59820                 "Reliance Fresh": {
59821                     "count": 61
59822                 },
59823                 "Stokrotka": {
59824                     "count": 98
59825                 },
59826                 "Coop Jednota": {
59827                     "count": 74
59828                 },
59829                 "Fred Meyer": {
59830                     "count": 64
59831                 },
59832                 "Irma": {
59833                     "count": 58
59834                 },
59835                 "Continente": {
59836                     "count": 75
59837                 },
59838                 "Price Chopper": {
59839                     "count": 99
59840                 },
59841                 "Game": {
59842                     "count": 52
59843                 },
59844                 "Soriana": {
59845                     "count": 93
59846                 },
59847                 "Alimerka": {
59848                     "count": 64
59849                 },
59850                 "Piotr i Paweł": {
59851                     "count": 53
59852                 },
59853                 "Перекресток": {
59854                     "count": 312
59855                 },
59856                 "Maxima X": {
59857                     "count": 117
59858                 },
59859                 "Карусель": {
59860                     "count": 55
59861                 },
59862                 "ALDI Nord": {
59863                     "count": 51
59864                 },
59865                 "Condis": {
59866                     "count": 67
59867                 },
59868                 "Sam's Club": {
59869                     "count": 138
59870                 },
59871                 "Копейка": {
59872                     "count": 87
59873                 },
59874                 "Géant Casino": {
59875                     "count": 54
59876                 },
59877                 "ASDA": {
59878                     "count": 180
59879                 },
59880                 "Intermarche": {
59881                     "count": 115
59882                 },
59883                 "Stop & Shop": {
59884                     "count": 66
59885                 },
59886                 "Food Lion": {
59887                     "count": 216
59888                 },
59889                 "Harris Teeter": {
59890                     "count": 92
59891                 },
59892                 "Foodworks": {
59893                     "count": 62
59894                 },
59895                 "Polo Market": {
59896                     "count": 86
59897                 },
59898                 "Лента": {
59899                     "count": 51
59900                 },
59901                 "西友 (SEIYU)": {
59902                     "count": 58
59903                 },
59904                 "H-E-B": {
59905                     "count": 293
59906                 },
59907                 "Атак": {
59908                     "count": 53
59909                 },
59910                 "Полушка": {
59911                     "count": 139
59912                 },
59913                 "Extra": {
59914                     "count": 82
59915                 },
59916                 "Lewiatan": {
59917                     "count": 94
59918                 },
59919                 "Sigma": {
59920                     "count": 51
59921                 },
59922                 "АТБ": {
59923                     "count": 322
59924                 },
59925                 "Społem": {
59926                     "count": 55
59927                 },
59928                 "Bodega Aurrera": {
59929                     "count": 82
59930                 },
59931                 "Tesco Lotus": {
59932                     "count": 77
59933                 },
59934                 "Мария-Ра": {
59935                     "count": 108
59936                 },
59937                 "Магнолия": {
59938                     "count": 72
59939                 },
59940                 "Магазин": {
59941                     "count": 120
59942                 },
59943                 "Монетка": {
59944                     "count": 174
59945                 },
59946                 "Hy-Vee": {
59947                     "count": 75
59948                 },
59949                 "Walmart Supercenter": {
59950                     "count": 133
59951                 },
59952                 "Hannaford": {
59953                     "count": 57
59954                 },
59955                 "Wegmans": {
59956                     "count": 83
59957                 },
59958                 "業務スーパー": {
59959                     "count": 61
59960                 },
59961                 "Norfa XL": {
59962                     "count": 55
59963                 },
59964                 "ヨークマート (YorkMart)": {
59965                     "count": 64
59966                 },
59967                 "Leclerc Drive": {
59968                     "count": 76
59969                 }
59970             },
59971             "electronics": {
59972                 "Media Markt": {
59973                     "count": 285
59974                 },
59975                 "Maplin": {
59976                     "count": 65
59977                 },
59978                 "Best Buy": {
59979                     "count": 345
59980                 },
59981                 "Future Shop": {
59982                     "count": 73
59983                 },
59984                 "Saturn": {
59985                     "count": 134
59986                 },
59987                 "Currys": {
59988                     "count": 80
59989                 },
59990                 "Radio Shack": {
59991                     "count": 269
59992                 },
59993                 "Euronics": {
59994                     "count": 115
59995                 },
59996                 "Expert": {
59997                     "count": 123
59998                 },
59999                 "Эльдорадо": {
60000                     "count": 184
60001                 },
60002                 "Darty": {
60003                     "count": 74
60004                 },
60005                 "М.Видео": {
60006                     "count": 89
60007                 },
60008                 "ヤマダ電機": {
60009                     "count": 51
60010                 }
60011             },
60012             "convenience": {
60013                 "Shell": {
60014                     "count": 255
60015                 },
60016                 "Spar": {
60017                     "count": 1119
60018                 },
60019                 "McColl's": {
60020                     "count": 100
60021                 },
60022                 "Tesco Express": {
60023                     "count": 426
60024                 },
60025                 "Sainsbury's Local": {
60026                     "count": 104
60027                 },
60028                 "Aral": {
60029                     "count": 56
60030                 },
60031                 "One Stop": {
60032                     "count": 146
60033                 },
60034                 "The Co-operative Food": {
60035                     "count": 115
60036                 },
60037                 "Londis": {
60038                     "count": 352
60039                 },
60040                 "7-Eleven": {
60041                     "count": 4440
60042                 },
60043                 "CBA": {
60044                     "count": 135
60045                 },
60046                 "Coop": {
60047                     "count": 678
60048                 },
60049                 "Sale": {
60050                     "count": 80
60051                 },
60052                 "Statoil": {
60053                     "count": 69
60054                 },
60055                 "Sheetz": {
60056                     "count": 54
60057                 },
60058                 "Konzum": {
60059                     "count": 173
60060                 },
60061                 "Siwa": {
60062                     "count": 216
60063                 },
60064                 "Mercator": {
60065                     "count": 57
60066                 },
60067                 "Esso": {
60068                     "count": 67
60069                 },
60070                 "COOP Jednota": {
60071                     "count": 181
60072                 },
60073                 "Mac's": {
60074                     "count": 152
60075                 },
60076                 "Alepa": {
60077                     "count": 62
60078                 },
60079                 "Hasty Market": {
60080                     "count": 54
60081                 },
60082                 "K-Market": {
60083                     "count": 54
60084                 },
60085                 "Costcutter": {
60086                     "count": 292
60087                 },
60088                 "Valintatalo": {
60089                     "count": 62
60090                 },
60091                 "Casino": {
60092                     "count": 90
60093                 },
60094                 "Franprix": {
60095                     "count": 61
60096                 },
60097                 "Circle K": {
60098                     "count": 289
60099                 },
60100                 "セブンイレブン": {
60101                     "count": 3011,
60102                     "tags": {
60103                         "name:en": "7-Eleven"
60104                     }
60105                 },
60106                 "ローソン": {
60107                     "count": 1596,
60108                     "tags": {
60109                         "name:en": "LAWSON"
60110                     }
60111                 },
60112                 "BP": {
60113                     "count": 163
60114                 },
60115                 "Tesco": {
60116                     "count": 55
60117                 },
60118                 "Petit Casino": {
60119                     "count": 233
60120                 },
60121                 "Volg": {
60122                     "count": 116
60123                 },
60124                 "Mace": {
60125                     "count": 115
60126                 },
60127                 "Mini Market": {
60128                     "count": 272
60129                 },
60130                 "Nisa Local": {
60131                     "count": 77
60132                 },
60133                 "Dorfladen": {
60134                     "count": 75
60135                 },
60136                 "Продукты": {
60137                     "count": 4285
60138                 },
60139                 "Mini Stop": {
60140                     "count": 228
60141                 },
60142                 "LAWSON": {
60143                     "count": 419
60144                 },
60145                 "デイリーヤマザキ": {
60146                     "count": 141
60147                 },
60148                 "Biedronka": {
60149                     "count": 83
60150                 },
60151                 "Надежда": {
60152                     "count": 56
60153                 },
60154                 "Mobil": {
60155                     "count": 66
60156                 },
60157                 "Nisa": {
60158                     "count": 51
60159                 },
60160                 "Premier": {
60161                     "count": 129
60162                 },
60163                 "ABC": {
60164                     "count": 152
60165                 },
60166                 "ミニストップ": {
60167                     "count": 316,
60168                     "tags": {
60169                         "name:en": "MINISTOP"
60170                     }
60171                 },
60172                 "サンクス": {
60173                     "count": 560,
60174                     "tags": {
60175                         "name:en": "sunkus"
60176                     }
60177                 },
60178                 "スリーエフ": {
60179                     "count": 88
60180                 },
60181                 "8 à Huit": {
60182                     "count": 61
60183                 },
60184                 "Tchibo": {
60185                     "count": 56
60186                 },
60187                 "Żabka": {
60188                     "count": 546
60189                 },
60190                 "Almacen": {
60191                     "count": 229
60192                 },
60193                 "Vival": {
60194                     "count": 194
60195                 },
60196                 "FamilyMart": {
60197                     "count": 529
60198                 },
60199                 "ファミリーマート": {
60200                     "count": 1608,
60201                     "tags": {
60202                         "name:en": "FamilyMart"
60203                     }
60204                 },
60205                 "Carrefour City": {
60206                     "count": 57
60207                 },
60208                 "Sunkus": {
60209                     "count": 62
60210                 },
60211                 "Casey's General Store": {
60212                     "count": 95
60213                 },
60214                 "セブンイレブン(Seven-Eleven)": {
60215                     "count": 65
60216                 },
60217                 "Jednota": {
60218                     "count": 58
60219                 },
60220                 "Магазин": {
60221                     "count": 915
60222                 },
60223                 "Гастроном": {
60224                     "count": 152
60225                 },
60226                 "Centra": {
60227                     "count": 111
60228                 },
60229                 "Магнит": {
60230                     "count": 701
60231                 },
60232                 "サークルK": {
60233                     "count": 538,
60234                     "tags": {
60235                         "name:en": "Circle K"
60236                     }
60237                 },
60238                 "Wawa": {
60239                     "count": 135
60240                 },
60241                 "Proxi": {
60242                     "count": 123
60243                 },
60244                 "Универсам": {
60245                     "count": 78
60246                 },
60247                 "Перекресток": {
60248                     "count": 51
60249                 },
60250                 "Groszek": {
60251                     "count": 65
60252                 },
60253                 "Select": {
60254                     "count": 62
60255                 },
60256                 "Večerka": {
60257                     "count": 51
60258                 },
60259                 "Potraviny": {
60260                     "count": 249
60261                 },
60262                 "Смак": {
60263                     "count": 78
60264                 },
60265                 "Эконом": {
60266                     "count": 55
60267                 },
60268                 "Березка": {
60269                     "count": 77
60270                 },
60271                 "Społem": {
60272                     "count": 93
60273                 },
60274                 "Carrefour Express": {
60275                     "count": 84
60276                 },
60277                 "Cumberland Farms": {
60278                     "count": 63
60279                 },
60280                 "Chevron": {
60281                     "count": 59
60282                 },
60283                 "Coop Jednota": {
60284                     "count": 66
60285                 },
60286                 "Tesco Lotus Express": {
60287                     "count": 67
60288                 },
60289                 "Kiosk": {
60290                     "count": 55
60291                 },
60292                 "Sklep spożywczy": {
60293                     "count": 130
60294                 },
60295                 "24 часа": {
60296                     "count": 58
60297                 },
60298                 "Минимаркет": {
60299                     "count": 102
60300                 },
60301                 "Oxxo": {
60302                     "count": 669
60303                 },
60304                 "Пятёрочка": {
60305                     "count": 398
60306                 },
60307                 "abc": {
60308                     "count": 74
60309                 },
60310                 "7/11": {
60311                     "count": 51
60312                 },
60313                 "Stewart's": {
60314                     "count": 255
60315                 },
60316                 "Продукти": {
60317                     "count": 171
60318                 },
60319                 "ローソンストア100 (LAWSON STORE 100)": {
60320                     "count": 85
60321                 },
60322                 "Дикси": {
60323                     "count": 119
60324                 },
60325                 "Радуга": {
60326                     "count": 86
60327                 },
60328                 "ローソンストア100": {
60329                     "count": 76
60330                 },
60331                 "เซเว่นอีเลฟเว่น": {
60332                     "count": 185
60333                 },
60334                 "Delikatesy Centrum": {
60335                     "count": 53
60336                 },
60337                 "Citgo": {
60338                     "count": 62
60339                 },
60340                 "Фортуна": {
60341                     "count": 51
60342                 },
60343                 "Kum & Go": {
60344                     "count": 59
60345                 },
60346                 "Мария-Ра": {
60347                     "count": 76
60348                 },
60349                 "Picard": {
60350                     "count": 57
60351                 },
60352                 "Four Square": {
60353                     "count": 52
60354                 },
60355                 "Визит": {
60356                     "count": 57
60357                 },
60358                 "Авоська": {
60359                     "count": 55
60360                 },
60361                 "Dollar General": {
60362                     "count": 127
60363                 },
60364                 "Studenac": {
60365                     "count": 76
60366                 },
60367                 "Central Convenience Store": {
60368                     "count": 55
60369                 },
60370                 "Монетка": {
60371                     "count": 62
60372                 },
60373                 "продукты": {
60374                     "count": 114
60375                 },
60376                 "Теремок": {
60377                     "count": 56
60378                 },
60379                 "Kwik Trip": {
60380                     "count": 69
60381                 },
60382                 "Кулинария": {
60383                     "count": 55
60384                 },
60385                 "全家": {
60386                     "count": 90
60387                 },
60388                 "Мечта": {
60389                     "count": 54
60390                 },
60391                 "Epicerie": {
60392                     "count": 102
60393                 },
60394                 "Кировский": {
60395                     "count": 67
60396                 },
60397                 "Food Mart": {
60398                     "count": 117
60399                 },
60400                 "Delikatesy": {
60401                     "count": 81
60402                 },
60403                 "ポプラ": {
60404                     "count": 54
60405                 },
60406                 "Lewiatan": {
60407                     "count": 135
60408                 },
60409                 "Продуктовый магазин": {
60410                     "count": 149
60411                 },
60412                 "Продуктовый": {
60413                     "count": 84
60414                 },
60415                 "セイコーマート (Seicomart)": {
60416                     "count": 72
60417                 },
60418                 "Виктория": {
60419                     "count": 70
60420                 },
60421                 "Весна": {
60422                     "count": 57
60423                 },
60424                 "Mini Market Non-Stop": {
60425                     "count": 60
60426                 },
60427                 "QuikTrip": {
60428                     "count": 75
60429                 },
60430                 "Копеечка": {
60431                     "count": 51
60432                 },
60433                 "Royal Farms": {
60434                     "count": 51
60435                 },
60436                 "Alfamart": {
60437                     "count": 103
60438                 },
60439                 "Indomaret": {
60440                     "count": 141
60441                 },
60442                 "магазин": {
60443                     "count": 171
60444                 },
60445                 "全家便利商店": {
60446                     "count": 156
60447                 },
60448                 "Boutique": {
60449                     "count": 59
60450                 },
60451                 "მარკეტი (Market)": {
60452                     "count": 144
60453                 },
60454                 "Stores": {
60455                     "count": 61
60456                 }
60457             },
60458             "chemist": {
60459                 "dm": {
60460                     "count": 939
60461                 },
60462                 "Müller": {
60463                     "count": 212
60464                 },
60465                 "Schlecker": {
60466                     "count": 187
60467                 },
60468                 "Etos": {
60469                     "count": 467
60470                 },
60471                 "Bipa": {
60472                     "count": 289
60473                 },
60474                 "Rossmann": {
60475                     "count": 1669
60476                 },
60477                 "DM Drogeriemarkt": {
60478                     "count": 55
60479                 },
60480                 "Ihr Platz": {
60481                     "count": 73
60482                 },
60483                 "Douglas": {
60484                     "count": 62
60485                 },
60486                 "Kruidvat": {
60487                     "count": 123
60488                 }
60489             },
60490             "car_repair": {
60491                 "Peugeot": {
60492                     "count": 83
60493                 },
60494                 "Kwik Fit": {
60495                     "count": 128
60496                 },
60497                 "ATU": {
60498                     "count": 261
60499                 },
60500                 "Midas": {
60501                     "count": 202
60502                 },
60503                 "Feu Vert": {
60504                     "count": 113
60505                 },
60506                 "Norauto": {
60507                     "count": 152
60508                 },
60509                 "Speedy": {
60510                     "count": 115
60511                 },
60512                 "Автозапчасти": {
60513                     "count": 212
60514                 },
60515                 "Renault": {
60516                     "count": 171
60517                 },
60518                 "Pit Stop": {
60519                     "count": 58
60520                 },
60521                 "Jiffy Lube": {
60522                     "count": 198
60523                 },
60524                 "Шиномонтаж": {
60525                     "count": 1157
60526                 },
60527                 "СТО": {
60528                     "count": 395
60529                 },
60530                 "O'Reilly Auto Parts": {
60531                     "count": 81
60532                 },
60533                 "Carglass": {
60534                     "count": 112
60535                 },
60536                 "шиномонтаж": {
60537                     "count": 62
60538                 },
60539                 "Citroen": {
60540                     "count": 51
60541                 },
60542                 "Euromaster": {
60543                     "count": 87
60544                 },
60545                 "Firestone": {
60546                     "count": 88
60547                 },
60548                 "Автосервис": {
60549                     "count": 361
60550                 },
60551                 "Advance Auto Parts": {
60552                     "count": 52
60553                 },
60554                 "Roady": {
60555                     "count": 56
60556                 }
60557             },
60558             "furniture": {
60559                 "IKEA": {
60560                     "count": 169
60561                 },
60562                 "Jysk": {
60563                     "count": 109
60564                 },
60565                 "Roller": {
60566                     "count": 78
60567                 },
60568                 "Dänisches Bettenlager": {
60569                     "count": 309
60570                 },
60571                 "Conforama": {
60572                     "count": 99
60573                 },
60574                 "Matratzen Concord": {
60575                     "count": 52
60576                 },
60577                 "Мебель": {
60578                     "count": 210
60579                 },
60580                 "But": {
60581                     "count": 63
60582                 }
60583             },
60584             "doityourself": {
60585                 "Hornbach": {
60586                     "count": 123
60587                 },
60588                 "B&Q": {
60589                     "count": 225
60590                 },
60591                 "Hubo": {
60592                     "count": 77
60593                 },
60594                 "Mr Bricolage": {
60595                     "count": 88
60596                 },
60597                 "Gamma": {
60598                     "count": 111
60599                 },
60600                 "OBI": {
60601                     "count": 422
60602                 },
60603                 "Lowes": {
60604                     "count": 1152
60605                 },
60606                 "Wickes": {
60607                     "count": 123
60608                 },
60609                 "Hagebau": {
60610                     "count": 59
60611                 },
60612                 "Max Bahr": {
60613                     "count": 79
60614                 },
60615                 "Castorama": {
60616                     "count": 153
60617                 },
60618                 "Rona": {
60619                     "count": 61
60620                 },
60621                 "Home Depot": {
60622                     "count": 865
60623                 },
60624                 "Toom Baumarkt": {
60625                     "count": 71
60626                 },
60627                 "Homebase": {
60628                     "count": 225
60629                 },
60630                 "Baumax": {
60631                     "count": 95
60632                 },
60633                 "Lagerhaus": {
60634                     "count": 79
60635                 },
60636                 "Bauhaus": {
60637                     "count": 186
60638                 },
60639                 "Canadian Tire": {
60640                     "count": 97
60641                 },
60642                 "Leroy Merlin": {
60643                     "count": 209
60644                 },
60645                 "Hellweg": {
60646                     "count": 58
60647                 },
60648                 "Brico": {
60649                     "count": 98
60650                 },
60651                 "Bricomarché": {
60652                     "count": 235
60653                 },
60654                 "Toom": {
60655                     "count": 67
60656                 },
60657                 "Hagebaumarkt": {
60658                     "count": 107
60659                 },
60660                 "Praktiker": {
60661                     "count": 122
60662                 },
60663                 "Menards": {
60664                     "count": 70
60665                 },
60666                 "Weldom": {
60667                     "count": 73
60668                 },
60669                 "Bunnings Warehouse": {
60670                     "count": 91
60671                 },
60672                 "Ace Hardware": {
60673                     "count": 147
60674                 },
60675                 "Home Hardware": {
60676                     "count": 72
60677                 },
60678                 "Хозтовары": {
60679                     "count": 86
60680                 },
60681                 "Стройматериалы": {
60682                     "count": 197
60683                 },
60684                 "Bricorama": {
60685                     "count": 60
60686                 },
60687                 "Point P": {
60688                     "count": 59
60689                 }
60690             },
60691             "stationery": {
60692                 "Staples": {
60693                     "count": 299
60694                 },
60695                 "McPaper": {
60696                     "count": 83
60697                 },
60698                 "Office Depot": {
60699                     "count": 98
60700                 },
60701                 "Канцтовары": {
60702                     "count": 63
60703                 }
60704             },
60705             "car": {
60706                 "Skoda": {
60707                     "count": 97
60708                 },
60709                 "BMW": {
60710                     "count": 149
60711                 },
60712                 "Citroen": {
60713                     "count": 277
60714                 },
60715                 "Renault": {
60716                     "count": 382
60717                 },
60718                 "Mercedes-Benz": {
60719                     "count": 235
60720                 },
60721                 "Volvo": {
60722                     "count": 96
60723                 },
60724                 "Ford": {
60725                     "count": 239
60726                 },
60727                 "Volkswagen": {
60728                     "count": 217
60729                 },
60730                 "Mazda": {
60731                     "count": 105
60732                 },
60733                 "Mitsubishi": {
60734                     "count": 73
60735                 },
60736                 "Fiat": {
60737                     "count": 93
60738                 },
60739                 "Автозапчасти": {
60740                     "count": 277
60741                 },
60742                 "Opel": {
60743                     "count": 165
60744                 },
60745                 "Audi": {
60746                     "count": 121
60747                 },
60748                 "Toyota": {
60749                     "count": 271
60750                 },
60751                 "Nissan": {
60752                     "count": 189
60753                 },
60754                 "Suzuki": {
60755                     "count": 75
60756                 },
60757                 "Honda": {
60758                     "count": 157
60759                 },
60760                 "Peugeot": {
60761                     "count": 308
60762                 },
60763                 "Шиномонтаж": {
60764                     "count": 259
60765                 },
60766                 "Hyundai": {
60767                     "count": 166
60768                 },
60769                 "Subaru": {
60770                     "count": 58
60771                 },
60772                 "Chevrolet": {
60773                     "count": 86
60774                 },
60775                 "Автомагазин": {
60776                     "count": 72
60777                 }
60778             },
60779             "clothes": {
60780                 "Matalan": {
60781                     "count": 90
60782                 },
60783                 "KiK": {
60784                     "count": 1219
60785                 },
60786                 "H&M": {
60787                     "count": 658
60788                 },
60789                 "Urban Outfitters": {
60790                     "count": 63
60791                 },
60792                 "Vögele": {
60793                     "count": 132
60794                 },
60795                 "Zeeman": {
60796                     "count": 121
60797                 },
60798                 "Takko": {
60799                     "count": 515
60800                 },
60801                 "Adler": {
60802                     "count": 55
60803                 },
60804                 "C&A": {
60805                     "count": 506
60806                 },
60807                 "Zara": {
60808                     "count": 217
60809                 },
60810                 "Vero Moda": {
60811                     "count": 95
60812                 },
60813                 "NKD": {
60814                     "count": 486
60815                 },
60816                 "Ernsting's family": {
60817                     "count": 312
60818                 },
60819                 "Winners": {
60820                     "count": 65
60821                 },
60822                 "River Island": {
60823                     "count": 59
60824                 },
60825                 "Next": {
60826                     "count": 176
60827                 },
60828                 "Gap": {
60829                     "count": 81
60830                 },
60831                 "Adidas": {
60832                     "count": 92
60833                 },
60834                 "Woolworths": {
60835                     "count": 117
60836                 },
60837                 "Mr Price": {
60838                     "count": 88
60839                 },
60840                 "Jet": {
60841                     "count": 61
60842                 },
60843                 "Pep": {
60844                     "count": 134
60845                 },
60846                 "Edgars": {
60847                     "count": 110
60848                 },
60849                 "Ackermans": {
60850                     "count": 91
60851                 },
60852                 "Truworths": {
60853                     "count": 65
60854                 },
60855                 "Ross": {
60856                     "count": 93
60857                 },
60858                 "Burton": {
60859                     "count": 51
60860                 },
60861                 "Dorothy Perkins": {
60862                     "count": 53
60863                 },
60864                 "Deichmann": {
60865                     "count": 61
60866                 },
60867                 "Lindex": {
60868                     "count": 73
60869                 },
60870                 "s.Oliver": {
60871                     "count": 56
60872                 },
60873                 "Cecil": {
60874                     "count": 51
60875                 },
60876                 "Dress Barn": {
60877                     "count": 52
60878                 },
60879                 "Old Navy": {
60880                     "count": 174
60881                 },
60882                 "Jack & Jones": {
60883                     "count": 52
60884                 },
60885                 "Pimkie": {
60886                     "count": 73
60887                 },
60888                 "Esprit": {
60889                     "count": 231
60890                 },
60891                 "Primark": {
60892                     "count": 92
60893                 },
60894                 "Bonita": {
60895                     "count": 155
60896                 },
60897                 "Mexx": {
60898                     "count": 67
60899                 },
60900                 "Gerry Weber": {
60901                     "count": 71
60902                 },
60903                 "Tally Weijl": {
60904                     "count": 70
60905                 },
60906                 "Mango": {
60907                     "count": 133
60908                 },
60909                 "TK Maxx": {
60910                     "count": 84
60911                 },
60912                 "Benetton": {
60913                     "count": 101
60914                 },
60915                 "Ulla Popken": {
60916                     "count": 61
60917                 },
60918                 "AWG": {
60919                     "count": 66
60920                 },
60921                 "Tommy Hilfiger": {
60922                     "count": 75
60923                 },
60924                 "New Yorker": {
60925                     "count": 180
60926                 },
60927                 "Orsay": {
60928                     "count": 73
60929                 },
60930                 "Jeans Fritz": {
60931                     "count": 51
60932                 },
60933                 "Charles Vögele": {
60934                     "count": 69
60935                 },
60936                 "New Look": {
60937                     "count": 126
60938                 },
60939                 "Lacoste": {
60940                     "count": 78
60941                 },
60942                 "Etam": {
60943                     "count": 53
60944                 },
60945                 "Kiabi": {
60946                     "count": 148
60947                 },
60948                 "Jack Wolfskin": {
60949                     "count": 60
60950                 },
60951                 "American Apparel": {
60952                     "count": 57
60953                 },
60954                 "Men's Wearhouse": {
60955                     "count": 54
60956                 },
60957                 "Intimissimi": {
60958                     "count": 52
60959                 },
60960                 "United Colors of Benetton": {
60961                     "count": 96
60962                 },
60963                 "Jules": {
60964                     "count": 63
60965                 },
60966                 "Second Hand": {
60967                     "count": 53
60968                 },
60969                 "AOKI": {
60970                     "count": 57
60971                 },
60972                 "Calzedonia": {
60973                     "count": 68
60974                 },
60975                 "洋服の青山": {
60976                     "count": 100
60977                 },
60978                 "Levi's": {
60979                     "count": 63
60980                 },
60981                 "Celio": {
60982                     "count": 74
60983                 },
60984                 "TJ Maxx": {
60985                     "count": 57
60986                 },
60987                 "Promod": {
60988                     "count": 82
60989                 },
60990                 "Street One": {
60991                     "count": 72
60992                 },
60993                 "ユニクロ": {
60994                     "count": 59
60995                 },
60996                 "Banana Republic": {
60997                     "count": 57
60998                 },
60999                 "Одежда": {
61000                     "count": 75
61001                 },
61002                 "Marshalls": {
61003                     "count": 56
61004                 },
61005                 "La Halle": {
61006                     "count": 62
61007                 },
61008                 "Peacocks": {
61009                     "count": 89
61010                 },
61011                 "しまむら": {
61012                     "count": 60
61013                 }
61014             },
61015             "books": {
61016                 "Bruna": {
61017                     "count": 58
61018                 },
61019                 "Waterstones": {
61020                     "count": 90
61021                 },
61022                 "Libro": {
61023                     "count": 57
61024                 },
61025                 "Barnes & Noble": {
61026                     "count": 267
61027                 },
61028                 "Weltbild": {
61029                     "count": 74
61030                 },
61031                 "Thalia": {
61032                     "count": 121
61033                 },
61034                 "Книги": {
61035                     "count": 112
61036                 }
61037             },
61038             "department_store": {
61039                 "Debenhams": {
61040                     "count": 67
61041                 },
61042                 "Canadian Tire": {
61043                     "count": 75
61044                 },
61045                 "Karstadt": {
61046                     "count": 64
61047                 },
61048                 "Walmart": {
61049                     "count": 517
61050                 },
61051                 "Kmart": {
61052                     "count": 143
61053                 },
61054                 "Target": {
61055                     "count": 574
61056                 },
61057                 "Galeria Kaufhof": {
61058                     "count": 61
61059                 },
61060                 "Marks & Spencer": {
61061                     "count": 66
61062                 },
61063                 "Big W": {
61064                     "count": 57
61065                 },
61066                 "Woolworth": {
61067                     "count": 78
61068                 },
61069                 "Универмаг": {
61070                     "count": 72
61071                 },
61072                 "Sears": {
61073                     "count": 235
61074                 },
61075                 "Walmart Supercenter": {
61076                     "count": 101
61077                 },
61078                 "Kohl's": {
61079                     "count": 153
61080                 },
61081                 "Macy's": {
61082                     "count": 147
61083                 },
61084                 "Sam's Club": {
61085                     "count": 54
61086                 },
61087                 "JCPenney": {
61088                     "count": 66
61089                 }
61090             },
61091             "alcohol": {
61092                 "Alko": {
61093                     "count": 145
61094                 },
61095                 "The Beer Store": {
61096                     "count": 150
61097                 },
61098                 "Systembolaget": {
61099                     "count": 210
61100                 },
61101                 "LCBO": {
61102                     "count": 239
61103                 },
61104                 "Ароматный мир": {
61105                     "count": 62
61106                 },
61107                 "Bargain Booze": {
61108                     "count": 62
61109                 },
61110                 "Nicolas": {
61111                     "count": 119
61112                 },
61113                 "BWS": {
61114                     "count": 70
61115                 },
61116                 "Botilleria": {
61117                     "count": 77
61118                 },
61119                 "SAQ": {
61120                     "count": 72
61121                 },
61122                 "Gall & Gall": {
61123                     "count": 512
61124                 },
61125                 "Живое пиво": {
61126                     "count": 70
61127                 }
61128             },
61129             "bakery": {
61130                 "Kamps": {
61131                     "count": 252
61132                 },
61133                 "Banette": {
61134                     "count": 52
61135                 },
61136                 "Bäckerei Schmidt": {
61137                     "count": 57
61138                 },
61139                 "Anker": {
61140                     "count": 73
61141                 },
61142                 "Hofpfisterei": {
61143                     "count": 111
61144                 },
61145                 "Greggs": {
61146                     "count": 276
61147                 },
61148                 "Oebel": {
61149                     "count": 57
61150                 },
61151                 "Boulangerie": {
61152                     "count": 266
61153                 },
61154                 "Stadtbäckerei": {
61155                     "count": 57
61156                 },
61157                 "Steinecke": {
61158                     "count": 145
61159                 },
61160                 "Ihle": {
61161                     "count": 76
61162                 },
61163                 "Goldilocks": {
61164                     "count": 59
61165                 },
61166                 "Dat Backhus": {
61167                     "count": 67
61168                 },
61169                 "K&U": {
61170                     "count": 61
61171                 },
61172                 "Der Beck": {
61173                     "count": 96
61174                 },
61175                 "Thürmann": {
61176                     "count": 54
61177                 },
61178                 "Backwerk": {
61179                     "count": 95
61180                 },
61181                 "Schäfer's": {
61182                     "count": 51
61183                 },
61184                 "Panaderia": {
61185                     "count": 168
61186                 },
61187                 "Goeken backen": {
61188                     "count": 51
61189                 },
61190                 "Stadtbäckerei Junge": {
61191                     "count": 51
61192                 },
61193                 "Boulangerie Patisserie": {
61194                     "count": 119
61195                 },
61196                 "Paul": {
61197                     "count": 81
61198                 },
61199                 "Хлеб": {
61200                     "count": 89
61201                 },
61202                 "Пекарня": {
61203                     "count": 52
61204                 },
61205                 "Кулиничи": {
61206                     "count": 51
61207                 }
61208             },
61209             "sports": {
61210                 "Sports Direct": {
61211                     "count": 57
61212                 },
61213                 "Decathlon": {
61214                     "count": 309
61215                 },
61216                 "Intersport": {
61217                     "count": 283
61218                 },
61219                 "Sports Authority": {
61220                     "count": 75
61221                 },
61222                 "Спортмастер": {
61223                     "count": 87
61224                 },
61225                 "Sport 2000": {
61226                     "count": 90
61227                 },
61228                 "Dick's Sporting Goods": {
61229                     "count": 77
61230                 }
61231             },
61232             "variety_store": {
61233                 "Tedi": {
61234                     "count": 157
61235                 },
61236                 "Dollarama": {
61237                     "count": 103
61238                 },
61239                 "Family Dollar": {
61240                     "count": 61
61241                 },
61242                 "Dollar Tree": {
61243                     "count": 110
61244                 },
61245                 "Dollar General": {
61246                     "count": 80
61247                 }
61248             },
61249             "pet": {
61250                 "Fressnapf": {
61251                     "count": 318
61252                 },
61253                 "PetSmart": {
61254                     "count": 177
61255                 },
61256                 "Das Futterhaus": {
61257                     "count": 69
61258                 },
61259                 "Pets at Home": {
61260                     "count": 62
61261                 },
61262                 "Petco": {
61263                     "count": 101
61264                 },
61265                 "Зоомагазин": {
61266                     "count": 100
61267                 }
61268             },
61269             "shoes": {
61270                 "Deichmann": {
61271                     "count": 622
61272                 },
61273                 "Reno": {
61274                     "count": 183
61275                 },
61276                 "Ecco": {
61277                     "count": 55
61278                 },
61279                 "Clarks": {
61280                     "count": 109
61281                 },
61282                 "La Halle aux Chaussures": {
61283                     "count": 69
61284                 },
61285                 "Brantano": {
61286                     "count": 71
61287                 },
61288                 "Geox": {
61289                     "count": 51
61290                 },
61291                 "Salamander": {
61292                     "count": 51
61293                 },
61294                 "Обувь": {
61295                     "count": 100
61296                 },
61297                 "Payless Shoe Source": {
61298                     "count": 67
61299                 },
61300                 "Famous Footwear": {
61301                     "count": 59
61302                 },
61303                 "Quick Schuh": {
61304                     "count": 72
61305                 },
61306                 "Shoe Zone": {
61307                     "count": 55
61308                 },
61309                 "Foot Locker": {
61310                     "count": 82
61311                 },
61312                 "Bata": {
61313                     "count": 101
61314                 },
61315                 "ЦентрОбувь": {
61316                     "count": 51
61317                 }
61318             },
61319             "toys": {
61320                 "La Grande Récré": {
61321                     "count": 56
61322                 },
61323                 "Toys R Us": {
61324                     "count": 151,
61325                     "tags": {
61326                         "shop": "toys"
61327                     }
61328                 },
61329                 "Intertoys": {
61330                     "count": 57
61331                 },
61332                 "Детский мир": {
61333                     "count": 86
61334                 },
61335                 "Игрушки": {
61336                     "count": 58
61337                 }
61338             },
61339             "travel_agency": {
61340                 "Flight Centre": {
61341                     "count": 92
61342                 },
61343                 "Thomas Cook": {
61344                     "count": 119
61345                 }
61346             },
61347             "jewelry": {
61348                 "Bijou Brigitte": {
61349                     "count": 57
61350                 },
61351                 "Christ": {
61352                     "count": 57
61353                 },
61354                 "Swarovski": {
61355                     "count": 74
61356                 }
61357             },
61358             "optician": {
61359                 "Fielmann": {
61360                     "count": 232
61361                 },
61362                 "Apollo Optik": {
61363                     "count": 150
61364                 },
61365                 "Vision Express": {
61366                     "count": 58
61367                 },
61368                 "Оптика": {
61369                     "count": 182
61370                 },
61371                 "Optic 2000": {
61372                     "count": 98
61373                 },
61374                 "Alain Afflelou": {
61375                     "count": 73
61376                 },
61377                 "Specsavers": {
61378                     "count": 124
61379                 },
61380                 "Krys": {
61381                     "count": 77
61382                 },
61383                 "Atol": {
61384                     "count": 55
61385                 }
61386             },
61387             "video": {
61388                 "Blockbuster": {
61389                     "count": 184
61390                 },
61391                 "World of Video": {
61392                     "count": 64
61393                 }
61394             },
61395             "mobile_phone": {
61396                 "Билайн": {
61397                     "count": 128
61398                 },
61399                 "ソフトバンクショップ (SoftBank shop)": {
61400                     "count": 255
61401                 },
61402                 "Vodafone": {
61403                     "count": 355
61404                 },
61405                 "O2": {
61406                     "count": 208
61407                 },
61408                 "Carphone Warehouse": {
61409                     "count": 127
61410                 },
61411                 "Orange": {
61412                     "count": 246
61413                 },
61414                 "Verizon Wireless": {
61415                     "count": 125
61416                 },
61417                 "Sprint": {
61418                     "count": 109
61419                 },
61420                 "T-Mobile": {
61421                     "count": 175
61422                 },
61423                 "МТС": {
61424                     "count": 352
61425                 },
61426                 "Евросеть": {
61427                     "count": 506
61428                 },
61429                 "Bell": {
61430                     "count": 190
61431                 },
61432                 "The Phone House": {
61433                     "count": 83
61434                 },
61435                 "SFR": {
61436                     "count": 71
61437                 },
61438                 "Связной": {
61439                     "count": 439
61440                 },
61441                 "Мегафон": {
61442                     "count": 251
61443                 },
61444                 "AT&T": {
61445                     "count": 124
61446                 },
61447                 "ドコモショップ (docomo shop)": {
61448                     "count": 114
61449                 },
61450                 "au": {
61451                     "count": 65
61452                 },
61453                 "Movistar": {
61454                     "count": 77
61455                 },
61456                 "Bitė": {
61457                     "count": 72
61458                 }
61459             },
61460             "hifi": {},
61461             "computer": {
61462                 "PC World": {
61463                     "count": 55
61464                 },
61465                 "DNS": {
61466                     "count": 128
61467                 }
61468             },
61469             "hairdresser": {
61470                 "Klier": {
61471                     "count": 119
61472                 },
61473                 "Supercuts": {
61474                     "count": 106
61475                 },
61476                 "Hairkiller": {
61477                     "count": 51
61478                 },
61479                 "Great Clips": {
61480                     "count": 182
61481                 },
61482                 "Парикмахерская": {
61483                     "count": 510
61484                 },
61485                 "Стиль": {
61486                     "count": 51
61487                 },
61488                 "Franck Provost": {
61489                     "count": 70
61490                 },
61491                 "Салон красоты": {
61492                     "count": 70
61493                 }
61494             },
61495             "hardware": {
61496                 "1000 мелочей": {
61497                     "count": 61
61498                 },
61499                 "Хозтовары": {
61500                     "count": 151
61501                 },
61502                 "Стройматериалы": {
61503                     "count": 54
61504                 }
61505             },
61506             "motorcycle": {
61507                 "Yamaha": {
61508                     "count": 67
61509                 },
61510                 "Honda": {
61511                     "count": 69
61512                 }
61513             }
61514         }
61515     },
61516     "addressFormats": [
61517         {
61518             "format": [
61519                 [
61520                     "housenumber",
61521                     "street"
61522                 ],
61523                 [
61524                     "city",
61525                     "postcode"
61526                 ]
61527             ]
61528         },
61529         {
61530             "countryCodes": [
61531                 "gb"
61532             ],
61533             "format": [
61534                 [
61535                     "housename"
61536                 ],
61537                 [
61538                     "housenumber",
61539                     "street"
61540                 ],
61541                 [
61542                     "city",
61543                     "postcode"
61544                 ]
61545             ]
61546         },
61547         {
61548             "countryCodes": [
61549                 "ie"
61550             ],
61551             "format": [
61552                 [
61553                     "housename"
61554                 ],
61555                 [
61556                     "housenumber",
61557                     "street"
61558                 ],
61559                 [
61560                     "city"
61561                 ],
61562                 [
61563                     "postcode"
61564                 ]
61565             ]
61566         },
61567         {
61568             "countryCodes": [
61569                 "ad",
61570                 "at",
61571                 "ba",
61572                 "be",
61573                 "ch",
61574                 "cz",
61575                 "de",
61576                 "dk",
61577                 "es",
61578                 "fi",
61579                 "gr",
61580                 "hr",
61581                 "is",
61582                 "it",
61583                 "li",
61584                 "nl",
61585                 "no",
61586                 "pl",
61587                 "pt",
61588                 "se",
61589                 "si",
61590                 "sk",
61591                 "sm",
61592                 "va"
61593             ],
61594             "format": [
61595                 [
61596                     "street",
61597                     "housenumber"
61598                 ],
61599                 [
61600                     "postcode",
61601                     "city"
61602                 ]
61603             ]
61604         },
61605         {
61606             "countryCodes": [
61607                 "fr",
61608                 "lu",
61609                 "mo"
61610             ],
61611             "format": [
61612                 [
61613                     "housenumber",
61614                     "street"
61615                 ],
61616                 [
61617                     "postcode",
61618                     "city"
61619                 ]
61620             ]
61621         },
61622         {
61623             "countryCodes": [
61624                 "br"
61625             ],
61626             "format": [
61627                 [
61628                     "street"
61629                 ],
61630                 [
61631                     "housenumber",
61632                     "suburb"
61633                 ],
61634                 [
61635                     "city",
61636                     "postcode"
61637                 ]
61638             ]
61639         },
61640         {
61641             "countryCodes": [
61642                 "vn"
61643             ],
61644             "format": [
61645                 [
61646                     "housenumber",
61647                     "street"
61648                 ],
61649                 [
61650                     "subdistrict"
61651                 ],
61652                 [
61653                     "district"
61654                 ],
61655                 [
61656                     "city"
61657                 ],
61658                 [
61659                     "province",
61660                     "postcode"
61661                 ]
61662             ]
61663         },
61664         {
61665             "countryCodes": [
61666                 "us"
61667             ],
61668             "format": [
61669                 [
61670                     "housenumber",
61671                     "street"
61672                 ],
61673                 [
61674                     "city",
61675                     "state",
61676                     "postcode"
61677                 ]
61678             ]
61679         },
61680         {
61681             "countryCodes": [
61682                 "ca"
61683             ],
61684             "format": [
61685                 [
61686                     "housenumber",
61687                     "street"
61688                 ],
61689                 [
61690                     "city",
61691                     "province",
61692                     "postcode"
61693                 ]
61694             ]
61695         }
61696     ]
61697 };