diff --git a/public/assets/admin/css/vendor.css b/public/assets/admin/css/vendor.css
index 535bbe1f..9b3dc216 100644
--- a/public/assets/admin/css/vendor.css
+++ b/public/assets/admin/css/vendor.css
@@ -13430,7 +13430,7 @@ fieldset[disabled] .btn-neutral.active {
font-family: "Avenir-light", "AvenirLTStd-Light", sans-serif !important;
border-radius: 0;
background-color: transparent;
- border: 1px solid #E3E3E3;
+ border: 1px solid #AAAAAA;
color: #333333;
line-height: 1em;
font-size: 14px;
@@ -13758,7 +13758,7 @@ textarea.form-control {
padding: 10px 10px;
resize: none;
background-color: transparent;
- border: 1px solid #E3E3E3;
+ border: 1px solid #AAAAAA;
color: #333333;
line-height: 1em;
font-size: 14px;
diff --git a/public/assets/admin/css/vendor.min.css b/public/assets/admin/css/vendor.min.css
index b876a1cd..3c798c7c 100644
--- a/public/assets/admin/css/vendor.min.css
+++ b/public/assets/admin/css/vendor.min.css
@@ -1311,7 +1311,7 @@ fieldset[disabled] .btn-neutral.active {
font-family: "Avenir-light", "AvenirLTStd-Light", sans-serif !important;
border-radius: 0;
background-color: transparent;
- border: 1px solid #E3E3E3;
+ border: 1px solid #AAAAAA;
color: #333333;
line-height: 1em;
font-size: 14px;
@@ -1639,7 +1639,7 @@ textarea.form-control {
padding: 10px 10px;
resize: none;
background-color: transparent;
- border: 1px solid #E3E3E3;
+ border: 1px solid #AAAAAA;
color: #333333;
line-height: 1em;
font-size: 14px;
diff --git a/public/assets/admin/js/app.js b/public/assets/admin/js/app.js
index 24fc4437..c7272292 100644
--- a/public/assets/admin/js/app.js
+++ b/public/assets/admin/js/app.js
@@ -69,7 +69,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval("\n\n// This file is part of Leaflet.Geodesic.\n// Copyright (C) 2017 Henry Thasler\n// based on code by Chris Veness Copyright (C) 2014 https://github.com/chrisveness/geodesy\n//\n// Leaflet.Geodesic is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Leaflet.Geodesic is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Leaflet.Geodesic. If not, see .\n\n\n/** Extend Number object with method to convert numeric degrees to radians */\nif (typeof Number.prototype.toRadians === \"undefined\") {\n Number.prototype.toRadians = function() {\n return this * Math.PI / 180;\n };\n}\n\n/** Extend Number object with method to convert radians to numeric (signed) degrees */\nif (typeof Number.prototype.toDegrees === \"undefined\") {\n Number.prototype.toDegrees = function() {\n return this * 180 / Math.PI;\n };\n}\n\nvar INTERSECT_LNG = 179.999; // Lng used for intersection and wrap around on map edges\n\nL.Geodesic = L.Polyline.extend({\n options: {\n color: \"blue\",\n steps: 10,\n dash: 1,\n wrap: true\n },\n\n initialize: function(latlngs, options) {\n this.options = this._merge_options(this.options, options);\n this.options.dash = Math.max(1e-3, Math.min(1, parseFloat(this.options.dash) || 1));\n this.datum = {};\n this.datum.ellipsoid = {\n a: 6378137,\n b: 6356752.3142,\n f: 1 / 298.257223563\n }; // WGS-84\n this._latlngs = this._generate_Geodesic(latlngs);\n L.Polyline.prototype.initialize.call(this, this._latlngs, this.options);\n },\n\n setLatLngs: function(latlngs) {\n this._latlngs = this._generate_Geodesic(latlngs);\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\n },\n\n /**\n * Calculates some statistic values of current geodesic multipolyline\n * @returns (Object} Object with several properties (e.g. overall distance)\n */\n getStats: function() {\n let obj = {\n distance: 0,\n points: 0,\n polygons: this._latlngs.length\n }, poly, points;\n\n for (poly = 0; poly < this._latlngs.length; poly++) {\n obj.points += this._latlngs[poly].length;\n for (points = 0; points < (this._latlngs[poly].length - 1); points++) {\n obj.distance += this._vincenty_inverse(this._latlngs[poly][points],\n this._latlngs[poly][points + 1]).distance;\n }\n }\n return obj;\n },\n\n\n /**\n * Creates geodesic lines from geoJson. Replaces all current features of this instance.\n * Supports LineString, MultiLineString and Polygon\n * @param {Object} geojson - geosjon as object.\n */\n geoJson: function(geojson) {\n\n let normalized = L.GeoJSON.asFeature(geojson);\n let features = normalized.type === \"FeatureCollection\" ? normalized.features : [\n normalized\n ];\n this._latlngs = [];\n for (let feature of features) {\n let geometry = feature.type === \"Feature\" ? feature.geometry :\n feature,\n coords = geometry.coordinates;\n\n switch (geometry.type) {\n case \"LineString\":\n this._latlngs.push(this._generate_Geodesic([L.GeoJSON.coordsToLatLngs(\n coords, 0)]));\n break;\n case \"MultiLineString\":\n case \"Polygon\":\n this._latlngs.push(this._generate_Geodesic(L.GeoJSON.coordsToLatLngs(\n coords, 1)));\n break;\n case \"Point\":\n case \"MultiPoint\":\n console.log(\"Dude, points can't be drawn as geodesic lines...\");\n break;\n default:\n console.log(\"Drawing \" + geometry.type +\n \" as a geodesic is not supported. Skipping...\");\n }\n }\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\n },\n\n /**\n * Creates a great circle. Replaces all current lines.\n * @param {Object} center - geographic position\n * @param {number} radius - radius of the circle in metres\n */\n createCircle: function(center, radius) {\n let polylineIndex = 0;\n let prev = {\n lat: 0,\n lng: 0,\n brg: 0\n };\n let step;\n\n this._latlngs = [];\n this._latlngs[polylineIndex] = [];\n\n let direct = this._vincenty_direct(L.latLng(center), 0, radius, this.options\n .wrap);\n prev = L.latLng(direct.lat, direct.lng);\n this._latlngs[polylineIndex].push(prev);\n for (step = 1; step <= this.options.steps;) {\n direct = this._vincenty_direct(L.latLng(center), 360 / this.options\n .steps * step, radius, this.options.wrap);\n let gp = L.latLng(direct.lat, direct.lng);\n if (Math.abs(gp.lng - prev.lng) > 180) {\n let inverse = this._vincenty_inverse(prev, gp);\n let sec = this._intersection(prev, inverse.initialBearing, {\n lat: -89,\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\n }, 0);\n if (sec) {\n this._latlngs[polylineIndex].push(L.latLng(sec.lat, sec.lng));\n polylineIndex++;\n this._latlngs[polylineIndex] = [];\n prev = L.latLng(sec.lat, -sec.lng);\n this._latlngs[polylineIndex].push(prev);\n } else {\n polylineIndex++;\n this._latlngs[polylineIndex] = [];\n this._latlngs[polylineIndex].push(gp);\n prev = gp;\n step++;\n }\n } else {\n this._latlngs[polylineIndex].push(gp);\n prev = gp;\n step++;\n }\n }\n\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\n },\n\n /**\n * Creates a geodesic Polyline from given coordinates\n * Note: dashed lines are under work\n * @param {Object} latlngs - One or more polylines as an array. See Leaflet doc about Polyline\n * @returns (Object} An array of arrays of geographical points.\n */\n _generate_Geodesic: function(latlngs) {\n let _geo = [], _geocnt = 0;\n\n for (let poly = 0; poly < latlngs.length; poly++) {\n _geo[_geocnt] = [];\n let prev = L.latLng(latlngs[poly][0]);\n for (let points = 0; points < (latlngs[poly].length - 1); points++) {\n // use prev, so that wrapping behaves correctly\n let pointA = prev;\n let pointB = L.latLng(latlngs[poly][points + 1]);\n if (pointA.equals(pointB)) {\n continue;\n }\n let inverse = this._vincenty_inverse(pointA, pointB);\n _geo[_geocnt].push(prev);\n for (let s = 1; s <= this.options.steps;) {\n let distance = inverse.distance / this.options.steps;\n // dashed lines don't go the full distance between the points\n let dist_mult = s - 1 + this.options.dash;\n let direct = this._vincenty_direct(pointA, inverse.initialBearing, distance*dist_mult, this.options.wrap);\n let gp = L.latLng(direct.lat, direct.lng);\n if (Math.abs(gp.lng - prev.lng) > 180) {\n let sec = this._intersection(pointA, inverse.initialBearing, {\n lat: -89,\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\n }, 0);\n if (sec) {\n _geo[_geocnt].push(L.latLng(sec.lat, sec.lng));\n _geocnt++;\n _geo[_geocnt] = [];\n prev = L.latLng(sec.lat, -sec.lng);\n _geo[_geocnt].push(prev);\n } else {\n _geocnt++;\n _geo[_geocnt] = [];\n _geo[_geocnt].push(gp);\n prev = gp;\n s++;\n } \n } else {\n _geo[_geocnt].push(gp);\n // Dashed lines start a new line\n if (this.options.dash < 1){\n _geocnt++;\n // go full distance this time, to get starting point for next line\n let direct_full = this._vincenty_direct(pointA, inverse.initialBearing, distance*s, this.options.wrap);\n _geo[_geocnt] = [];\n prev = L.latLng(direct_full.lat, direct_full.lng);\n _geo[_geocnt].push(prev);\n }\n else prev = gp;\n s++;\n }\n }\n }\n _geocnt++;\n }\n return _geo;\n },\n\n /**\n * Vincenty direct calculation.\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\n *\n * @private\n * @param {number} initialBearing - Initial bearing in degrees from north.\n * @param {number} distance - Distance along bearing in metres.\n * @returns (Object} Object including point (destination point), finalBearing.\n */\n\n _vincenty_direct: function(p1, initialBearing, distance, wrap) {\n var φ1 = p1.lat.toRadians(),\n λ1 = p1.lng.toRadians();\n var α1 = initialBearing.toRadians();\n var s = distance;\n\n var a = this.datum.ellipsoid.a,\n b = this.datum.ellipsoid.b,\n f = this.datum.ellipsoid.f;\n\n var sinα1 = Math.sin(α1);\n var cosα1 = Math.cos(α1);\n\n var tanU1 = (1 - f) * Math.tan(φ1),\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\n sinU1 = tanU1 * cosU1;\n var σ1 = Math.atan2(tanU1, cosα1);\n var sinα = cosU1 * sinα1;\n var cosSqα = 1 - sinα * sinα;\n var uSq = cosSqα * (a * a - b * b) / (b * b);\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\n uSq)));\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\n\n var σ = s / (b * A),\n σʹ, iterations = 0;\n var sinσ, cosσ;\n var cos2σM;\n do {\n cos2σM = Math.cos(2 * σ1 + σ);\n sinσ = Math.sin(σ);\n cosσ = Math.cos(σ);\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\n cos2σM) -\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\n cos2σM)));\n σʹ = σ;\n σ = s / (b * A) + Δσ;\n } while (Math.abs(σ - σʹ) > 1e-12 && ++iterations);\n\n var x = sinU1 * sinσ - cosU1 * cosσ * cosα1;\n var φ2 = Math.atan2(sinU1 * cosσ + cosU1 * sinσ * cosα1, (1 - f) *\n Math.sqrt(sinα * sinα + x * x));\n var λ = Math.atan2(sinσ * sinα1, cosU1 * cosσ - sinU1 * sinσ * cosα1);\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\n var L = λ - (1 - C) * f * sinα *\n (σ + C * sinσ * (cos2σM + C * cosσ * (-1 + 2 * cos2σM * cos2σM)));\n\n var λ2;\n if (wrap) {\n λ2 = (λ1 + L + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180...+180\n } else {\n λ2 = (λ1 + L); // do not normalize\n }\n\n var revAz = Math.atan2(sinα, -x);\n\n return {\n lat: φ2.toDegrees(),\n lng: λ2.toDegrees(),\n finalBearing: revAz.toDegrees()\n };\n },\n\n /**\n * Vincenty inverse calculation.\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\n *\n * @private\n * @param {LatLng} p1 - Latitude/longitude of start point.\n * @param {LatLng} p2 - Latitude/longitude of destination point.\n * @returns {Object} Object including distance, initialBearing, finalBearing.\n * @throws {Error} If formula failed to converge.\n */\n _vincenty_inverse: function(p1, p2) {\n var φ1 = p1.lat.toRadians(),\n λ1 = p1.lng.toRadians();\n var φ2 = p2.lat.toRadians(),\n λ2 = p2.lng.toRadians();\n\n var a = this.datum.ellipsoid.a,\n b = this.datum.ellipsoid.b,\n f = this.datum.ellipsoid.f;\n\n var L = λ2 - λ1;\n var tanU1 = (1 - f) * Math.tan(φ1),\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\n sinU1 = tanU1 * cosU1;\n var tanU2 = (1 - f) * Math.tan(φ2),\n cosU2 = 1 / Math.sqrt((1 + tanU2 * tanU2)),\n sinU2 = tanU2 * cosU2;\n\n var λ = L,\n λʹ, iterations = 0;\n var cosSqα, sinσ, cos2σM, cosσ, σ, sinλ, cosλ;\n do {\n sinλ = Math.sin(λ);\n cosλ = Math.cos(λ);\n var sinSqσ = (cosU2 * sinλ) * (cosU2 * sinλ) + (cosU1 * sinU2 -\n sinU1 * cosU2 * cosλ) * (cosU1 * sinU2 - sinU1 * cosU2 * cosλ);\n sinσ = Math.sqrt(sinSqσ);\n if (sinσ == 0) return 0; // co-incident points\n cosσ = sinU1 * sinU2 + cosU1 * cosU2 * cosλ;\n σ = Math.atan2(sinσ, cosσ);\n var sinα = cosU1 * cosU2 * sinλ / sinσ;\n cosSqα = 1 - sinα * sinα;\n cos2σM = cosσ - 2 * sinU1 * sinU2 / cosSqα;\n if (isNaN(cos2σM)) cos2σM = 0; // equatorial line: cosSqα=0 (§6)\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\n λʹ = λ;\n λ = L + (1 - C) * f * sinα * (σ + C * sinσ * (cos2σM + C * cosσ * (-\n 1 + 2 * cos2σM * cos2σM)));\n } while (Math.abs(λ - λʹ) > 1e-12 && ++iterations < 100);\n if (iterations >= 100) {\n console.log(\"Formula failed to converge. Altering target position.\");\n return this._vincenty_inverse(p1, {\n lat: p2.lat,\n lng: p2.lng - 0.01\n });\n // throw new Error('Formula failed to converge');\n }\n\n var uSq = cosSqα * (a * a - b * b) / (b * b);\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\n uSq)));\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\n cos2σM) -\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\n cos2σM)));\n\n var s = b * A * (σ - Δσ);\n\n var fwdAz = Math.atan2(cosU2 * sinλ, cosU1 * sinU2 - sinU1 * cosU2 *\n cosλ);\n var revAz = Math.atan2(cosU1 * sinλ, -sinU1 * cosU2 + cosU1 * sinU2 *\n cosλ);\n\n s = Number(s.toFixed(3)); // round to 1mm precision\n return {\n distance: s,\n initialBearing: fwdAz.toDegrees(),\n finalBearing: revAz.toDegrees()\n };\n },\n\n\n /**\n * Returns the point of intersection of two paths defined by point and bearing.\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\n *\n * @param {LatLon} p1 - First point.\n * @param {number} brng1 - Initial bearing from first point.\n * @param {LatLon} p2 - Second point.\n * @param {number} brng2 - Initial bearing from second point.\n * @returns {Object} containing lat/lng information of intersection.\n *\n * @example\n * var p1 = LatLon(51.8853, 0.2545), brng1 = 108.55;\n * var p2 = LatLon(49.0034, 2.5735), brng2 = 32.44;\n * var pInt = LatLon.intersection(p1, brng1, p2, brng2); // pInt.toString(): 50.9078°N, 4.5084°E\n */\n _intersection: function(p1, brng1, p2, brng2) {\n // see http://williams.best.vwh.net/avform.htm#Intersection\n\n var φ1 = p1.lat.toRadians(),\n λ1 = p1.lng.toRadians();\n var φ2 = p2.lat.toRadians(),\n λ2 = p2.lng.toRadians();\n var θ13 = Number(brng1).toRadians(),\n θ23 = Number(brng2).toRadians();\n var Δφ = φ2 - φ1,\n Δλ = λ2 - λ1;\n\n var δ12 = 2 * Math.asin(Math.sqrt(Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +\n Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ /\n 2)));\n if (δ12 == 0) return null;\n\n // initial/final bearings between points\n var θ1 = Math.acos((Math.sin(φ2) - Math.sin(φ1) * Math.cos(δ12)) /\n (Math.sin(δ12) * Math.cos(φ1)));\n if (isNaN(θ1)) θ1 = 0; // protect against rounding\n var θ2 = Math.acos((Math.sin(φ1) - Math.sin(φ2) * Math.cos(δ12)) /\n (Math.sin(δ12) * Math.cos(φ2)));\n var θ12, θ21;\n if (Math.sin(λ2 - λ1) > 0) {\n θ12 = θ1;\n θ21 = 2 * Math.PI - θ2;\n } else {\n θ12 = 2 * Math.PI - θ1;\n θ21 = θ2;\n }\n\n var α1 = (θ13 - θ12 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 2-1-3\n var α2 = (θ21 - θ23 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 1-2-3\n\n if (Math.sin(α1) == 0 && Math.sin(α2) == 0) return null; // infinite intersections\n if (Math.sin(α1) * Math.sin(α2) < 0) return null; // ambiguous intersection\n\n //α1 = Math.abs(α1);\n //α2 = Math.abs(α2);\n // ... Ed Williams takes abs of α1/α2, but seems to break calculation?\n\n var α3 = Math.acos(-Math.cos(α1) * Math.cos(α2) +\n Math.sin(α1) * Math.sin(α2) * Math.cos(δ12));\n var δ13 = Math.atan2(Math.sin(δ12) * Math.sin(α1) * Math.sin(α2),\n Math.cos(α2) + Math.cos(α1) * Math.cos(α3));\n var φ3 = Math.asin(Math.sin(φ1) * Math.cos(δ13) +\n Math.cos(φ1) * Math.sin(δ13) * Math.cos(θ13));\n var Δλ13 = Math.atan2(Math.sin(θ13) * Math.sin(δ13) * Math.cos(φ1),\n Math.cos(δ13) - Math.sin(φ1) * Math.sin(φ3));\n var λ3 = λ1 + Δλ13;\n λ3 = (λ3 + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180..+180º\n\n return {\n lat: φ3.toDegrees(),\n lng: λ3.toDegrees()\n };\n },\n\n /**\n * Overwrites obj1's values with obj2's and adds obj2's if non existent in obj1\n * @param obj1\n * @param obj2\n * @returns obj3 a new object based on obj1 and obj2\n */\n _merge_options: function(obj1, obj2) {\n let obj3 = {};\n for (let attrname in obj1) {\n obj3[attrname] = obj1[attrname];\n }\n for (let attrname in obj2) {\n obj3[attrname] = obj2[attrname];\n }\n return obj3;\n }\n});\n\nL.geodesic = function(latlngs, options) {\n return new L.Geodesic(latlngs, options);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzPzU3NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxrQkFBa0IsNkJBQTZCO0FBQy9DO0FBQ0Esc0JBQXNCLDJDQUEyQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JB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QUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9MZWFmbGV0Lkdlb2Rlc2ljL0xlYWZsZXQuR2VvZGVzaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgTGVhZmxldC5HZW9kZXNpYy5cbi8vIENvcHlyaWdodCAoQykgMjAxNyAgSGVucnkgVGhhc2xlclxuLy8gYmFzZWQgb24gY29kZSBieSBDaHJpcyBWZW5lc3MgQ29weXJpZ2h0IChDKSAyMDE0IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3ZlbmVzcy9nZW9kZXN5XG4vL1xuLy8gTGVhZmxldC5HZW9kZXNpYyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3Jcbi8vIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gTGVhZmxldC5HZW9kZXNpYyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggTGVhZmxldC5HZW9kZXNpYy4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cblxuXG4vKiogRXh0ZW5kIE51bWJlciBvYmplY3Qgd2l0aCBtZXRob2QgdG8gY29udmVydCBudW1lcmljIGRlZ3JlZXMgdG8gcmFkaWFucyAqL1xuaWYgKHR5cGVvZiBOdW1iZXIucHJvdG90eXBlLnRvUmFkaWFucyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICBOdW1iZXIucHJvdG90eXBlLnRvUmFkaWFucyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzICogTWF0aC5QSSAvIDE4MDtcbiAgfTtcbn1cblxuLyoqIEV4dGVuZCBOdW1iZXIgb2JqZWN0IHdpdGggbWV0aG9kIHRvIGNvbnZlcnQgcmFkaWFucyB0byBudW1lcmljIChzaWduZWQpIGRlZ3JlZXMgKi9cbmlmICh0eXBlb2YgTnVtYmVyLnByb3RvdHlwZS50b0RlZ3JlZXMgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgTnVtYmVyLnByb3RvdHlwZS50b0RlZ3JlZXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcyAqIDE4MCAvIE1hdGguUEk7XG4gIH07XG59XG5cbnZhciBJTlRFUlNFQ1RfTE5HID0gMTc5Ljk5OTsgLy8gTG5nIHVzZWQgZm9yIGludGVyc2VjdGlvbiBhbmQgd3JhcCBhcm91bmQgb24gbWFwIGVkZ2VzXG5cbkwuR2VvZGVzaWMgPSBMLlBvbHlsaW5lLmV4dGVuZCh7XG4gIG9wdGlvbnM6IHtcbiAgICBjb2xvcjogXCJibHVlXCIsXG4gICAgc3RlcHM6IDEwLFxuICAgIGRhc2g6IDEsXG4gICAgd3JhcDogdHJ1ZVxuICB9LFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uKGxhdGxuZ3MsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLl9tZXJnZV9vcHRpb25zKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgdGhpcy5vcHRpb25zLmRhc2ggPSBNYXRoLm1heCgxZS0zLCBNYXRoLm1pbigxLCBwYXJzZUZsb2F0KHRoaXMub3B0aW9ucy5kYXNoKSB8fCAxKSk7XG4gICAgdGhpcy5kYXR1bSA9IHt9O1xuICAgIHRoaXMuZGF0dW0uZWxsaXBzb2lkID0ge1xuICAgICAgICBhOiA2Mzc4MTM3LFxuICAgICAgICBiOiA2MzU2NzUyLjMxNDIsXG4gICAgICAgIGY6IDEgLyAyOTguMjU3MjIzNTYzXG4gICAgICB9OyAvLyBXR1MtODRcbiAgICB0aGlzLl9sYXRsbmdzID0gdGhpcy5fZ2VuZXJhdGVfR2VvZGVzaWMobGF0bG5ncyk7XG4gICAgTC5Qb2x5bGluZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIHRoaXMuX2xhdGxuZ3MsIHRoaXMub3B0aW9ucyk7XG4gIH0sXG5cbiAgc2V0TGF0TG5nczogZnVuY3Rpb24obGF0bG5ncykge1xuICAgIHRoaXMuX2xhdGxuZ3MgPSB0aGlzLl9nZW5lcmF0ZV9HZW9kZXNpYyhsYXRsbmdzKTtcbiAgICBMLlBvbHlsaW5lLnByb3RvdHlwZS5zZXRMYXRMbmdzLmNhbGwodGhpcywgdGhpcy5fbGF0bG5ncyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgc29tZSBzdGF0aXN0aWMgdmFsdWVzIG9mIGN1cnJlbnQgZ2VvZGVzaWMgbXVsdGlwb2x5bGluZVxuICAgKiBAcmV0dXJucyAoT2JqZWN0fSBPYmplY3Qgd2l0aCBzZXZlcmFsIHByb3BlcnRpZXMgKGUuZy4gb3ZlcmFsbCBkaXN0YW5jZSlcbiAgICovXG4gIGdldFN0YXRzOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgICBkaXN0YW5jZTogMCxcbiAgICAgICAgcG9pbnRzOiAwLFxuICAgICAgICBwb2x5Z29uczogdGhpcy5fbGF0bG5ncy5sZW5ndGhcbiAgICAgIH0sIHBvbHksIHBvaW50cztcblxuICAgIGZvciAocG9seSA9IDA7IHBvbHkgPCB0aGlzLl9sYXRsbmdzLmxlbmd0aDsgcG9seSsrKSB7XG4gICAgICBvYmoucG9pbnRzICs9IHRoaXMuX2xhdGxuZ3NbcG9seV0ubGVuZ3RoO1xuICAgICAgZm9yIChwb2ludHMgPSAwOyBwb2ludHMgPCAodGhpcy5fbGF0bG5nc1twb2x5XS5sZW5ndGggLSAxKTsgcG9pbnRzKyspIHtcbiAgICAgICAgb2JqLmRpc3RhbmNlICs9IHRoaXMuX3ZpbmNlbnR5X2ludmVyc2UodGhpcy5fbGF0bG5nc1twb2x5XVtwb2ludHNdLFxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seV1bcG9pbnRzICsgMV0pLmRpc3RhbmNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZ2VvZGVzaWMgbGluZXMgZnJvbSBnZW9Kc29uLiBSZXBsYWNlcyBhbGwgY3VycmVudCBmZWF0dXJlcyBvZiB0aGlzIGluc3RhbmNlLlxuICAgKiBTdXBwb3J0cyBMaW5lU3RyaW5nLCBNdWx0aUxpbmVTdHJpbmcgYW5kIFBvbHlnb25cbiAgICogQHBhcmFtIHtPYmplY3R9IGdlb2pzb24gLSBnZW9zam9uIGFzIG9iamVjdC5cbiAgICovXG4gIGdlb0pzb246IGZ1bmN0aW9uKGdlb2pzb24pIHtcblxuICAgIGxldCBub3JtYWxpemVkID0gTC5HZW9KU09OLmFzRmVhdHVyZShnZW9qc29uKTtcbiAgICBsZXQgZmVhdHVyZXMgPSBub3JtYWxpemVkLnR5cGUgPT09IFwiRmVhdHVyZUNvbGxlY3Rpb25cIiA/IG5vcm1hbGl6ZWQuZmVhdHVyZXMgOiBbXG4gICAgICBub3JtYWxpemVkXG4gICAgXTtcbiAgICB0aGlzLl9sYXRsbmdzID0gW107XG4gICAgZm9yIChsZXQgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgICAgbGV0IGdlb21ldHJ5ID0gZmVhdHVyZS50eXBlID09PSBcIkZlYXR1cmVcIiA/IGZlYXR1cmUuZ2VvbWV0cnkgOlxuICAgICAgICBmZWF0dXJlLFxuICAgICAgICBjb29yZHMgPSBnZW9tZXRyeS5jb29yZGluYXRlcztcblxuICAgICAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJMaW5lU3RyaW5nXCI6XG4gICAgICAgICAgdGhpcy5fbGF0bG5ncy5wdXNoKHRoaXMuX2dlbmVyYXRlX0dlb2Rlc2ljKFtMLkdlb0pTT04uY29vcmRzVG9MYXRMbmdzKFxuICAgICAgICAgICAgY29vcmRzLCAwKV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk11bHRpTGluZVN0cmluZ1wiOlxuICAgICAgICBjYXNlIFwiUG9seWdvblwiOlxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3MucHVzaCh0aGlzLl9nZW5lcmF0ZV9HZW9kZXNpYyhMLkdlb0pTT04uY29vcmRzVG9MYXRMbmdzKFxuICAgICAgICAgICAgY29vcmRzLCAxKSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiUG9pbnRcIjpcbiAgICAgICAgY2FzZSBcIk11bHRpUG9pbnRcIjpcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkR1ZGUsIHBvaW50cyBjYW4ndCBiZSBkcmF3biBhcyBnZW9kZXNpYyBsaW5lcy4uLlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkRyYXdpbmcgXCIgKyBnZW9tZXRyeS50eXBlICtcbiAgICAgICAgICAgIFwiIGFzIGEgZ2VvZGVzaWMgaXMgbm90IHN1cHBvcnRlZC4gU2tpcHBpbmcuLi5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGdyZWF0IGNpcmNsZS4gUmVwbGFjZXMgYWxsIGN1cnJlbnQgbGluZXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZW50ZXIgLSBnZW9ncmFwaGljIHBvc2l0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSByYWRpdXMgb2YgdGhlIGNpcmNsZSBpbiBtZXRyZXNcbiAgICovXG4gIGNyZWF0ZUNpcmNsZTogZnVuY3Rpb24oY2VudGVyLCByYWRpdXMpIHtcbiAgICBsZXQgcG9seWxpbmVJbmRleCA9IDA7XG4gICAgbGV0IHByZXYgPSB7XG4gICAgICBsYXQ6IDAsXG4gICAgICBsbmc6IDAsXG4gICAgICBicmc6IDBcbiAgICB9O1xuICAgIGxldCBzdGVwO1xuXG4gICAgdGhpcy5fbGF0bG5ncyA9IFtdO1xuICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcblxuICAgIGxldCBkaXJlY3QgPSB0aGlzLl92aW5jZW50eV9kaXJlY3QoTC5sYXRMbmcoY2VudGVyKSwgMCwgcmFkaXVzLCB0aGlzLm9wdGlvbnNcbiAgICAgIC53cmFwKTtcbiAgICBwcmV2ID0gTC5sYXRMbmcoZGlyZWN0LmxhdCwgZGlyZWN0LmxuZyk7XG4gICAgdGhpcy5fbGF0bG5nc1twb2x5bGluZUluZGV4XS5wdXNoKHByZXYpO1xuICAgIGZvciAoc3RlcCA9IDE7IHN0ZXAgPD0gdGhpcy5vcHRpb25zLnN0ZXBzOykge1xuICAgICAgZGlyZWN0ID0gdGhpcy5fdmluY2VudHlfZGlyZWN0KEwubGF0TG5nKGNlbnRlciksIDM2MCAvIHRoaXMub3B0aW9uc1xuICAgICAgICAuc3RlcHMgKiBzdGVwLCByYWRpdXMsIHRoaXMub3B0aW9ucy53cmFwKTtcbiAgICAgIGxldCBncCA9IEwubGF0TG5nKGRpcmVjdC5sYXQsIGRpcmVjdC5sbmcpO1xuICAgICAgaWYgKE1hdGguYWJzKGdwLmxuZyAtIHByZXYubG5nKSA+IDE4MCkge1xuICAgICAgICBsZXQgaW52ZXJzZSA9IHRoaXMuX3ZpbmNlbnR5X2ludmVyc2UocHJldiwgZ3ApO1xuICAgICAgICBsZXQgc2VjID0gdGhpcy5faW50ZXJzZWN0aW9uKHByZXYsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIHtcbiAgICAgICAgICBsYXQ6IC04OSxcbiAgICAgICAgICBsbmc6ICgoZ3AubG5nIC0gcHJldi5sbmcpID4gMCkgPyAtSU5URVJTRUNUX0xORyA6IElOVEVSU0VDVF9MTkdcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIGlmIChzZWMpIHtcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2goTC5sYXRMbmcoc2VjLmxhdCwgc2VjLmxuZykpO1xuICAgICAgICAgIHBvbHlsaW5lSW5kZXgrKztcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdID0gW107XG4gICAgICAgICAgcHJldiA9IEwubGF0TG5nKHNlYy5sYXQsIC1zZWMubG5nKTtcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2gocHJldik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcG9seWxpbmVJbmRleCsrO1xuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2goZ3ApO1xuICAgICAgICAgIHByZXYgPSBncDtcbiAgICAgICAgICBzdGVwKys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChncCk7XG4gICAgICAgIHByZXYgPSBncDtcbiAgICAgICAgc3RlcCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGdlb2Rlc2ljIFBvbHlsaW5lIGZyb20gZ2l2ZW4gY29vcmRpbmF0ZXNcbiAgICogTm90ZTogZGFzaGVkIGxpbmVzIGFyZSB1bmRlciB3b3JrXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBsYXRsbmdzIC0gT25lIG9yIG1vcmUgcG9seWxpbmVzIGFzIGFuIGFycmF5LiBTZWUgTGVhZmxldCBkb2MgYWJvdXQgUG9seWxpbmVcbiAgICogQHJldHVybnMgKE9iamVjdH0gQW4gYXJyYXkgb2YgYXJyYXlzIG9mIGdlb2dyYXBoaWNhbCBwb2ludHMuXG4gICAqL1xuICBfZ2VuZXJhdGVfR2VvZGVzaWM6IGZ1bmN0aW9uKGxhdGxuZ3MpIHtcbiAgICBsZXQgX2dlbyA9IFtdLCBfZ2VvY250ID0gMDtcblxuICAgIGZvciAobGV0IHBvbHkgPSAwOyBwb2x5IDwgbGF0bG5ncy5sZW5ndGg7IHBvbHkrKykge1xuICAgICAgX2dlb1tfZ2VvY250XSA9IFtdO1xuICAgICAgbGV0IHByZXYgPSBMLmxhdExuZyhsYXRsbmdzW3BvbHldWzBdKTtcbiAgICAgIGZvciAobGV0IHBvaW50cyA9IDA7IHBvaW50cyA8IChsYXRsbmdzW3BvbHldLmxlbmd0aCAtIDEpOyBwb2ludHMrKykge1xuICAgICAgICAvLyB1c2UgcHJldiwgc28gdGhhdCB3cmFwcGluZyBiZWhhdmVzIGNvcnJlY3RseVxuICAgICAgICBsZXQgcG9pbnRBID0gcHJldjtcbiAgICAgICAgbGV0IHBvaW50QiA9IEwubGF0TG5nKGxhdGxuZ3NbcG9seV1bcG9pbnRzICsgMV0pO1xuICAgICAgICBpZiAocG9pbnRBLmVxdWFscyhwb2ludEIpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGludmVyc2UgPSB0aGlzLl92aW5jZW50eV9pbnZlcnNlKHBvaW50QSwgcG9pbnRCKTtcbiAgICAgICAgX2dlb1tfZ2VvY250XS5wdXNoKHByZXYpO1xuICAgICAgICBmb3IgKGxldCBzID0gMTsgcyA8PSB0aGlzLm9wdGlvbnMuc3RlcHM7KSB7XG4gICAgICAgICAgbGV0IGRpc3RhbmNlID0gaW52ZXJzZS5kaXN0YW5jZSAvIHRoaXMub3B0aW9ucy5zdGVwcztcbiAgICAgICAgICAvLyBkYXNoZWQgbGluZXMgZG9uJ3QgZ28gdGhlIGZ1bGwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcG9pbnRzXG4gICAgICAgICAgbGV0IGRpc3RfbXVsdCA9IHMgLSAxICsgdGhpcy5vcHRpb25zLmRhc2g7XG4gICAgICAgICAgbGV0IGRpcmVjdCA9IHRoaXMuX3ZpbmNlbnR5X2RpcmVjdChwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlKmRpc3RfbXVsdCwgdGhpcy5vcHRpb25zLndyYXApO1xuICAgICAgICAgIGxldCBncCA9IEwubGF0TG5nKGRpcmVjdC5sYXQsIGRpcmVjdC5sbmcpO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhncC5sbmcgLSBwcmV2LmxuZykgPiAxODApIHtcbiAgICAgICAgICAgIGxldCBzZWMgPSB0aGlzLl9pbnRlcnNlY3Rpb24ocG9pbnRBLCBpbnZlcnNlLmluaXRpYWxCZWFyaW5nLCB7XG4gICAgICAgICAgICAgIGxhdDogLTg5LFxuICAgICAgICAgICAgICBsbmc6ICgoZ3AubG5nIC0gcHJldi5sbmcpID4gMCkgPyAtSU5URVJTRUNUX0xORyA6IElOVEVSU0VDVF9MTkdcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgaWYgKHNlYykge1xuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2goTC5sYXRMbmcoc2VjLmxhdCwgc2VjLmxuZykpO1xuICAgICAgICAgICAgICBfZ2VvY250Kys7XG4gICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0gPSBbXTtcbiAgICAgICAgICAgICAgcHJldiA9IEwubGF0TG5nKHNlYy5sYXQsIC1zZWMubG5nKTtcbiAgICAgICAgICAgICAgX2dlb1tfZ2VvY250XS5wdXNoKHByZXYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgX2dlb2NudCsrO1xuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdID0gW107XG4gICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0ucHVzaChncCk7XG4gICAgICAgICAgICAgIHByZXYgPSBncDtcbiAgICAgICAgICAgICAgcysrO1xuICAgICAgICAgICAgfSAgXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9nZW9bX2dlb2NudF0ucHVzaChncCk7XG4gICAgICAgICAgICAvLyBEYXNoZWQgbGluZXMgc3RhcnQgYSBuZXcgbGluZVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXNoIDwgMSl7XG4gICAgICAgICAgICAgICAgX2dlb2NudCsrO1xuICAgICAgICAgICAgICAgIC8vIGdvIGZ1bGwgZGlzdGFuY2UgdGhpcyB0aW1lLCB0byBnZXQgc3RhcnRpbmcgcG9pbnQgZm9yIG5leHQgbGluZVxuICAgICAgICAgICAgICAgIGxldCBkaXJlY3RfZnVsbCA9IHRoaXMuX3ZpbmNlbnR5X2RpcmVjdChwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlKnMsIHRoaXMub3B0aW9ucy53cmFwKTtcbiAgICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdID0gW107XG4gICAgICAgICAgICAgICAgcHJldiA9IEwubGF0TG5nKGRpcmVjdF9mdWxsLmxhdCwgZGlyZWN0X2Z1bGwubG5nKTtcbiAgICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2gocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHByZXYgPSBncDtcbiAgICAgICAgICAgIHMrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9nZW9jbnQrKztcbiAgICB9XG4gICAgcmV0dXJuIF9nZW87XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZpbmNlbnR5IGRpcmVjdCBjYWxjdWxhdGlvbi5cbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxCZWFyaW5nIC0gSW5pdGlhbCBiZWFyaW5nIGluIGRlZ3JlZXMgZnJvbSBub3J0aC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGRpc3RhbmNlIC0gRGlzdGFuY2UgYWxvbmcgYmVhcmluZyBpbiBtZXRyZXMuXG4gICAqIEByZXR1cm5zIChPYmplY3R9IE9iamVjdCBpbmNsdWRpbmcgcG9pbnQgKGRlc3RpbmF0aW9uIHBvaW50KSwgZmluYWxCZWFyaW5nLlxuICAgKi9cblxuICBfdmluY2VudHlfZGlyZWN0OiBmdW5jdGlvbihwMSwgaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlLCB3cmFwKSB7XG4gICAgdmFyIM+GMSA9IHAxLmxhdC50b1JhZGlhbnMoKSxcbiAgICAgIM67MSA9IHAxLmxuZy50b1JhZGlhbnMoKTtcbiAgICB2YXIgzrExID0gaW5pdGlhbEJlYXJpbmcudG9SYWRpYW5zKCk7XG4gICAgdmFyIHMgPSBkaXN0YW5jZTtcblxuICAgIHZhciBhID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuYSxcbiAgICAgIGIgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5iLFxuICAgICAgZiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmY7XG5cbiAgICB2YXIgc2luzrExID0gTWF0aC5zaW4ozrExKTtcbiAgICB2YXIgY29zzrExID0gTWF0aC5jb3MozrExKTtcblxuICAgIHZhciB0YW5VMSA9ICgxIC0gZikgKiBNYXRoLnRhbijPhjEpLFxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxuICAgICAgc2luVTEgPSB0YW5VMSAqIGNvc1UxO1xuICAgIHZhciDPgzEgPSBNYXRoLmF0YW4yKHRhblUxLCBjb3POsTEpO1xuICAgIHZhciBzaW7OsSA9IGNvc1UxICogc2luzrExO1xuICAgIHZhciBjb3NTcc6xID0gMSAtIHNpbs6xICogc2luzrE7XG4gICAgdmFyIHVTcSA9IGNvc1NxzrEgKiAoYSAqIGEgLSBiICogYikgLyAoYiAqIGIpO1xuICAgIHZhciBBID0gMSArIHVTcSAvIDE2Mzg0ICogKDQwOTYgKyB1U3EgKiAoLTc2OCArIHVTcSAqICgzMjAgLSAxNzUgKlxuICAgICAgdVNxKSkpO1xuICAgIHZhciBCID0gdVNxIC8gMTAyNCAqICgyNTYgKyB1U3EgKiAoLTEyOCArIHVTcSAqICg3NCAtIDQ3ICogdVNxKSkpO1xuXG4gICAgdmFyIM+DID0gcyAvIChiICogQSksXG4gICAgICDPg8q5LCBpdGVyYXRpb25zID0gMDtcbiAgICB2YXIgc2luz4MsIGNvc8+DO1xuICAgIHZhciBjb3Myz4NNO1xuICAgIGRvIHtcbiAgICAgIGNvczLPg00gPSBNYXRoLmNvcygyICogz4MxICsgz4MpO1xuICAgICAgc2luz4MgPSBNYXRoLnNpbijPgyk7XG4gICAgICBjb3PPgyA9IE1hdGguY29zKM+DKTtcbiAgICAgIHZhciDOlM+DID0gQiAqIHNpbs+DICogKGNvczLPg00gKyBCIC8gNCAqIChjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICpcbiAgICAgICAgICBjb3Myz4NNKSAtXG4gICAgICAgIEIgLyA2ICogY29zMs+DTSAqICgtMyArIDQgKiBzaW7PgyAqIHNpbs+DKSAqICgtMyArIDQgKiBjb3Myz4NNICpcbiAgICAgICAgICBjb3Myz4NNKSkpO1xuICAgICAgz4PKuSA9IM+DO1xuICAgICAgz4MgPSBzIC8gKGIgKiBBKSArIM6Uz4M7XG4gICAgfSB3aGlsZSAoTWF0aC5hYnMoz4MgLSDPg8q5KSA+IDFlLTEyICYmICsraXRlcmF0aW9ucyk7XG5cbiAgICB2YXIgeCA9IHNpblUxICogc2luz4MgLSBjb3NVMSAqIGNvc8+DICogY29zzrExO1xuICAgIHZhciDPhjIgPSBNYXRoLmF0YW4yKHNpblUxICogY29zz4MgKyBjb3NVMSAqIHNpbs+DICogY29zzrExLCAoMSAtIGYpICpcbiAgICAgIE1hdGguc3FydChzaW7OsSAqIHNpbs6xICsgeCAqIHgpKTtcbiAgICB2YXIgzrsgPSBNYXRoLmF0YW4yKHNpbs+DICogc2luzrExLCBjb3NVMSAqIGNvc8+DIC0gc2luVTEgKiBzaW7PgyAqIGNvc86xMSk7XG4gICAgdmFyIEMgPSBmIC8gMTYgKiBjb3NTcc6xICogKDQgKyBmICogKDQgLSAzICogY29zU3HOsSkpO1xuICAgIHZhciBMID0gzrsgLSAoMSAtIEMpICogZiAqIHNpbs6xICpcbiAgICAgICjPgyArIEMgKiBzaW7PgyAqIChjb3Myz4NNICsgQyAqIGNvc8+DICogKC0xICsgMiAqIGNvczLPg00gKiBjb3Myz4NNKSkpO1xuXG4gICAgdmFyIM67MjtcbiAgICBpZiAod3JhcCkge1xuICAgICAgzrsyID0gKM67MSArIEwgKyAzICogTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gbm9ybWFsaXNlIHRvIC0xODAuLi4rMTgwXG4gICAgfSBlbHNlIHtcbiAgICAgIM67MiA9ICjOuzEgKyBMKTsgLy8gZG8gbm90IG5vcm1hbGl6ZVxuICAgIH1cblxuICAgIHZhciByZXZBeiA9IE1hdGguYXRhbjIoc2luzrEsIC14KTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYXQ6IM+GMi50b0RlZ3JlZXMoKSxcbiAgICAgIGxuZzogzrsyLnRvRGVncmVlcygpLFxuICAgICAgZmluYWxCZWFyaW5nOiByZXZBei50b0RlZ3JlZXMoKVxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZpbmNlbnR5IGludmVyc2UgY2FsY3VsYXRpb24uXG4gICAqIGJhc2VkIG9uIHRoZSB3b3JrIG9mIENocmlzIFZlbmVzcyAoaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdmVuZXNzL2dlb2Rlc3kpXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7TGF0TG5nfSBwMSAtIExhdGl0dWRlL2xvbmdpdHVkZSBvZiBzdGFydCBwb2ludC5cbiAgICogQHBhcmFtIHtMYXRMbmd9IHAyIC0gTGF0aXR1ZGUvbG9uZ2l0dWRlIG9mIGRlc3RpbmF0aW9uIHBvaW50LlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBPYmplY3QgaW5jbHVkaW5nIGRpc3RhbmNlLCBpbml0aWFsQmVhcmluZywgZmluYWxCZWFyaW5nLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgZm9ybXVsYSBmYWlsZWQgdG8gY29udmVyZ2UuXG4gICAqL1xuICBfdmluY2VudHlfaW52ZXJzZTogZnVuY3Rpb24ocDEsIHAyKSB7XG4gICAgdmFyIM+GMSA9IHAxLmxhdC50b1JhZGlhbnMoKSxcbiAgICAgIM67MSA9IHAxLmxuZy50b1JhZGlhbnMoKTtcbiAgICB2YXIgz4YyID0gcDIubGF0LnRvUmFkaWFucygpLFxuICAgICAgzrsyID0gcDIubG5nLnRvUmFkaWFucygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5hLFxuICAgICAgYiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmIsXG4gICAgICBmID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuZjtcblxuICAgIHZhciBMID0gzrsyIC0gzrsxO1xuICAgIHZhciB0YW5VMSA9ICgxIC0gZikgKiBNYXRoLnRhbijPhjEpLFxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxuICAgICAgc2luVTEgPSB0YW5VMSAqIGNvc1UxO1xuICAgIHZhciB0YW5VMiA9ICgxIC0gZikgKiBNYXRoLnRhbijPhjIpLFxuICAgICAgY29zVTIgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTIgKiB0YW5VMikpLFxuICAgICAgc2luVTIgPSB0YW5VMiAqIGNvc1UyO1xuXG4gICAgdmFyIM67ID0gTCxcbiAgICAgIM67yrksIGl0ZXJhdGlvbnMgPSAwO1xuICAgIHZhciBjb3NTcc6xLCBzaW7PgywgY29zMs+DTSwgY29zz4MsIM+DLCBzaW7OuywgY29zzrs7XG4gICAgZG8ge1xuICAgICAgc2luzrsgPSBNYXRoLnNpbijOuyk7XG4gICAgICBjb3POuyA9IE1hdGguY29zKM67KTtcbiAgICAgIHZhciBzaW5Tcc+DID0gKGNvc1UyICogc2luzrspICogKGNvc1UyICogc2luzrspICsgKGNvc1UxICogc2luVTIgLVxuICAgICAgICBzaW5VMSAqIGNvc1UyICogY29zzrspICogKGNvc1UxICogc2luVTIgLSBzaW5VMSAqIGNvc1UyICogY29zzrspO1xuICAgICAgc2luz4MgPSBNYXRoLnNxcnQoc2luU3HPgyk7XG4gICAgICBpZiAoc2luz4MgPT0gMCkgcmV0dXJuIDA7IC8vIGNvLWluY2lkZW50IHBvaW50c1xuICAgICAgY29zz4MgPSBzaW5VMSAqIHNpblUyICsgY29zVTEgKiBjb3NVMiAqIGNvc867O1xuICAgICAgz4MgPSBNYXRoLmF0YW4yKHNpbs+DLCBjb3PPgyk7XG4gICAgICB2YXIgc2luzrEgPSBjb3NVMSAqIGNvc1UyICogc2luzrsgLyBzaW7PgztcbiAgICAgIGNvc1NxzrEgPSAxIC0gc2luzrEgKiBzaW7OsTtcbiAgICAgIGNvczLPg00gPSBjb3PPgyAtIDIgKiBzaW5VMSAqIHNpblUyIC8gY29zU3HOsTtcbiAgICAgIGlmIChpc05hTihjb3Myz4NNKSkgY29zMs+DTSA9IDA7IC8vIGVxdWF0b3JpYWwgbGluZTogY29zU3HOsT0wICjCpzYpXG4gICAgICB2YXIgQyA9IGYgLyAxNiAqIGNvc1NxzrEgKiAoNCArIGYgKiAoNCAtIDMgKiBjb3NTcc6xKSk7XG4gICAgICDOu8q5ID0gzrs7XG4gICAgICDOuyA9IEwgKyAoMSAtIEMpICogZiAqIHNpbs6xICogKM+DICsgQyAqIHNpbs+DICogKGNvczLPg00gKyBDICogY29zz4MgKiAoLVxuICAgICAgICAxICsgMiAqIGNvczLPg00gKiBjb3Myz4NNKSkpO1xuICAgIH0gd2hpbGUgKE1hdGguYWJzKM67IC0gzrvKuSkgPiAxZS0xMiAmJiArK2l0ZXJhdGlvbnMgPCAxMDApO1xuICAgIGlmIChpdGVyYXRpb25zID49IDEwMCkge1xuICAgICAgY29uc29sZS5sb2coXCJGb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZS4gQWx0ZXJpbmcgdGFyZ2V0IHBvc2l0aW9uLlwiKTtcbiAgICAgIHJldHVybiB0aGlzLl92aW5jZW50eV9pbnZlcnNlKHAxLCB7XG4gICAgICAgICAgbGF0OiBwMi5sYXQsXG4gICAgICAgICAgbG5nOiBwMi5sbmcgLSAwLjAxXG4gICAgICAgIH0pO1xuICAgICAgICAvLyAgdGhyb3cgbmV3IEVycm9yKCdGb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZScpO1xuICAgIH1cblxuICAgIHZhciB1U3EgPSBjb3NTcc6xICogKGEgKiBhIC0gYiAqIGIpIC8gKGIgKiBiKTtcbiAgICB2YXIgQSA9IDEgKyB1U3EgLyAxNjM4NCAqICg0MDk2ICsgdVNxICogKC03NjggKyB1U3EgKiAoMzIwIC0gMTc1ICpcbiAgICAgIHVTcSkpKTtcbiAgICB2YXIgQiA9IHVTcSAvIDEwMjQgKiAoMjU2ICsgdVNxICogKC0xMjggKyB1U3EgKiAoNzQgLSA0NyAqIHVTcSkpKTtcbiAgICB2YXIgzpTPgyA9IEIgKiBzaW7PgyAqIChjb3Myz4NNICsgQiAvIDQgKiAoY29zz4MgKiAoLTEgKyAyICogY29zMs+DTSAqXG4gICAgICAgIGNvczLPg00pIC1cbiAgICAgIEIgLyA2ICogY29zMs+DTSAqICgtMyArIDQgKiBzaW7PgyAqIHNpbs+DKSAqICgtMyArIDQgKiBjb3Myz4NNICpcbiAgICAgICAgY29zMs+DTSkpKTtcblxuICAgIHZhciBzID0gYiAqIEEgKiAoz4MgLSDOlM+DKTtcblxuICAgIHZhciBmd2RBeiA9IE1hdGguYXRhbjIoY29zVTIgKiBzaW7OuywgY29zVTEgKiBzaW5VMiAtIHNpblUxICogY29zVTIgKlxuICAgICAgY29zzrspO1xuICAgIHZhciByZXZBeiA9IE1hdGguYXRhbjIoY29zVTEgKiBzaW7OuywgLXNpblUxICogY29zVTIgKyBjb3NVMSAqIHNpblUyICpcbiAgICAgIGNvc867KTtcblxuICAgIHMgPSBOdW1iZXIocy50b0ZpeGVkKDMpKTsgLy8gcm91bmQgdG8gMW1tIHByZWNpc2lvblxuICAgIHJldHVybiB7XG4gICAgICBkaXN0YW5jZTogcyxcbiAgICAgIGluaXRpYWxCZWFyaW5nOiBmd2RBei50b0RlZ3JlZXMoKSxcbiAgICAgIGZpbmFsQmVhcmluZzogcmV2QXoudG9EZWdyZWVzKClcbiAgICB9O1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBvaW50IG9mIGludGVyc2VjdGlvbiBvZiB0d28gcGF0aHMgZGVmaW5lZCBieSBwb2ludCBhbmQgYmVhcmluZy5cbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcbiAgICpcbiAgICogQHBhcmFtIHtMYXRMb259IHAxIC0gRmlyc3QgcG9pbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBicm5nMSAtIEluaXRpYWwgYmVhcmluZyBmcm9tIGZpcnN0IHBvaW50LlxuICAgKiBAcGFyYW0ge0xhdExvbn0gcDIgLSBTZWNvbmQgcG9pbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBicm5nMiAtIEluaXRpYWwgYmVhcmluZyBmcm9tIHNlY29uZCBwb2ludC5cbiAgICogQHJldHVybnMge09iamVjdH0gY29udGFpbmluZyBsYXQvbG5nIGluZm9ybWF0aW9uIG9mIGludGVyc2VjdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdmFyIHAxID0gTGF0TG9uKDUxLjg4NTMsIDAuMjU0NSksIGJybmcxID0gMTA4LjU1O1xuICAgKiB2YXIgcDIgPSBMYXRMb24oNDkuMDAzNCwgMi41NzM1KSwgYnJuZzIgPSAzMi40NDtcbiAgICogdmFyIHBJbnQgPSBMYXRMb24uaW50ZXJzZWN0aW9uKHAxLCBicm5nMSwgcDIsIGJybmcyKTsgLy8gcEludC50b1N0cmluZygpOiA1MC45MDc4wrBOLCA0LjUwODTCsEVcbiAgICovXG4gIF9pbnRlcnNlY3Rpb246IGZ1bmN0aW9uKHAxLCBicm5nMSwgcDIsIGJybmcyKSB7XG4gICAgLy8gc2VlIGh0dHA6Ly93aWxsaWFtcy5iZXN0LnZ3aC5uZXQvYXZmb3JtLmh0bSNJbnRlcnNlY3Rpb25cblxuICAgIHZhciDPhjEgPSBwMS5sYXQudG9SYWRpYW5zKCksXG4gICAgICDOuzEgPSBwMS5sbmcudG9SYWRpYW5zKCk7XG4gICAgdmFyIM+GMiA9IHAyLmxhdC50b1JhZGlhbnMoKSxcbiAgICAgIM67MiA9IHAyLmxuZy50b1JhZGlhbnMoKTtcbiAgICB2YXIgzrgxMyA9IE51bWJlcihicm5nMSkudG9SYWRpYW5zKCksXG4gICAgICDOuDIzID0gTnVtYmVyKGJybmcyKS50b1JhZGlhbnMoKTtcbiAgICB2YXIgzpTPhiA9IM+GMiAtIM+GMSxcbiAgICAgIM6UzrsgPSDOuzIgLSDOuzE7XG5cbiAgICB2YXIgzrQxMiA9IDIgKiBNYXRoLmFzaW4oTWF0aC5zcXJ0KE1hdGguc2luKM6Uz4YgLyAyKSAqIE1hdGguc2luKM6Uz4YgLyAyKSArXG4gICAgICBNYXRoLmNvcyjPhjEpICogTWF0aC5jb3Moz4YyKSAqIE1hdGguc2luKM6UzrsgLyAyKSAqIE1hdGguc2luKM6UzrsgL1xuICAgICAgICAyKSkpO1xuICAgIGlmICjOtDEyID09IDApIHJldHVybiBudWxsO1xuXG4gICAgLy8gaW5pdGlhbC9maW5hbCBiZWFyaW5ncyBiZXR3ZWVuIHBvaW50c1xuICAgIHZhciDOuDEgPSBNYXRoLmFjb3MoKE1hdGguc2luKM+GMikgLSBNYXRoLnNpbijPhjEpICogTWF0aC5jb3MozrQxMikpIC9cbiAgICAgIChNYXRoLnNpbijOtDEyKSAqIE1hdGguY29zKM+GMSkpKTtcbiAgICBpZiAoaXNOYU4ozrgxKSkgzrgxID0gMDsgLy8gcHJvdGVjdCBhZ2FpbnN0IHJvdW5kaW5nXG4gICAgdmFyIM64MiA9IE1hdGguYWNvcygoTWF0aC5zaW4oz4YxKSAtIE1hdGguc2luKM+GMikgKiBNYXRoLmNvcyjOtDEyKSkgL1xuICAgICAgKE1hdGguc2luKM60MTIpICogTWF0aC5jb3Moz4YyKSkpO1xuICAgIHZhciDOuDEyLCDOuDIxO1xuICAgIGlmIChNYXRoLnNpbijOuzIgLSDOuzEpID4gMCkge1xuICAgICAgzrgxMiA9IM64MTtcbiAgICAgIM64MjEgPSAyICogTWF0aC5QSSAtIM64MjtcbiAgICB9IGVsc2Uge1xuICAgICAgzrgxMiA9IDIgKiBNYXRoLlBJIC0gzrgxO1xuICAgICAgzrgyMSA9IM64MjtcbiAgICB9XG5cbiAgICB2YXIgzrExID0gKM64MTMgLSDOuDEyICsgTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gYW5nbGUgMi0xLTNcbiAgICB2YXIgzrEyID0gKM64MjEgLSDOuDIzICsgTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gYW5nbGUgMS0yLTNcblxuICAgIGlmIChNYXRoLnNpbijOsTEpID09IDAgJiYgTWF0aC5zaW4ozrEyKSA9PSAwKSByZXR1cm4gbnVsbDsgLy8gaW5maW5pdGUgaW50ZXJzZWN0aW9uc1xuICAgIGlmIChNYXRoLnNpbijOsTEpICogTWF0aC5zaW4ozrEyKSA8IDApIHJldHVybiBudWxsOyAvLyBhbWJpZ3VvdXMgaW50ZXJzZWN0aW9uXG5cbiAgICAvL86xMSA9IE1hdGguYWJzKM6xMSk7XG4gICAgLy/OsTIgPSBNYXRoLmFicyjOsTIpO1xuICAgIC8vIC4uLiBFZCBXaWxsaWFtcyB0YWtlcyBhYnMgb2YgzrExL86xMiwgYnV0IHNlZW1zIHRvIGJyZWFrIGNhbGN1bGF0aW9uP1xuXG4gICAgdmFyIM6xMyA9IE1hdGguYWNvcygtTWF0aC5jb3MozrExKSAqIE1hdGguY29zKM6xMikgK1xuICAgICAgTWF0aC5zaW4ozrExKSAqIE1hdGguc2luKM6xMikgKiBNYXRoLmNvcyjOtDEyKSk7XG4gICAgdmFyIM60MTMgPSBNYXRoLmF0YW4yKE1hdGguc2luKM60MTIpICogTWF0aC5zaW4ozrExKSAqIE1hdGguc2luKM6xMiksXG4gICAgICBNYXRoLmNvcyjOsTIpICsgTWF0aC5jb3MozrExKSAqIE1hdGguY29zKM6xMykpO1xuICAgIHZhciDPhjMgPSBNYXRoLmFzaW4oTWF0aC5zaW4oz4YxKSAqIE1hdGguY29zKM60MTMpICtcbiAgICAgIE1hdGguY29zKM+GMSkgKiBNYXRoLnNpbijOtDEzKSAqIE1hdGguY29zKM64MTMpKTtcbiAgICB2YXIgzpTOuzEzID0gTWF0aC5hdGFuMihNYXRoLnNpbijOuDEzKSAqIE1hdGguc2luKM60MTMpICogTWF0aC5jb3Moz4YxKSxcbiAgICAgIE1hdGguY29zKM60MTMpIC0gTWF0aC5zaW4oz4YxKSAqIE1hdGguc2luKM+GMykpO1xuICAgIHZhciDOuzMgPSDOuzEgKyDOlM67MTM7XG4gICAgzrszID0gKM67MyArIDMgKiBNYXRoLlBJKSAlICgyICogTWF0aC5QSSkgLSBNYXRoLlBJOyAvLyBub3JtYWxpc2UgdG8gLTE4MC4uKzE4MMK6XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGF0OiDPhjMudG9EZWdyZWVzKCksXG4gICAgICBsbmc6IM67My50b0RlZ3JlZXMoKVxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0ZXMgb2JqMSdzIHZhbHVlcyB3aXRoIG9iajIncyBhbmQgYWRkcyBvYmoyJ3MgaWYgbm9uIGV4aXN0ZW50IGluIG9iajFcbiAgICogQHBhcmFtIG9iajFcbiAgICogQHBhcmFtIG9iajJcbiAgICogQHJldHVybnMgb2JqMyBhIG5ldyBvYmplY3QgYmFzZWQgb24gb2JqMSBhbmQgb2JqMlxuICAgKi9cbiAgX21lcmdlX29wdGlvbnM6IGZ1bmN0aW9uKG9iajEsIG9iajIpIHtcbiAgICBsZXQgb2JqMyA9IHt9O1xuICAgIGZvciAobGV0IGF0dHJuYW1lIGluIG9iajEpIHtcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMVthdHRybmFtZV07XG4gICAgfVxuICAgIGZvciAobGV0IGF0dHJuYW1lIGluIG9iajIpIHtcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07XG4gICAgfVxuICAgIHJldHVybiBvYmozO1xuICB9XG59KTtcblxuTC5nZW9kZXNpYyA9IGZ1bmN0aW9uKGxhdGxuZ3MsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBMLkdlb2Rlc2ljKGxhdGxuZ3MsIG9wdGlvbnMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL0xlYWZsZXQuR2VvZGVzaWMvTGVhZmxldC5HZW9kZXNpYy5qc1xuLy8gbW9kdWxlIGlkID0gLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\n");
+eval("\r\n\r\n// This file is part of Leaflet.Geodesic.\r\n// Copyright (C) 2017 Henry Thasler\r\n// based on code by Chris Veness Copyright (C) 2014 https://github.com/chrisveness/geodesy\r\n//\r\n// Leaflet.Geodesic is free software: you can redistribute it and/or modify\r\n// it under the terms of the GNU General Public License as published by\r\n// the Free Software Foundation, either version 3 of the License, or\r\n// (at your option) any later version.\r\n//\r\n// Leaflet.Geodesic is distributed in the hope that it will be useful,\r\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n// GNU General Public License for more details.\r\n//\r\n// You should have received a copy of the GNU General Public License\r\n// along with Leaflet.Geodesic. If not, see .\r\n\r\n\r\n/** Extend Number object with method to convert numeric degrees to radians */\r\nif (typeof Number.prototype.toRadians === \"undefined\") {\r\n Number.prototype.toRadians = function() {\r\n return this * Math.PI / 180;\r\n };\r\n}\r\n\r\n/** Extend Number object with method to convert radians to numeric (signed) degrees */\r\nif (typeof Number.prototype.toDegrees === \"undefined\") {\r\n Number.prototype.toDegrees = function() {\r\n return this * 180 / Math.PI;\r\n };\r\n}\r\n\r\nvar INTERSECT_LNG = 179.999; // Lng used for intersection and wrap around on map edges\r\n\r\nL.Geodesic = L.Polyline.extend({\r\n options: {\r\n color: \"blue\",\r\n steps: 10,\r\n dash: 1,\r\n wrap: true\r\n },\r\n\r\n initialize: function(latlngs, options) {\r\n this.options = this._merge_options(this.options, options);\r\n this.options.dash = Math.max(1e-3, Math.min(1, parseFloat(this.options.dash) || 1));\r\n this.datum = {};\r\n this.datum.ellipsoid = {\r\n a: 6378137,\r\n b: 6356752.3142,\r\n f: 1 / 298.257223563\r\n }; // WGS-84\r\n this._latlngs = this._generate_Geodesic(latlngs);\r\n L.Polyline.prototype.initialize.call(this, this._latlngs, this.options);\r\n },\r\n\r\n setLatLngs: function(latlngs) {\r\n this._latlngs = this._generate_Geodesic(latlngs);\r\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\r\n },\r\n\r\n /**\r\n * Calculates some statistic values of current geodesic multipolyline\r\n * @returns (Object} Object with several properties (e.g. overall distance)\r\n */\r\n getStats: function() {\r\n let obj = {\r\n distance: 0,\r\n points: 0,\r\n polygons: this._latlngs.length\r\n }, poly, points;\r\n\r\n for (poly = 0; poly < this._latlngs.length; poly++) {\r\n obj.points += this._latlngs[poly].length;\r\n for (points = 0; points < (this._latlngs[poly].length - 1); points++) {\r\n obj.distance += this._vincenty_inverse(this._latlngs[poly][points],\r\n this._latlngs[poly][points + 1]).distance;\r\n }\r\n }\r\n return obj;\r\n },\r\n\r\n\r\n /**\r\n * Creates geodesic lines from geoJson. Replaces all current features of this instance.\r\n * Supports LineString, MultiLineString and Polygon\r\n * @param {Object} geojson - geosjon as object.\r\n */\r\n geoJson: function(geojson) {\r\n\r\n let normalized = L.GeoJSON.asFeature(geojson);\r\n let features = normalized.type === \"FeatureCollection\" ? normalized.features : [\r\n normalized\r\n ];\r\n this._latlngs = [];\r\n for (let feature of features) {\r\n let geometry = feature.type === \"Feature\" ? feature.geometry :\r\n feature,\r\n coords = geometry.coordinates;\r\n\r\n switch (geometry.type) {\r\n case \"LineString\":\r\n this._latlngs.push(this._generate_Geodesic([L.GeoJSON.coordsToLatLngs(\r\n coords, 0)]));\r\n break;\r\n case \"MultiLineString\":\r\n case \"Polygon\":\r\n this._latlngs.push(this._generate_Geodesic(L.GeoJSON.coordsToLatLngs(\r\n coords, 1)));\r\n break;\r\n case \"Point\":\r\n case \"MultiPoint\":\r\n console.log(\"Dude, points can't be drawn as geodesic lines...\");\r\n break;\r\n default:\r\n console.log(\"Drawing \" + geometry.type +\r\n \" as a geodesic is not supported. Skipping...\");\r\n }\r\n }\r\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\r\n },\r\n\r\n /**\r\n * Creates a great circle. Replaces all current lines.\r\n * @param {Object} center - geographic position\r\n * @param {number} radius - radius of the circle in metres\r\n */\r\n createCircle: function(center, radius) {\r\n let polylineIndex = 0;\r\n let prev = {\r\n lat: 0,\r\n lng: 0,\r\n brg: 0\r\n };\r\n let step;\r\n\r\n this._latlngs = [];\r\n this._latlngs[polylineIndex] = [];\r\n\r\n let direct = this._vincenty_direct(L.latLng(center), 0, radius, this.options\r\n .wrap);\r\n prev = L.latLng(direct.lat, direct.lng);\r\n this._latlngs[polylineIndex].push(prev);\r\n for (step = 1; step <= this.options.steps;) {\r\n direct = this._vincenty_direct(L.latLng(center), 360 / this.options\r\n .steps * step, radius, this.options.wrap);\r\n let gp = L.latLng(direct.lat, direct.lng);\r\n if (Math.abs(gp.lng - prev.lng) > 180) {\r\n let inverse = this._vincenty_inverse(prev, gp);\r\n let sec = this._intersection(prev, inverse.initialBearing, {\r\n lat: -89,\r\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\r\n }, 0);\r\n if (sec) {\r\n this._latlngs[polylineIndex].push(L.latLng(sec.lat, sec.lng));\r\n polylineIndex++;\r\n this._latlngs[polylineIndex] = [];\r\n prev = L.latLng(sec.lat, -sec.lng);\r\n this._latlngs[polylineIndex].push(prev);\r\n } else {\r\n polylineIndex++;\r\n this._latlngs[polylineIndex] = [];\r\n this._latlngs[polylineIndex].push(gp);\r\n prev = gp;\r\n step++;\r\n }\r\n } else {\r\n this._latlngs[polylineIndex].push(gp);\r\n prev = gp;\r\n step++;\r\n }\r\n }\r\n\r\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\r\n },\r\n\r\n /**\r\n * Creates a geodesic Polyline from given coordinates\r\n * Note: dashed lines are under work\r\n * @param {Object} latlngs - One or more polylines as an array. See Leaflet doc about Polyline\r\n * @returns (Object} An array of arrays of geographical points.\r\n */\r\n _generate_Geodesic: function(latlngs) {\r\n let _geo = [], _geocnt = 0;\r\n\r\n for (let poly = 0; poly < latlngs.length; poly++) {\r\n _geo[_geocnt] = [];\r\n let prev = L.latLng(latlngs[poly][0]);\r\n for (let points = 0; points < (latlngs[poly].length - 1); points++) {\r\n // use prev, so that wrapping behaves correctly\r\n let pointA = prev;\r\n let pointB = L.latLng(latlngs[poly][points + 1]);\r\n if (pointA.equals(pointB)) {\r\n continue;\r\n }\r\n let inverse = this._vincenty_inverse(pointA, pointB);\r\n _geo[_geocnt].push(prev);\r\n for (let s = 1; s <= this.options.steps;) {\r\n let distance = inverse.distance / this.options.steps;\r\n // dashed lines don't go the full distance between the points\r\n let dist_mult = s - 1 + this.options.dash;\r\n let direct = this._vincenty_direct(pointA, inverse.initialBearing, distance*dist_mult, this.options.wrap);\r\n let gp = L.latLng(direct.lat, direct.lng);\r\n if (Math.abs(gp.lng - prev.lng) > 180) {\r\n let sec = this._intersection(pointA, inverse.initialBearing, {\r\n lat: -89,\r\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\r\n }, 0);\r\n if (sec) {\r\n _geo[_geocnt].push(L.latLng(sec.lat, sec.lng));\r\n _geocnt++;\r\n _geo[_geocnt] = [];\r\n prev = L.latLng(sec.lat, -sec.lng);\r\n _geo[_geocnt].push(prev);\r\n } else {\r\n _geocnt++;\r\n _geo[_geocnt] = [];\r\n _geo[_geocnt].push(gp);\r\n prev = gp;\r\n s++;\r\n } \r\n } else {\r\n _geo[_geocnt].push(gp);\r\n // Dashed lines start a new line\r\n if (this.options.dash < 1){\r\n _geocnt++;\r\n // go full distance this time, to get starting point for next line\r\n let direct_full = this._vincenty_direct(pointA, inverse.initialBearing, distance*s, this.options.wrap);\r\n _geo[_geocnt] = [];\r\n prev = L.latLng(direct_full.lat, direct_full.lng);\r\n _geo[_geocnt].push(prev);\r\n }\r\n else prev = gp;\r\n s++;\r\n }\r\n }\r\n }\r\n _geocnt++;\r\n }\r\n return _geo;\r\n },\r\n\r\n /**\r\n * Vincenty direct calculation.\r\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\r\n *\r\n * @private\r\n * @param {number} initialBearing - Initial bearing in degrees from north.\r\n * @param {number} distance - Distance along bearing in metres.\r\n * @returns (Object} Object including point (destination point), finalBearing.\r\n */\r\n\r\n _vincenty_direct: function(p1, initialBearing, distance, wrap) {\r\n var φ1 = p1.lat.toRadians(),\r\n λ1 = p1.lng.toRadians();\r\n var α1 = initialBearing.toRadians();\r\n var s = distance;\r\n\r\n var a = this.datum.ellipsoid.a,\r\n b = this.datum.ellipsoid.b,\r\n f = this.datum.ellipsoid.f;\r\n\r\n var sinα1 = Math.sin(α1);\r\n var cosα1 = Math.cos(α1);\r\n\r\n var tanU1 = (1 - f) * Math.tan(φ1),\r\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\r\n sinU1 = tanU1 * cosU1;\r\n var σ1 = Math.atan2(tanU1, cosα1);\r\n var sinα = cosU1 * sinα1;\r\n var cosSqα = 1 - sinα * sinα;\r\n var uSq = cosSqα * (a * a - b * b) / (b * b);\r\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\r\n uSq)));\r\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\r\n\r\n var σ = s / (b * A),\r\n σʹ, iterations = 0;\r\n var sinσ, cosσ;\r\n var cos2σM;\r\n do {\r\n cos2σM = Math.cos(2 * σ1 + σ);\r\n sinσ = Math.sin(σ);\r\n cosσ = Math.cos(σ);\r\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\r\n cos2σM) -\r\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\r\n cos2σM)));\r\n σʹ = σ;\r\n σ = s / (b * A) + Δσ;\r\n } while (Math.abs(σ - σʹ) > 1e-12 && ++iterations);\r\n\r\n var x = sinU1 * sinσ - cosU1 * cosσ * cosα1;\r\n var φ2 = Math.atan2(sinU1 * cosσ + cosU1 * sinσ * cosα1, (1 - f) *\r\n Math.sqrt(sinα * sinα + x * x));\r\n var λ = Math.atan2(sinσ * sinα1, cosU1 * cosσ - sinU1 * sinσ * cosα1);\r\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\r\n var L = λ - (1 - C) * f * sinα *\r\n (σ + C * sinσ * (cos2σM + C * cosσ * (-1 + 2 * cos2σM * cos2σM)));\r\n\r\n var λ2;\r\n if (wrap) {\r\n λ2 = (λ1 + L + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180...+180\r\n } else {\r\n λ2 = (λ1 + L); // do not normalize\r\n }\r\n\r\n var revAz = Math.atan2(sinα, -x);\r\n\r\n return {\r\n lat: φ2.toDegrees(),\r\n lng: λ2.toDegrees(),\r\n finalBearing: revAz.toDegrees()\r\n };\r\n },\r\n\r\n /**\r\n * Vincenty inverse calculation.\r\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\r\n *\r\n * @private\r\n * @param {LatLng} p1 - Latitude/longitude of start point.\r\n * @param {LatLng} p2 - Latitude/longitude of destination point.\r\n * @returns {Object} Object including distance, initialBearing, finalBearing.\r\n * @throws {Error} If formula failed to converge.\r\n */\r\n _vincenty_inverse: function(p1, p2) {\r\n var φ1 = p1.lat.toRadians(),\r\n λ1 = p1.lng.toRadians();\r\n var φ2 = p2.lat.toRadians(),\r\n λ2 = p2.lng.toRadians();\r\n\r\n var a = this.datum.ellipsoid.a,\r\n b = this.datum.ellipsoid.b,\r\n f = this.datum.ellipsoid.f;\r\n\r\n var L = λ2 - λ1;\r\n var tanU1 = (1 - f) * Math.tan(φ1),\r\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\r\n sinU1 = tanU1 * cosU1;\r\n var tanU2 = (1 - f) * Math.tan(φ2),\r\n cosU2 = 1 / Math.sqrt((1 + tanU2 * tanU2)),\r\n sinU2 = tanU2 * cosU2;\r\n\r\n var λ = L,\r\n λʹ, iterations = 0;\r\n var cosSqα, sinσ, cos2σM, cosσ, σ, sinλ, cosλ;\r\n do {\r\n sinλ = Math.sin(λ);\r\n cosλ = Math.cos(λ);\r\n var sinSqσ = (cosU2 * sinλ) * (cosU2 * sinλ) + (cosU1 * sinU2 -\r\n sinU1 * cosU2 * cosλ) * (cosU1 * sinU2 - sinU1 * cosU2 * cosλ);\r\n sinσ = Math.sqrt(sinSqσ);\r\n if (sinσ == 0) return 0; // co-incident points\r\n cosσ = sinU1 * sinU2 + cosU1 * cosU2 * cosλ;\r\n σ = Math.atan2(sinσ, cosσ);\r\n var sinα = cosU1 * cosU2 * sinλ / sinσ;\r\n cosSqα = 1 - sinα * sinα;\r\n cos2σM = cosσ - 2 * sinU1 * sinU2 / cosSqα;\r\n if (isNaN(cos2σM)) cos2σM = 0; // equatorial line: cosSqα=0 (§6)\r\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\r\n λʹ = λ;\r\n λ = L + (1 - C) * f * sinα * (σ + C * sinσ * (cos2σM + C * cosσ * (-\r\n 1 + 2 * cos2σM * cos2σM)));\r\n } while (Math.abs(λ - λʹ) > 1e-12 && ++iterations < 100);\r\n if (iterations >= 100) {\r\n console.log(\"Formula failed to converge. Altering target position.\");\r\n return this._vincenty_inverse(p1, {\r\n lat: p2.lat,\r\n lng: p2.lng - 0.01\r\n });\r\n // throw new Error('Formula failed to converge');\r\n }\r\n\r\n var uSq = cosSqα * (a * a - b * b) / (b * b);\r\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\r\n uSq)));\r\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\r\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\r\n cos2σM) -\r\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\r\n cos2σM)));\r\n\r\n var s = b * A * (σ - Δσ);\r\n\r\n var fwdAz = Math.atan2(cosU2 * sinλ, cosU1 * sinU2 - sinU1 * cosU2 *\r\n cosλ);\r\n var revAz = Math.atan2(cosU1 * sinλ, -sinU1 * cosU2 + cosU1 * sinU2 *\r\n cosλ);\r\n\r\n s = Number(s.toFixed(3)); // round to 1mm precision\r\n return {\r\n distance: s,\r\n initialBearing: fwdAz.toDegrees(),\r\n finalBearing: revAz.toDegrees()\r\n };\r\n },\r\n\r\n\r\n /**\r\n * Returns the point of intersection of two paths defined by point and bearing.\r\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\r\n *\r\n * @param {LatLon} p1 - First point.\r\n * @param {number} brng1 - Initial bearing from first point.\r\n * @param {LatLon} p2 - Second point.\r\n * @param {number} brng2 - Initial bearing from second point.\r\n * @returns {Object} containing lat/lng information of intersection.\r\n *\r\n * @example\r\n * var p1 = LatLon(51.8853, 0.2545), brng1 = 108.55;\r\n * var p2 = LatLon(49.0034, 2.5735), brng2 = 32.44;\r\n * var pInt = LatLon.intersection(p1, brng1, p2, brng2); // pInt.toString(): 50.9078°N, 4.5084°E\r\n */\r\n _intersection: function(p1, brng1, p2, brng2) {\r\n // see http://williams.best.vwh.net/avform.htm#Intersection\r\n\r\n var φ1 = p1.lat.toRadians(),\r\n λ1 = p1.lng.toRadians();\r\n var φ2 = p2.lat.toRadians(),\r\n λ2 = p2.lng.toRadians();\r\n var θ13 = Number(brng1).toRadians(),\r\n θ23 = Number(brng2).toRadians();\r\n var Δφ = φ2 - φ1,\r\n Δλ = λ2 - λ1;\r\n\r\n var δ12 = 2 * Math.asin(Math.sqrt(Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +\r\n Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ /\r\n 2)));\r\n if (δ12 == 0) return null;\r\n\r\n // initial/final bearings between points\r\n var θ1 = Math.acos((Math.sin(φ2) - Math.sin(φ1) * Math.cos(δ12)) /\r\n (Math.sin(δ12) * Math.cos(φ1)));\r\n if (isNaN(θ1)) θ1 = 0; // protect against rounding\r\n var θ2 = Math.acos((Math.sin(φ1) - Math.sin(φ2) * Math.cos(δ12)) /\r\n (Math.sin(δ12) * Math.cos(φ2)));\r\n var θ12, θ21;\r\n if (Math.sin(λ2 - λ1) > 0) {\r\n θ12 = θ1;\r\n θ21 = 2 * Math.PI - θ2;\r\n } else {\r\n θ12 = 2 * Math.PI - θ1;\r\n θ21 = θ2;\r\n }\r\n\r\n var α1 = (θ13 - θ12 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 2-1-3\r\n var α2 = (θ21 - θ23 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 1-2-3\r\n\r\n if (Math.sin(α1) == 0 && Math.sin(α2) == 0) return null; // infinite intersections\r\n if (Math.sin(α1) * Math.sin(α2) < 0) return null; // ambiguous intersection\r\n\r\n //α1 = Math.abs(α1);\r\n //α2 = Math.abs(α2);\r\n // ... Ed Williams takes abs of α1/α2, but seems to break calculation?\r\n\r\n var α3 = Math.acos(-Math.cos(α1) * Math.cos(α2) +\r\n Math.sin(α1) * Math.sin(α2) * Math.cos(δ12));\r\n var δ13 = Math.atan2(Math.sin(δ12) * Math.sin(α1) * Math.sin(α2),\r\n Math.cos(α2) + Math.cos(α1) * Math.cos(α3));\r\n var φ3 = Math.asin(Math.sin(φ1) * Math.cos(δ13) +\r\n Math.cos(φ1) * Math.sin(δ13) * Math.cos(θ13));\r\n var Δλ13 = Math.atan2(Math.sin(θ13) * Math.sin(δ13) * Math.cos(φ1),\r\n Math.cos(δ13) - Math.sin(φ1) * Math.sin(φ3));\r\n var λ3 = λ1 + Δλ13;\r\n λ3 = (λ3 + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180..+180º\r\n\r\n return {\r\n lat: φ3.toDegrees(),\r\n lng: λ3.toDegrees()\r\n };\r\n },\r\n\r\n /**\r\n * Overwrites obj1's values with obj2's and adds obj2's if non existent in obj1\r\n * @param obj1\r\n * @param obj2\r\n * @returns obj3 a new object based on obj1 and obj2\r\n */\r\n _merge_options: function(obj1, obj2) {\r\n let obj3 = {};\r\n for (let attrname in obj1) {\r\n obj3[attrname] = obj1[attrname];\r\n }\r\n for (let attrname in obj2) {\r\n obj3[attrname] = obj2[attrname];\r\n }\r\n return obj3;\r\n }\r\n});\r\n\r\nL.geodesic = function(latlngs, options) {\r\n return new L.Geodesic(latlngs, options);\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzPzU3NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxrQkFBa0IsNkJBQTZCO0FBQy9DO0FBQ0Esc0JBQXNCLDJDQUEyQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JB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QUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9MZWFmbGV0Lkdlb2Rlc2ljL0xlYWZsZXQuR2VvZGVzaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbi8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExlYWZsZXQuR2VvZGVzaWMuXHJcbi8vIENvcHlyaWdodCAoQykgMjAxNyAgSGVucnkgVGhhc2xlclxyXG4vLyBiYXNlZCBvbiBjb2RlIGJ5IENocmlzIFZlbmVzcyBDb3B5cmlnaHQgKEMpIDIwMTQgaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdmVuZXNzL2dlb2Rlc3lcclxuLy9cclxuLy8gTGVhZmxldC5HZW9kZXNpYyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbi8vIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbi8vXHJcbi8vIExlYWZsZXQuR2VvZGVzaWMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxyXG4vLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4vL1xyXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4vLyBhbG9uZyB3aXRoIExlYWZsZXQuR2VvZGVzaWMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcblxyXG5cclxuLyoqIEV4dGVuZCBOdW1iZXIgb2JqZWN0IHdpdGggbWV0aG9kIHRvIGNvbnZlcnQgbnVtZXJpYyBkZWdyZWVzIHRvIHJhZGlhbnMgKi9cclxuaWYgKHR5cGVvZiBOdW1iZXIucHJvdG90eXBlLnRvUmFkaWFucyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gIE51bWJlci5wcm90b3R5cGUudG9SYWRpYW5zID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcyAqIE1hdGguUEkgLyAxODA7XHJcbiAgfTtcclxufVxyXG5cclxuLyoqIEV4dGVuZCBOdW1iZXIgb2JqZWN0IHdpdGggbWV0aG9kIHRvIGNvbnZlcnQgcmFkaWFucyB0byBudW1lcmljIChzaWduZWQpIGRlZ3JlZXMgKi9cclxuaWYgKHR5cGVvZiBOdW1iZXIucHJvdG90eXBlLnRvRGVncmVlcyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gIE51bWJlci5wcm90b3R5cGUudG9EZWdyZWVzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcyAqIDE4MCAvIE1hdGguUEk7XHJcbiAgfTtcclxufVxyXG5cclxudmFyIElOVEVSU0VDVF9MTkcgPSAxNzkuOTk5OyAvLyBMbmcgdXNlZCBmb3IgaW50ZXJzZWN0aW9uIGFuZCB3cmFwIGFyb3VuZCBvbiBtYXAgZWRnZXNcclxuXHJcbkwuR2VvZGVzaWMgPSBMLlBvbHlsaW5lLmV4dGVuZCh7XHJcbiAgb3B0aW9uczoge1xyXG4gICAgY29sb3I6IFwiYmx1ZVwiLFxyXG4gICAgc3RlcHM6IDEwLFxyXG4gICAgZGFzaDogMSxcclxuICAgIHdyYXA6IHRydWVcclxuICB9LFxyXG5cclxuICBpbml0aWFsaXplOiBmdW5jdGlvbihsYXRsbmdzLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLl9tZXJnZV9vcHRpb25zKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMuZGFzaCA9IE1hdGgubWF4KDFlLTMsIE1hdGgubWluKDEsIHBhcnNlRmxvYXQodGhpcy5vcHRpb25zLmRhc2gpIHx8IDEpKTtcclxuICAgIHRoaXMuZGF0dW0gPSB7fTtcclxuICAgIHRoaXMuZGF0dW0uZWxsaXBzb2lkID0ge1xyXG4gICAgICAgIGE6IDYzNzgxMzcsXHJcbiAgICAgICAgYjogNjM1Njc1Mi4zMTQyLFxyXG4gICAgICAgIGY6IDEgLyAyOTguMjU3MjIzNTYzXHJcbiAgICAgIH07IC8vIFdHUy04NFxyXG4gICAgdGhpcy5fbGF0bG5ncyA9IHRoaXMuX2dlbmVyYXRlX0dlb2Rlc2ljKGxhdGxuZ3MpO1xyXG4gICAgTC5Qb2x5bGluZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIHRoaXMuX2xhdGxuZ3MsIHRoaXMub3B0aW9ucyk7XHJcbiAgfSxcclxuXHJcbiAgc2V0TGF0TG5nczogZnVuY3Rpb24obGF0bG5ncykge1xyXG4gICAgdGhpcy5fbGF0bG5ncyA9IHRoaXMuX2dlbmVyYXRlX0dlb2Rlc2ljKGxhdGxuZ3MpO1xyXG4gICAgTC5Qb2x5bGluZS5wcm90b3R5cGUuc2V0TGF0TG5ncy5jYWxsKHRoaXMsIHRoaXMuX2xhdGxuZ3MpO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgc29tZSBzdGF0aXN0aWMgdmFsdWVzIG9mIGN1cnJlbnQgZ2VvZGVzaWMgbXVsdGlwb2x5bGluZVxyXG4gICAqIEByZXR1cm5zIChPYmplY3R9IE9iamVjdCB3aXRoIHNldmVyYWwgcHJvcGVydGllcyAoZS5nLiBvdmVyYWxsIGRpc3RhbmNlKVxyXG4gICAqL1xyXG4gIGdldFN0YXRzOiBmdW5jdGlvbigpIHtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgZGlzdGFuY2U6IDAsXHJcbiAgICAgICAgcG9pbnRzOiAwLFxyXG4gICAgICAgIHBvbHlnb25zOiB0aGlzLl9sYXRsbmdzLmxlbmd0aFxyXG4gICAgICB9LCBwb2x5LCBwb2ludHM7XHJcblxyXG4gICAgZm9yIChwb2x5ID0gMDsgcG9seSA8IHRoaXMuX2xhdGxuZ3MubGVuZ3RoOyBwb2x5KyspIHtcclxuICAgICAgb2JqLnBvaW50cyArPSB0aGlzLl9sYXRsbmdzW3BvbHldLmxlbmd0aDtcclxuICAgICAgZm9yIChwb2ludHMgPSAwOyBwb2ludHMgPCAodGhpcy5fbGF0bG5nc1twb2x5XS5sZW5ndGggLSAxKTsgcG9pbnRzKyspIHtcclxuICAgICAgICBvYmouZGlzdGFuY2UgKz0gdGhpcy5fdmluY2VudHlfaW52ZXJzZSh0aGlzLl9sYXRsbmdzW3BvbHldW3BvaW50c10sXHJcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHldW3BvaW50cyArIDFdKS5kaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9LFxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBnZW9kZXNpYyBsaW5lcyBmcm9tIGdlb0pzb24uIFJlcGxhY2VzIGFsbCBjdXJyZW50IGZlYXR1cmVzIG9mIHRoaXMgaW5zdGFuY2UuXHJcbiAgICogU3VwcG9ydHMgTGluZVN0cmluZywgTXVsdGlMaW5lU3RyaW5nIGFuZCBQb2x5Z29uXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGdlb2pzb24gLSBnZW9zam9uIGFzIG9iamVjdC5cclxuICAgKi9cclxuICBnZW9Kc29uOiBmdW5jdGlvbihnZW9qc29uKSB7XHJcblxyXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBMLkdlb0pTT04uYXNGZWF0dXJlKGdlb2pzb24pO1xyXG4gICAgbGV0IGZlYXR1cmVzID0gbm9ybWFsaXplZC50eXBlID09PSBcIkZlYXR1cmVDb2xsZWN0aW9uXCIgPyBub3JtYWxpemVkLmZlYXR1cmVzIDogW1xyXG4gICAgICBub3JtYWxpemVkXHJcbiAgICBdO1xyXG4gICAgdGhpcy5fbGF0bG5ncyA9IFtdO1xyXG4gICAgZm9yIChsZXQgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICBsZXQgZ2VvbWV0cnkgPSBmZWF0dXJlLnR5cGUgPT09IFwiRmVhdHVyZVwiID8gZmVhdHVyZS5nZW9tZXRyeSA6XHJcbiAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICBjb29yZHMgPSBnZW9tZXRyeS5jb29yZGluYXRlcztcclxuXHJcbiAgICAgIHN3aXRjaCAoZ2VvbWV0cnkudHlwZSkge1xyXG4gICAgICAgIGNhc2UgXCJMaW5lU3RyaW5nXCI6XHJcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzLnB1c2godGhpcy5fZ2VuZXJhdGVfR2VvZGVzaWMoW0wuR2VvSlNPTi5jb29yZHNUb0xhdExuZ3MoXHJcbiAgICAgICAgICAgIGNvb3JkcywgMCldKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiTXVsdGlMaW5lU3RyaW5nXCI6XHJcbiAgICAgICAgY2FzZSBcIlBvbHlnb25cIjpcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3MucHVzaCh0aGlzLl9nZW5lcmF0ZV9HZW9kZXNpYyhMLkdlb0pTT04uY29vcmRzVG9MYXRMbmdzKFxyXG4gICAgICAgICAgICBjb29yZHMsIDEpKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiUG9pbnRcIjpcclxuICAgICAgICBjYXNlIFwiTXVsdGlQb2ludFwiOlxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJEdWRlLCBwb2ludHMgY2FuJ3QgYmUgZHJhd24gYXMgZ2VvZGVzaWMgbGluZXMuLi5cIik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJEcmF3aW5nIFwiICsgZ2VvbWV0cnkudHlwZSArXHJcbiAgICAgICAgICAgIFwiIGFzIGEgZ2VvZGVzaWMgaXMgbm90IHN1cHBvcnRlZC4gU2tpcHBpbmcuLi5cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZ3JlYXQgY2lyY2xlLiBSZXBsYWNlcyBhbGwgY3VycmVudCBsaW5lcy5cclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2VudGVyIC0gZ2VvZ3JhcGhpYyBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSByYWRpdXMgb2YgdGhlIGNpcmNsZSBpbiBtZXRyZXNcclxuICAgKi9cclxuICBjcmVhdGVDaXJjbGU6IGZ1bmN0aW9uKGNlbnRlciwgcmFkaXVzKSB7XHJcbiAgICBsZXQgcG9seWxpbmVJbmRleCA9IDA7XHJcbiAgICBsZXQgcHJldiA9IHtcclxuICAgICAgbGF0OiAwLFxyXG4gICAgICBsbmc6IDAsXHJcbiAgICAgIGJyZzogMFxyXG4gICAgfTtcclxuICAgIGxldCBzdGVwO1xyXG5cclxuICAgIHRoaXMuX2xhdGxuZ3MgPSBbXTtcclxuICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcclxuXHJcbiAgICBsZXQgZGlyZWN0ID0gdGhpcy5fdmluY2VudHlfZGlyZWN0KEwubGF0TG5nKGNlbnRlciksIDAsIHJhZGl1cywgdGhpcy5vcHRpb25zXHJcbiAgICAgIC53cmFwKTtcclxuICAgIHByZXYgPSBMLmxhdExuZyhkaXJlY3QubGF0LCBkaXJlY3QubG5nKTtcclxuICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChwcmV2KTtcclxuICAgIGZvciAoc3RlcCA9IDE7IHN0ZXAgPD0gdGhpcy5vcHRpb25zLnN0ZXBzOykge1xyXG4gICAgICBkaXJlY3QgPSB0aGlzLl92aW5jZW50eV9kaXJlY3QoTC5sYXRMbmcoY2VudGVyKSwgMzYwIC8gdGhpcy5vcHRpb25zXHJcbiAgICAgICAgLnN0ZXBzICogc3RlcCwgcmFkaXVzLCB0aGlzLm9wdGlvbnMud3JhcCk7XHJcbiAgICAgIGxldCBncCA9IEwubGF0TG5nKGRpcmVjdC5sYXQsIGRpcmVjdC5sbmcpO1xyXG4gICAgICBpZiAoTWF0aC5hYnMoZ3AubG5nIC0gcHJldi5sbmcpID4gMTgwKSB7XHJcbiAgICAgICAgbGV0IGludmVyc2UgPSB0aGlzLl92aW5jZW50eV9pbnZlcnNlKHByZXYsIGdwKTtcclxuICAgICAgICBsZXQgc2VjID0gdGhpcy5faW50ZXJzZWN0aW9uKHByZXYsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIHtcclxuICAgICAgICAgIGxhdDogLTg5LFxyXG4gICAgICAgICAgbG5nOiAoKGdwLmxuZyAtIHByZXYubG5nKSA+IDApID8gLUlOVEVSU0VDVF9MTkcgOiBJTlRFUlNFQ1RfTE5HXHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgaWYgKHNlYykge1xyXG4gICAgICAgICAgdGhpcy5fbGF0bG5nc1twb2x5bGluZUluZGV4XS5wdXNoKEwubGF0TG5nKHNlYy5sYXQsIHNlYy5sbmcpKTtcclxuICAgICAgICAgIHBvbHlsaW5lSW5kZXgrKztcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcclxuICAgICAgICAgIHByZXYgPSBMLmxhdExuZyhzZWMubGF0LCAtc2VjLmxuZyk7XHJcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2gocHJldik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBvbHlsaW5lSW5kZXgrKztcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChncCk7XHJcbiAgICAgICAgICBwcmV2ID0gZ3A7XHJcbiAgICAgICAgICBzdGVwKys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChncCk7XHJcbiAgICAgICAgcHJldiA9IGdwO1xyXG4gICAgICAgIHN0ZXArKztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZ2VvZGVzaWMgUG9seWxpbmUgZnJvbSBnaXZlbiBjb29yZGluYXRlc1xyXG4gICAqIE5vdGU6IGRhc2hlZCBsaW5lcyBhcmUgdW5kZXIgd29ya1xyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBsYXRsbmdzIC0gT25lIG9yIG1vcmUgcG9seWxpbmVzIGFzIGFuIGFycmF5LiBTZWUgTGVhZmxldCBkb2MgYWJvdXQgUG9seWxpbmVcclxuICAgKiBAcmV0dXJucyAoT2JqZWN0fSBBbiBhcnJheSBvZiBhcnJheXMgb2YgZ2VvZ3JhcGhpY2FsIHBvaW50cy5cclxuICAgKi9cclxuICBfZ2VuZXJhdGVfR2VvZGVzaWM6IGZ1bmN0aW9uKGxhdGxuZ3MpIHtcclxuICAgIGxldCBfZ2VvID0gW10sIF9nZW9jbnQgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IHBvbHkgPSAwOyBwb2x5IDwgbGF0bG5ncy5sZW5ndGg7IHBvbHkrKykge1xyXG4gICAgICBfZ2VvW19nZW9jbnRdID0gW107XHJcbiAgICAgIGxldCBwcmV2ID0gTC5sYXRMbmcobGF0bG5nc1twb2x5XVswXSk7XHJcbiAgICAgIGZvciAobGV0IHBvaW50cyA9IDA7IHBvaW50cyA8IChsYXRsbmdzW3BvbHldLmxlbmd0aCAtIDEpOyBwb2ludHMrKykge1xyXG4gICAgICAgIC8vIHVzZSBwcmV2LCBzbyB0aGF0IHdyYXBwaW5nIGJlaGF2ZXMgY29ycmVjdGx5XHJcbiAgICAgICAgbGV0IHBvaW50QSA9IHByZXY7XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IEwubGF0TG5nKGxhdGxuZ3NbcG9seV1bcG9pbnRzICsgMV0pO1xyXG4gICAgICAgIGlmIChwb2ludEEuZXF1YWxzKHBvaW50QikpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaW52ZXJzZSA9IHRoaXMuX3ZpbmNlbnR5X2ludmVyc2UocG9pbnRBLCBwb2ludEIpO1xyXG4gICAgICAgIF9nZW9bX2dlb2NudF0ucHVzaChwcmV2KTtcclxuICAgICAgICBmb3IgKGxldCBzID0gMTsgcyA8PSB0aGlzLm9wdGlvbnMuc3RlcHM7KSB7XHJcbiAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBpbnZlcnNlLmRpc3RhbmNlIC8gdGhpcy5vcHRpb25zLnN0ZXBzO1xyXG4gICAgICAgICAgLy8gZGFzaGVkIGxpbmVzIGRvbid0IGdvIHRoZSBmdWxsIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBvaW50c1xyXG4gICAgICAgICAgbGV0IGRpc3RfbXVsdCA9IHMgLSAxICsgdGhpcy5vcHRpb25zLmRhc2g7XHJcbiAgICAgICAgICBsZXQgZGlyZWN0ID0gdGhpcy5fdmluY2VudHlfZGlyZWN0KHBvaW50QSwgaW52ZXJzZS5pbml0aWFsQmVhcmluZywgZGlzdGFuY2UqZGlzdF9tdWx0LCB0aGlzLm9wdGlvbnMud3JhcCk7XHJcbiAgICAgICAgICBsZXQgZ3AgPSBMLmxhdExuZyhkaXJlY3QubGF0LCBkaXJlY3QubG5nKTtcclxuICAgICAgICAgIGlmIChNYXRoLmFicyhncC5sbmcgLSBwcmV2LmxuZykgPiAxODApIHtcclxuICAgICAgICAgICAgbGV0IHNlYyA9IHRoaXMuX2ludGVyc2VjdGlvbihwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIHtcclxuICAgICAgICAgICAgICBsYXQ6IC04OSxcclxuICAgICAgICAgICAgICBsbmc6ICgoZ3AubG5nIC0gcHJldi5sbmcpID4gMCkgPyAtSU5URVJTRUNUX0xORyA6IElOVEVSU0VDVF9MTkdcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIGlmIChzZWMpIHtcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2goTC5sYXRMbmcoc2VjLmxhdCwgc2VjLmxuZykpO1xyXG4gICAgICAgICAgICAgIF9nZW9jbnQrKztcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdID0gW107XHJcbiAgICAgICAgICAgICAgcHJldiA9IEwubGF0TG5nKHNlYy5sYXQsIC1zZWMubG5nKTtcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2gocHJldik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgX2dlb2NudCsrO1xyXG4gICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0gPSBbXTtcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2goZ3ApO1xyXG4gICAgICAgICAgICAgIHByZXYgPSBncDtcclxuICAgICAgICAgICAgICBzKys7XHJcbiAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgX2dlb1tfZ2VvY250XS5wdXNoKGdwKTtcclxuICAgICAgICAgICAgLy8gRGFzaGVkIGxpbmVzIHN0YXJ0IGEgbmV3IGxpbmVcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXNoIDwgMSl7XHJcbiAgICAgICAgICAgICAgICBfZ2VvY250Kys7XHJcbiAgICAgICAgICAgICAgICAvLyBnbyBmdWxsIGRpc3RhbmNlIHRoaXMgdGltZSwgdG8gZ2V0IHN0YXJ0aW5nIHBvaW50IGZvciBuZXh0IGxpbmVcclxuICAgICAgICAgICAgICAgIGxldCBkaXJlY3RfZnVsbCA9IHRoaXMuX3ZpbmNlbnR5X2RpcmVjdChwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlKnMsIHRoaXMub3B0aW9ucy53cmFwKTtcclxuICAgICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0gPSBbXTtcclxuICAgICAgICAgICAgICAgIHByZXYgPSBMLmxhdExuZyhkaXJlY3RfZnVsbC5sYXQsIGRpcmVjdF9mdWxsLmxuZyk7XHJcbiAgICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2gocHJldik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBwcmV2ID0gZ3A7XHJcbiAgICAgICAgICAgIHMrKztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgX2dlb2NudCsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9nZW87XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogVmluY2VudHkgZGlyZWN0IGNhbGN1bGF0aW9uLlxyXG4gICAqIGJhc2VkIG9uIHRoZSB3b3JrIG9mIENocmlzIFZlbmVzcyAoaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdmVuZXNzL2dlb2Rlc3kpXHJcbiAgICpcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsQmVhcmluZyAtIEluaXRpYWwgYmVhcmluZyBpbiBkZWdyZWVzIGZyb20gbm9ydGguXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRpc3RhbmNlIC0gRGlzdGFuY2UgYWxvbmcgYmVhcmluZyBpbiBtZXRyZXMuXHJcbiAgICogQHJldHVybnMgKE9iamVjdH0gT2JqZWN0IGluY2x1ZGluZyBwb2ludCAoZGVzdGluYXRpb24gcG9pbnQpLCBmaW5hbEJlYXJpbmcuXHJcbiAgICovXHJcblxyXG4gIF92aW5jZW50eV9kaXJlY3Q6IGZ1bmN0aW9uKHAxLCBpbml0aWFsQmVhcmluZywgZGlzdGFuY2UsIHdyYXApIHtcclxuICAgIHZhciDPhjEgPSBwMS5sYXQudG9SYWRpYW5zKCksXHJcbiAgICAgIM67MSA9IHAxLmxuZy50b1JhZGlhbnMoKTtcclxuICAgIHZhciDOsTEgPSBpbml0aWFsQmVhcmluZy50b1JhZGlhbnMoKTtcclxuICAgIHZhciBzID0gZGlzdGFuY2U7XHJcblxyXG4gICAgdmFyIGEgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5hLFxyXG4gICAgICBiID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuYixcclxuICAgICAgZiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmY7XHJcblxyXG4gICAgdmFyIHNpbs6xMSA9IE1hdGguc2luKM6xMSk7XHJcbiAgICB2YXIgY29zzrExID0gTWF0aC5jb3MozrExKTtcclxuXHJcbiAgICB2YXIgdGFuVTEgPSAoMSAtIGYpICogTWF0aC50YW4oz4YxKSxcclxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxyXG4gICAgICBzaW5VMSA9IHRhblUxICogY29zVTE7XHJcbiAgICB2YXIgz4MxID0gTWF0aC5hdGFuMih0YW5VMSwgY29zzrExKTtcclxuICAgIHZhciBzaW7OsSA9IGNvc1UxICogc2luzrExO1xyXG4gICAgdmFyIGNvc1NxzrEgPSAxIC0gc2luzrEgKiBzaW7OsTtcclxuICAgIHZhciB1U3EgPSBjb3NTcc6xICogKGEgKiBhIC0gYiAqIGIpIC8gKGIgKiBiKTtcclxuICAgIHZhciBBID0gMSArIHVTcSAvIDE2Mzg0ICogKDQwOTYgKyB1U3EgKiAoLTc2OCArIHVTcSAqICgzMjAgLSAxNzUgKlxyXG4gICAgICB1U3EpKSk7XHJcbiAgICB2YXIgQiA9IHVTcSAvIDEwMjQgKiAoMjU2ICsgdVNxICogKC0xMjggKyB1U3EgKiAoNzQgLSA0NyAqIHVTcSkpKTtcclxuXHJcbiAgICB2YXIgz4MgPSBzIC8gKGIgKiBBKSxcclxuICAgICAgz4PKuSwgaXRlcmF0aW9ucyA9IDA7XHJcbiAgICB2YXIgc2luz4MsIGNvc8+DO1xyXG4gICAgdmFyIGNvczLPg007XHJcbiAgICBkbyB7XHJcbiAgICAgIGNvczLPg00gPSBNYXRoLmNvcygyICogz4MxICsgz4MpO1xyXG4gICAgICBzaW7PgyA9IE1hdGguc2luKM+DKTtcclxuICAgICAgY29zz4MgPSBNYXRoLmNvcyjPgyk7XHJcbiAgICAgIHZhciDOlM+DID0gQiAqIHNpbs+DICogKGNvczLPg00gKyBCIC8gNCAqIChjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICpcclxuICAgICAgICAgIGNvczLPg00pIC1cclxuICAgICAgICBCIC8gNiAqIGNvczLPg00gKiAoLTMgKyA0ICogc2luz4MgKiBzaW7PgykgKiAoLTMgKyA0ICogY29zMs+DTSAqXHJcbiAgICAgICAgICBjb3Myz4NNKSkpO1xyXG4gICAgICDPg8q5ID0gz4M7XHJcbiAgICAgIM+DID0gcyAvIChiICogQSkgKyDOlM+DO1xyXG4gICAgfSB3aGlsZSAoTWF0aC5hYnMoz4MgLSDPg8q5KSA+IDFlLTEyICYmICsraXRlcmF0aW9ucyk7XHJcblxyXG4gICAgdmFyIHggPSBzaW5VMSAqIHNpbs+DIC0gY29zVTEgKiBjb3PPgyAqIGNvc86xMTtcclxuICAgIHZhciDPhjIgPSBNYXRoLmF0YW4yKHNpblUxICogY29zz4MgKyBjb3NVMSAqIHNpbs+DICogY29zzrExLCAoMSAtIGYpICpcclxuICAgICAgTWF0aC5zcXJ0KHNpbs6xICogc2luzrEgKyB4ICogeCkpO1xyXG4gICAgdmFyIM67ID0gTWF0aC5hdGFuMihzaW7PgyAqIHNpbs6xMSwgY29zVTEgKiBjb3PPgyAtIHNpblUxICogc2luz4MgKiBjb3POsTEpO1xyXG4gICAgdmFyIEMgPSBmIC8gMTYgKiBjb3NTcc6xICogKDQgKyBmICogKDQgLSAzICogY29zU3HOsSkpO1xyXG4gICAgdmFyIEwgPSDOuyAtICgxIC0gQykgKiBmICogc2luzrEgKlxyXG4gICAgICAoz4MgKyBDICogc2luz4MgKiAoY29zMs+DTSArIEMgKiBjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICogY29zMs+DTSkpKTtcclxuXHJcbiAgICB2YXIgzrsyO1xyXG4gICAgaWYgKHdyYXApIHtcclxuICAgICAgzrsyID0gKM67MSArIEwgKyAzICogTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gbm9ybWFsaXNlIHRvIC0xODAuLi4rMTgwXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICDOuzIgPSAozrsxICsgTCk7IC8vIGRvIG5vdCBub3JtYWxpemVcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcmV2QXogPSBNYXRoLmF0YW4yKHNpbs6xLCAteCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGF0OiDPhjIudG9EZWdyZWVzKCksXHJcbiAgICAgIGxuZzogzrsyLnRvRGVncmVlcygpLFxyXG4gICAgICBmaW5hbEJlYXJpbmc6IHJldkF6LnRvRGVncmVlcygpXHJcbiAgICB9O1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIFZpbmNlbnR5IGludmVyc2UgY2FsY3VsYXRpb24uXHJcbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHtMYXRMbmd9IHAxIC0gTGF0aXR1ZGUvbG9uZ2l0dWRlIG9mIHN0YXJ0IHBvaW50LlxyXG4gICAqIEBwYXJhbSB7TGF0TG5nfSBwMiAtIExhdGl0dWRlL2xvbmdpdHVkZSBvZiBkZXN0aW5hdGlvbiBwb2ludC5cclxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBPYmplY3QgaW5jbHVkaW5nIGRpc3RhbmNlLCBpbml0aWFsQmVhcmluZywgZmluYWxCZWFyaW5nLlxyXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBmb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZS5cclxuICAgKi9cclxuICBfdmluY2VudHlfaW52ZXJzZTogZnVuY3Rpb24ocDEsIHAyKSB7XHJcbiAgICB2YXIgz4YxID0gcDEubGF0LnRvUmFkaWFucygpLFxyXG4gICAgICDOuzEgPSBwMS5sbmcudG9SYWRpYW5zKCk7XHJcbiAgICB2YXIgz4YyID0gcDIubGF0LnRvUmFkaWFucygpLFxyXG4gICAgICDOuzIgPSBwMi5sbmcudG9SYWRpYW5zKCk7XHJcblxyXG4gICAgdmFyIGEgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5hLFxyXG4gICAgICBiID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuYixcclxuICAgICAgZiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmY7XHJcblxyXG4gICAgdmFyIEwgPSDOuzIgLSDOuzE7XHJcbiAgICB2YXIgdGFuVTEgPSAoMSAtIGYpICogTWF0aC50YW4oz4YxKSxcclxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxyXG4gICAgICBzaW5VMSA9IHRhblUxICogY29zVTE7XHJcbiAgICB2YXIgdGFuVTIgPSAoMSAtIGYpICogTWF0aC50YW4oz4YyKSxcclxuICAgICAgY29zVTIgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTIgKiB0YW5VMikpLFxyXG4gICAgICBzaW5VMiA9IHRhblUyICogY29zVTI7XHJcblxyXG4gICAgdmFyIM67ID0gTCxcclxuICAgICAgzrvKuSwgaXRlcmF0aW9ucyA9IDA7XHJcbiAgICB2YXIgY29zU3HOsSwgc2luz4MsIGNvczLPg00sIGNvc8+DLCDPgywgc2luzrssIGNvc867O1xyXG4gICAgZG8ge1xyXG4gICAgICBzaW7OuyA9IE1hdGguc2luKM67KTtcclxuICAgICAgY29zzrsgPSBNYXRoLmNvcyjOuyk7XHJcbiAgICAgIHZhciBzaW5Tcc+DID0gKGNvc1UyICogc2luzrspICogKGNvc1UyICogc2luzrspICsgKGNvc1UxICogc2luVTIgLVxyXG4gICAgICAgIHNpblUxICogY29zVTIgKiBjb3POuykgKiAoY29zVTEgKiBzaW5VMiAtIHNpblUxICogY29zVTIgKiBjb3POuyk7XHJcbiAgICAgIHNpbs+DID0gTWF0aC5zcXJ0KHNpblNxz4MpO1xyXG4gICAgICBpZiAoc2luz4MgPT0gMCkgcmV0dXJuIDA7IC8vIGNvLWluY2lkZW50IHBvaW50c1xyXG4gICAgICBjb3PPgyA9IHNpblUxICogc2luVTIgKyBjb3NVMSAqIGNvc1UyICogY29zzrs7XHJcbiAgICAgIM+DID0gTWF0aC5hdGFuMihzaW7PgywgY29zz4MpO1xyXG4gICAgICB2YXIgc2luzrEgPSBjb3NVMSAqIGNvc1UyICogc2luzrsgLyBzaW7PgztcclxuICAgICAgY29zU3HOsSA9IDEgLSBzaW7OsSAqIHNpbs6xO1xyXG4gICAgICBjb3Myz4NNID0gY29zz4MgLSAyICogc2luVTEgKiBzaW5VMiAvIGNvc1NxzrE7XHJcbiAgICAgIGlmIChpc05hTihjb3Myz4NNKSkgY29zMs+DTSA9IDA7IC8vIGVxdWF0b3JpYWwgbGluZTogY29zU3HOsT0wICjCpzYpXHJcbiAgICAgIHZhciBDID0gZiAvIDE2ICogY29zU3HOsSAqICg0ICsgZiAqICg0IC0gMyAqIGNvc1NxzrEpKTtcclxuICAgICAgzrvKuSA9IM67O1xyXG4gICAgICDOuyA9IEwgKyAoMSAtIEMpICogZiAqIHNpbs6xICogKM+DICsgQyAqIHNpbs+DICogKGNvczLPg00gKyBDICogY29zz4MgKiAoLVxyXG4gICAgICAgIDEgKyAyICogY29zMs+DTSAqIGNvczLPg00pKSk7XHJcbiAgICB9IHdoaWxlIChNYXRoLmFicyjOuyAtIM67yrkpID4gMWUtMTIgJiYgKytpdGVyYXRpb25zIDwgMTAwKTtcclxuICAgIGlmIChpdGVyYXRpb25zID49IDEwMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkZvcm11bGEgZmFpbGVkIHRvIGNvbnZlcmdlLiBBbHRlcmluZyB0YXJnZXQgcG9zaXRpb24uXCIpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmluY2VudHlfaW52ZXJzZShwMSwge1xyXG4gICAgICAgICAgbGF0OiBwMi5sYXQsXHJcbiAgICAgICAgICBsbmc6IHAyLmxuZyAtIDAuMDFcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyAgdGhyb3cgbmV3IEVycm9yKCdGb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciB1U3EgPSBjb3NTcc6xICogKGEgKiBhIC0gYiAqIGIpIC8gKGIgKiBiKTtcclxuICAgIHZhciBBID0gMSArIHVTcSAvIDE2Mzg0ICogKDQwOTYgKyB1U3EgKiAoLTc2OCArIHVTcSAqICgzMjAgLSAxNzUgKlxyXG4gICAgICB1U3EpKSk7XHJcbiAgICB2YXIgQiA9IHVTcSAvIDEwMjQgKiAoMjU2ICsgdVNxICogKC0xMjggKyB1U3EgKiAoNzQgLSA0NyAqIHVTcSkpKTtcclxuICAgIHZhciDOlM+DID0gQiAqIHNpbs+DICogKGNvczLPg00gKyBCIC8gNCAqIChjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICpcclxuICAgICAgICBjb3Myz4NNKSAtXHJcbiAgICAgIEIgLyA2ICogY29zMs+DTSAqICgtMyArIDQgKiBzaW7PgyAqIHNpbs+DKSAqICgtMyArIDQgKiBjb3Myz4NNICpcclxuICAgICAgICBjb3Myz4NNKSkpO1xyXG5cclxuICAgIHZhciBzID0gYiAqIEEgKiAoz4MgLSDOlM+DKTtcclxuXHJcbiAgICB2YXIgZndkQXogPSBNYXRoLmF0YW4yKGNvc1UyICogc2luzrssIGNvc1UxICogc2luVTIgLSBzaW5VMSAqIGNvc1UyICpcclxuICAgICAgY29zzrspO1xyXG4gICAgdmFyIHJldkF6ID0gTWF0aC5hdGFuMihjb3NVMSAqIHNpbs67LCAtc2luVTEgKiBjb3NVMiArIGNvc1UxICogc2luVTIgKlxyXG4gICAgICBjb3POuyk7XHJcblxyXG4gICAgcyA9IE51bWJlcihzLnRvRml4ZWQoMykpOyAvLyByb3VuZCB0byAxbW0gcHJlY2lzaW9uXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkaXN0YW5jZTogcyxcclxuICAgICAgaW5pdGlhbEJlYXJpbmc6IGZ3ZEF6LnRvRGVncmVlcygpLFxyXG4gICAgICBmaW5hbEJlYXJpbmc6IHJldkF6LnRvRGVncmVlcygpXHJcbiAgICB9O1xyXG4gIH0sXHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBwb2ludCBvZiBpbnRlcnNlY3Rpb24gb2YgdHdvIHBhdGhzIGRlZmluZWQgYnkgcG9pbnQgYW5kIGJlYXJpbmcuXHJcbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7TGF0TG9ufSBwMSAtIEZpcnN0IHBvaW50LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBicm5nMSAtIEluaXRpYWwgYmVhcmluZyBmcm9tIGZpcnN0IHBvaW50LlxyXG4gICAqIEBwYXJhbSB7TGF0TG9ufSBwMiAtIFNlY29uZCBwb2ludC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gYnJuZzIgLSBJbml0aWFsIGJlYXJpbmcgZnJvbSBzZWNvbmQgcG9pbnQuXHJcbiAgICogQHJldHVybnMge09iamVjdH0gY29udGFpbmluZyBsYXQvbG5nIGluZm9ybWF0aW9uIG9mIGludGVyc2VjdGlvbi5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogdmFyIHAxID0gTGF0TG9uKDUxLjg4NTMsIDAuMjU0NSksIGJybmcxID0gMTA4LjU1O1xyXG4gICAqIHZhciBwMiA9IExhdExvbig0OS4wMDM0LCAyLjU3MzUpLCBicm5nMiA9IDMyLjQ0O1xyXG4gICAqIHZhciBwSW50ID0gTGF0TG9uLmludGVyc2VjdGlvbihwMSwgYnJuZzEsIHAyLCBicm5nMik7IC8vIHBJbnQudG9TdHJpbmcoKTogNTAuOTA3OMKwTiwgNC41MDg0wrBFXHJcbiAgICovXHJcbiAgX2ludGVyc2VjdGlvbjogZnVuY3Rpb24ocDEsIGJybmcxLCBwMiwgYnJuZzIpIHtcclxuICAgIC8vIHNlZSBodHRwOi8vd2lsbGlhbXMuYmVzdC52d2gubmV0L2F2Zm9ybS5odG0jSW50ZXJzZWN0aW9uXHJcblxyXG4gICAgdmFyIM+GMSA9IHAxLmxhdC50b1JhZGlhbnMoKSxcclxuICAgICAgzrsxID0gcDEubG5nLnRvUmFkaWFucygpO1xyXG4gICAgdmFyIM+GMiA9IHAyLmxhdC50b1JhZGlhbnMoKSxcclxuICAgICAgzrsyID0gcDIubG5nLnRvUmFkaWFucygpO1xyXG4gICAgdmFyIM64MTMgPSBOdW1iZXIoYnJuZzEpLnRvUmFkaWFucygpLFxyXG4gICAgICDOuDIzID0gTnVtYmVyKGJybmcyKS50b1JhZGlhbnMoKTtcclxuICAgIHZhciDOlM+GID0gz4YyIC0gz4YxLFxyXG4gICAgICDOlM67ID0gzrsyIC0gzrsxO1xyXG5cclxuICAgIHZhciDOtDEyID0gMiAqIE1hdGguYXNpbihNYXRoLnNxcnQoTWF0aC5zaW4ozpTPhiAvIDIpICogTWF0aC5zaW4ozpTPhiAvIDIpICtcclxuICAgICAgTWF0aC5jb3Moz4YxKSAqIE1hdGguY29zKM+GMikgKiBNYXRoLnNpbijOlM67IC8gMikgKiBNYXRoLnNpbijOlM67IC9cclxuICAgICAgICAyKSkpO1xyXG4gICAgaWYgKM60MTIgPT0gMCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gaW5pdGlhbC9maW5hbCBiZWFyaW5ncyBiZXR3ZWVuIHBvaW50c1xyXG4gICAgdmFyIM64MSA9IE1hdGguYWNvcygoTWF0aC5zaW4oz4YyKSAtIE1hdGguc2luKM+GMSkgKiBNYXRoLmNvcyjOtDEyKSkgL1xyXG4gICAgICAoTWF0aC5zaW4ozrQxMikgKiBNYXRoLmNvcyjPhjEpKSk7XHJcbiAgICBpZiAoaXNOYU4ozrgxKSkgzrgxID0gMDsgLy8gcHJvdGVjdCBhZ2FpbnN0IHJvdW5kaW5nXHJcbiAgICB2YXIgzrgyID0gTWF0aC5hY29zKChNYXRoLnNpbijPhjEpIC0gTWF0aC5zaW4oz4YyKSAqIE1hdGguY29zKM60MTIpKSAvXHJcbiAgICAgIChNYXRoLnNpbijOtDEyKSAqIE1hdGguY29zKM+GMikpKTtcclxuICAgIHZhciDOuDEyLCDOuDIxO1xyXG4gICAgaWYgKE1hdGguc2luKM67MiAtIM67MSkgPiAwKSB7XHJcbiAgICAgIM64MTIgPSDOuDE7XHJcbiAgICAgIM64MjEgPSAyICogTWF0aC5QSSAtIM64MjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIM64MTIgPSAyICogTWF0aC5QSSAtIM64MTtcclxuICAgICAgzrgyMSA9IM64MjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgzrExID0gKM64MTMgLSDOuDEyICsgTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gYW5nbGUgMi0xLTNcclxuICAgIHZhciDOsTIgPSAozrgyMSAtIM64MjMgKyBNYXRoLlBJKSAlICgyICogTWF0aC5QSSkgLSBNYXRoLlBJOyAvLyBhbmdsZSAxLTItM1xyXG5cclxuICAgIGlmIChNYXRoLnNpbijOsTEpID09IDAgJiYgTWF0aC5zaW4ozrEyKSA9PSAwKSByZXR1cm4gbnVsbDsgLy8gaW5maW5pdGUgaW50ZXJzZWN0aW9uc1xyXG4gICAgaWYgKE1hdGguc2luKM6xMSkgKiBNYXRoLnNpbijOsTIpIDwgMCkgcmV0dXJuIG51bGw7IC8vIGFtYmlndW91cyBpbnRlcnNlY3Rpb25cclxuXHJcbiAgICAvL86xMSA9IE1hdGguYWJzKM6xMSk7XHJcbiAgICAvL86xMiA9IE1hdGguYWJzKM6xMik7XHJcbiAgICAvLyAuLi4gRWQgV2lsbGlhbXMgdGFrZXMgYWJzIG9mIM6xMS/OsTIsIGJ1dCBzZWVtcyB0byBicmVhayBjYWxjdWxhdGlvbj9cclxuXHJcbiAgICB2YXIgzrEzID0gTWF0aC5hY29zKC1NYXRoLmNvcyjOsTEpICogTWF0aC5jb3MozrEyKSArXHJcbiAgICAgIE1hdGguc2luKM6xMSkgKiBNYXRoLnNpbijOsTIpICogTWF0aC5jb3MozrQxMikpO1xyXG4gICAgdmFyIM60MTMgPSBNYXRoLmF0YW4yKE1hdGguc2luKM60MTIpICogTWF0aC5zaW4ozrExKSAqIE1hdGguc2luKM6xMiksXHJcbiAgICAgIE1hdGguY29zKM6xMikgKyBNYXRoLmNvcyjOsTEpICogTWF0aC5jb3MozrEzKSk7XHJcbiAgICB2YXIgz4YzID0gTWF0aC5hc2luKE1hdGguc2luKM+GMSkgKiBNYXRoLmNvcyjOtDEzKSArXHJcbiAgICAgIE1hdGguY29zKM+GMSkgKiBNYXRoLnNpbijOtDEzKSAqIE1hdGguY29zKM64MTMpKTtcclxuICAgIHZhciDOlM67MTMgPSBNYXRoLmF0YW4yKE1hdGguc2luKM64MTMpICogTWF0aC5zaW4ozrQxMykgKiBNYXRoLmNvcyjPhjEpLFxyXG4gICAgICBNYXRoLmNvcyjOtDEzKSAtIE1hdGguc2luKM+GMSkgKiBNYXRoLnNpbijPhjMpKTtcclxuICAgIHZhciDOuzMgPSDOuzEgKyDOlM67MTM7XHJcbiAgICDOuzMgPSAozrszICsgMyAqIE1hdGguUEkpICUgKDIgKiBNYXRoLlBJKSAtIE1hdGguUEk7IC8vIG5vcm1hbGlzZSB0byAtMTgwLi4rMTgwwrpcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsYXQ6IM+GMy50b0RlZ3JlZXMoKSxcclxuICAgICAgbG5nOiDOuzMudG9EZWdyZWVzKClcclxuICAgIH07XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogT3ZlcndyaXRlcyBvYmoxJ3MgdmFsdWVzIHdpdGggb2JqMidzIGFuZCBhZGRzIG9iajIncyBpZiBub24gZXhpc3RlbnQgaW4gb2JqMVxyXG4gICAqIEBwYXJhbSBvYmoxXHJcbiAgICogQHBhcmFtIG9iajJcclxuICAgKiBAcmV0dXJucyBvYmozIGEgbmV3IG9iamVjdCBiYXNlZCBvbiBvYmoxIGFuZCBvYmoyXHJcbiAgICovXHJcbiAgX21lcmdlX29wdGlvbnM6IGZ1bmN0aW9uKG9iajEsIG9iajIpIHtcclxuICAgIGxldCBvYmozID0ge307XHJcbiAgICBmb3IgKGxldCBhdHRybmFtZSBpbiBvYmoxKSB7XHJcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMVthdHRybmFtZV07XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBhdHRybmFtZSBpbiBvYmoyKSB7XHJcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqMztcclxuICB9XHJcbn0pO1xyXG5cclxuTC5nZW9kZXNpYyA9IGZ1bmN0aW9uKGxhdGxuZ3MsIG9wdGlvbnMpIHtcclxuICByZXR1cm4gbmV3IEwuR2VvZGVzaWMobGF0bG5ncywgb3B0aW9ucyk7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL0xlYWZsZXQuR2VvZGVzaWMvTGVhZmxldC5HZW9kZXNpYy5qc1xuLy8gbW9kdWxlIGlkID0gLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\n");
/***/ }),
@@ -338,21 +338,21 @@ eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n
/***/ "./resources/js/admin/app.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n * Admin stuff needed\n */\n\n__webpack_require__(\"./resources/js/bootstrap.js\");\n\n// Import the mapping function\nwindow.phpvms.map = __webpack_require__(\"./resources/js/maps/index.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYWRtaW4vYXBwLmpzP2ExNzUiXSwibmFtZXMiOlsicmVxdWlyZSIsIndpbmRvdyIsInBocHZtcyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQSxtQkFBQUEsQ0FBUSw2QkFBUjs7QUFFQTtBQUNBQyxPQUFPQyxNQUFQLENBQWNDLEdBQWQsR0FBb0IsbUJBQUFILENBQVEsOEJBQVIsQ0FBcEIiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYWRtaW4vYXBwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZG1pbiBzdHVmZiBuZWVkZWRcbiAqL1xuXG5yZXF1aXJlKCcuLy4uL2Jvb3RzdHJhcCcpO1xuXG4vLyBJbXBvcnQgdGhlIG1hcHBpbmcgZnVuY3Rpb25cbndpbmRvdy5waHB2bXMubWFwID0gcmVxdWlyZSgnLi4vbWFwcy9pbmRleCcpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2FkbWluL2FwcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/admin/app.js\n");
+eval("/**\r\n * Admin stuff needed\r\n */\n\n__webpack_require__(\"./resources/js/bootstrap.js\");\n\n// Import the mapping function\nwindow.phpvms.map = __webpack_require__(\"./resources/js/maps/index.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYWRtaW4vYXBwLmpzP2ExNzUiXSwibmFtZXMiOlsicmVxdWlyZSIsIndpbmRvdyIsInBocHZtcyIsIm1hcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQSxtQkFBQUEsQ0FBUSw2QkFBUjs7QUFFQTtBQUNBQyxPQUFPQyxNQUFQLENBQWNDLEdBQWQsR0FBb0IsbUJBQUFILENBQVEsOEJBQVIsQ0FBcEIiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvYWRtaW4vYXBwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEFkbWluIHN0dWZmIG5lZWRlZFxyXG4gKi9cclxuXHJcbnJlcXVpcmUoJy4vLi4vYm9vdHN0cmFwJyk7XHJcblxyXG4vLyBJbXBvcnQgdGhlIG1hcHBpbmcgZnVuY3Rpb25cclxud2luZG93LnBocHZtcy5tYXAgPSByZXF1aXJlKCcuLi9tYXBzL2luZGV4Jyk7XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9hZG1pbi9hcHAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/admin/app.js\n");
/***/ }),
/***/ "./resources/js/bootstrap.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n * Bootstrap any Javascript libraries required\n */\n\nwindow.axios = __webpack_require__(\"./node_modules/axios/index.js\");\n\n/**\n * Container for phpVMS specific functions\n */\nwindow.phpvms = {};\n\n/**\n * Configure Axios with both the csrf token and the API key\n */\n\nvar base_url = document.head.querySelector('meta[name=\"base-url\"]');\nif (base_url) {\n window.axios.default.baseURL = base_url;\n}\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\nvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n /*window.jquery.ajaxSetup({\n 'X-CSRF-TOKEN': token.content\n })*/\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\nvar api_key = document.head.querySelector('meta[name=\"api-key\"]');\nif (api_key) {\n window.axios.defaults.headers.common['x-api-key'] = api_key.content;\n window.PHPVMS_USER_API_KEY = api_key.content;\n} else {\n window.PHPVMS_USER_API_KEY = false;\n console.error('API Key not found!');\n}\n\n__webpack_require__(\"./resources/js/common.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzBlNTgiXSwibmFtZXMiOlsid2luZG93IiwiYXhpb3MiLCJyZXF1aXJlIiwicGhwdm1zIiwiYmFzZV91cmwiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdCIsImJhc2VVUkwiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsImNvbnRlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhcGlfa2V5IiwiUEhQVk1TX1VTRVJfQVBJX0tFWSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQUEsT0FBT0MsS0FBUCxHQUFlLG1CQUFBQyxDQUFRLCtCQUFSLENBQWY7O0FBRUE7OztBQUdBRixPQUFPRyxNQUFQLEdBQWdCLEVBQWhCOztBQUVBOzs7O0FBSUEsSUFBTUMsV0FBV0MsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHVCQUE1QixDQUFqQjtBQUNBLElBQUdILFFBQUgsRUFBYTtBQUNYSixTQUFPQyxLQUFQLENBQWFPLE9BQWIsQ0FBcUJDLE9BQXJCLEdBQStCTCxRQUEvQjtBQUNEOztBQUVESixPQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxrQkFBckMsSUFBMkQsZ0JBQTNEO0FBQ0EsSUFBTUMsUUFBUVIsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHlCQUE1QixDQUFkOztBQUVBLElBQUlNLEtBQUosRUFBVztBQUNUYixTQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxjQUFyQyxJQUF1REMsTUFBTUMsT0FBN0Q7QUFDQTs7O0FBR0QsQ0FMRCxNQUtPO0FBQ0xDLFVBQVFDLEtBQVIsQ0FBYyx1RUFBZDtBQUNEOztBQUVELElBQU1DLFVBQVVaLFNBQVNDLElBQVQsQ0FBY0MsYUFBZCxDQUE0QixzQkFBNUIsQ0FBaEI7QUFDQSxJQUFJVSxPQUFKLEVBQWE7QUFDWGpCLFNBQU9DLEtBQVAsQ0FBYVMsUUFBYixDQUFzQkMsT0FBdEIsQ0FBOEJDLE1BQTlCLENBQXFDLFdBQXJDLElBQW9ESyxRQUFRSCxPQUE1RDtBQUNBZCxTQUFPa0IsbUJBQVAsR0FBNkJELFFBQVFILE9BQXJDO0FBQ0QsQ0FIRCxNQUdPO0FBQ0xkLFNBQU9rQixtQkFBUCxHQUE2QixLQUE3QjtBQUNBSCxVQUFRQyxLQUFSLENBQWMsb0JBQWQ7QUFDRDs7QUFFRCxtQkFBQWQsQ0FBUSwwQkFBUiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJvb3RzdHJhcCBhbnkgSmF2YXNjcmlwdCBsaWJyYXJpZXMgcmVxdWlyZWRcbiAqL1xuXG53aW5kb3cuYXhpb3MgPSByZXF1aXJlKCdheGlvcycpO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgcGhwVk1TIHNwZWNpZmljIGZ1bmN0aW9uc1xuICovXG53aW5kb3cucGhwdm1zID0ge307XG5cbi8qKlxuICogQ29uZmlndXJlIEF4aW9zIHdpdGggYm90aCB0aGUgY3NyZiB0b2tlbiBhbmQgdGhlIEFQSSBrZXlcbiAqL1xuXG5jb25zdCBiYXNlX3VybCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiYmFzZS11cmxcIl0nKTtcbmlmKGJhc2VfdXJsKSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0LmJhc2VVUkwgPSBiYXNlX3VybDtcbn1cblxud2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLVJlcXVlc3RlZC1XaXRoJ10gPSAnWE1MSHR0cFJlcXVlc3QnO1xuY29uc3QgdG9rZW4gPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcblxuaWYgKHRva2VuKSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSB0b2tlbi5jb250ZW50XG4gIC8qd2luZG93LmpxdWVyeS5hamF4U2V0dXAoe1xuICAgICdYLUNTUkYtVE9LRU4nOiB0b2tlbi5jb250ZW50XG4gIH0pKi9cbn0gZWxzZSB7XG4gIGNvbnNvbGUuZXJyb3IoJ0NTUkYgdG9rZW4gbm90IGZvdW5kOiBodHRwczovL2xhcmF2ZWwuY29tL2RvY3MvY3NyZiNjc3JmLXgtY3NyZi10b2tlbicpXG59XG5cbmNvbnN0IGFwaV9rZXkgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImFwaS1rZXlcIl0nKTtcbmlmIChhcGlfa2V5KSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsneC1hcGkta2V5J10gPSBhcGlfa2V5LmNvbnRlbnQ7XG4gIHdpbmRvdy5QSFBWTVNfVVNFUl9BUElfS0VZID0gYXBpX2tleS5jb250ZW50XG59IGVsc2Uge1xuICB3aW5kb3cuUEhQVk1TX1VTRVJfQVBJX0tFWSA9IGZhbHNlO1xuICBjb25zb2xlLmVycm9yKCdBUEkgS2V5IG5vdCBmb3VuZCEnKVxufVxuXG5yZXF1aXJlKCcuL2NvbW1vbicpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
+eval("/**\r\n * Bootstrap any Javascript libraries required\r\n */\n\nwindow.axios = __webpack_require__(\"./node_modules/axios/index.js\");\n\n/**\r\n * Container for phpVMS specific functions\r\n */\nwindow.phpvms = {};\n\n/**\r\n * Configure Axios with both the csrf token and the API key\r\n */\n\nvar base_url = document.head.querySelector('meta[name=\"base-url\"]');\nif (base_url) {\n window.axios.default.baseURL = base_url;\n}\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\nvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n /*window.jquery.ajaxSetup({\r\n 'X-CSRF-TOKEN': token.content\r\n })*/\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\nvar api_key = document.head.querySelector('meta[name=\"api-key\"]');\nif (api_key) {\n window.axios.defaults.headers.common['x-api-key'] = api_key.content;\n window.PHPVMS_USER_API_KEY = api_key.content;\n} else {\n window.PHPVMS_USER_API_KEY = false;\n console.error('API Key not found!');\n}\n\n__webpack_require__(\"./resources/js/common.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzBlNTgiXSwibmFtZXMiOlsid2luZG93IiwiYXhpb3MiLCJyZXF1aXJlIiwicGhwdm1zIiwiYmFzZV91cmwiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdCIsImJhc2VVUkwiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsImNvbnRlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhcGlfa2V5IiwiUEhQVk1TX1VTRVJfQVBJX0tFWSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQUEsT0FBT0MsS0FBUCxHQUFlLG1CQUFBQyxDQUFRLCtCQUFSLENBQWY7O0FBRUE7OztBQUdBRixPQUFPRyxNQUFQLEdBQWdCLEVBQWhCOztBQUVBOzs7O0FBSUEsSUFBTUMsV0FBV0MsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHVCQUE1QixDQUFqQjtBQUNBLElBQUdILFFBQUgsRUFBYTtBQUNYSixTQUFPQyxLQUFQLENBQWFPLE9BQWIsQ0FBcUJDLE9BQXJCLEdBQStCTCxRQUEvQjtBQUNEOztBQUVESixPQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxrQkFBckMsSUFBMkQsZ0JBQTNEO0FBQ0EsSUFBTUMsUUFBUVIsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHlCQUE1QixDQUFkOztBQUVBLElBQUlNLEtBQUosRUFBVztBQUNUYixTQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxjQUFyQyxJQUF1REMsTUFBTUMsT0FBN0Q7QUFDQTs7O0FBR0QsQ0FMRCxNQUtPO0FBQ0xDLFVBQVFDLEtBQVIsQ0FBYyx1RUFBZDtBQUNEOztBQUVELElBQU1DLFVBQVVaLFNBQVNDLElBQVQsQ0FBY0MsYUFBZCxDQUE0QixzQkFBNUIsQ0FBaEI7QUFDQSxJQUFJVSxPQUFKLEVBQWE7QUFDWGpCLFNBQU9DLEtBQVAsQ0FBYVMsUUFBYixDQUFzQkMsT0FBdEIsQ0FBOEJDLE1BQTlCLENBQXFDLFdBQXJDLElBQW9ESyxRQUFRSCxPQUE1RDtBQUNBZCxTQUFPa0IsbUJBQVAsR0FBNkJELFFBQVFILE9BQXJDO0FBQ0QsQ0FIRCxNQUdPO0FBQ0xkLFNBQU9rQixtQkFBUCxHQUE2QixLQUE3QjtBQUNBSCxVQUFRQyxLQUFSLENBQWMsb0JBQWQ7QUFDRDs7QUFFRCxtQkFBQWQsQ0FBUSwwQkFBUiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQm9vdHN0cmFwIGFueSBKYXZhc2NyaXB0IGxpYnJhcmllcyByZXF1aXJlZFxyXG4gKi9cclxuXHJcbndpbmRvdy5heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XHJcblxyXG4vKipcclxuICogQ29udGFpbmVyIGZvciBwaHBWTVMgc3BlY2lmaWMgZnVuY3Rpb25zXHJcbiAqL1xyXG53aW5kb3cucGhwdm1zID0ge307XHJcblxyXG4vKipcclxuICogQ29uZmlndXJlIEF4aW9zIHdpdGggYm90aCB0aGUgY3NyZiB0b2tlbiBhbmQgdGhlIEFQSSBrZXlcclxuICovXHJcblxyXG5jb25zdCBiYXNlX3VybCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiYmFzZS11cmxcIl0nKTtcclxuaWYoYmFzZV91cmwpIHtcclxuICB3aW5kb3cuYXhpb3MuZGVmYXVsdC5iYXNlVVJMID0gYmFzZV91cmw7XHJcbn1cclxuXHJcbndpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcclxuY29uc3QgdG9rZW4gPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcclxuXHJcbmlmICh0b2tlbikge1xyXG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSB0b2tlbi5jb250ZW50XHJcbiAgLyp3aW5kb3cuanF1ZXJ5LmFqYXhTZXR1cCh7XHJcbiAgICAnWC1DU1JGLVRPS0VOJzogdG9rZW4uY29udGVudFxyXG4gIH0pKi9cclxufSBlbHNlIHtcclxuICBjb25zb2xlLmVycm9yKCdDU1JGIHRva2VuIG5vdCBmb3VuZDogaHR0cHM6Ly9sYXJhdmVsLmNvbS9kb2NzL2NzcmYjY3NyZi14LWNzcmYtdG9rZW4nKVxyXG59XHJcblxyXG5jb25zdCBhcGlfa2V5ID0gZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9XCJhcGkta2V5XCJdJyk7XHJcbmlmIChhcGlfa2V5KSB7XHJcbiAgd2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWyd4LWFwaS1rZXknXSA9IGFwaV9rZXkuY29udGVudDtcclxuICB3aW5kb3cuUEhQVk1TX1VTRVJfQVBJX0tFWSA9IGFwaV9rZXkuY29udGVudFxyXG59IGVsc2Uge1xyXG4gIHdpbmRvdy5QSFBWTVNfVVNFUl9BUElfS0VZID0gZmFsc2U7XHJcbiAgY29uc29sZS5lcnJvcignQVBJIEtleSBub3QgZm91bmQhJylcclxufVxyXG5cclxucmVxdWlyZSgnLi9jb21tb24nKTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
/***/ }),
/***/ "./resources/js/common.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n *\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n/**\n * Generic formatter to prepend\n * @param value\n * @param prepend\n * @returns {*}\n */\nrivets.formatters.prepend = function (value, prepend) {\n return prepend + value;\n};\n\n/**\n * Format minutes into HHh MMm\n * @param value\n * @returns {string}\n */\nrivets.formatters.time_hm = function (value) {\n var hours = Math.floor(value / 60);\n var mins = value % 60;\n return hours + 'h ' + mins + 'm';\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.gt = function (value, len) {\n return value.length > len;\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.lt = function (value, len) {\n return value.length < len;\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.eq = function (value, len) {\n return value.length > len;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzPzVmZDUiXSwibmFtZXMiOlsicml2ZXRzIiwicmVxdWlyZSIsImZvcm1hdHRlcnMiLCJwcmVwZW5kIiwidmFsdWUiLCJ0aW1lX2htIiwiaG91cnMiLCJNYXRoIiwiZmxvb3IiLCJtaW5zIiwiZ3QiLCJsZW4iLCJsZW5ndGgiLCJsdCIsImVxIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQU1BLFNBQVMsbUJBQUFDLENBQVEsc0NBQVIsQ0FBZjs7QUFFQTs7Ozs7O0FBTUFELE9BQU9FLFVBQVAsQ0FBa0JDLE9BQWxCLEdBQTRCLFVBQVVDLEtBQVYsRUFBaUJELE9BQWpCLEVBQTBCO0FBQ2xELFNBQU9BLFVBQVVDLEtBQWpCO0FBQ0gsQ0FGRDs7QUFJQTs7Ozs7QUFLQUosT0FBT0UsVUFBUCxDQUFrQkcsT0FBbEIsR0FBNEIsVUFBU0QsS0FBVCxFQUFnQjtBQUN4QyxNQUFNRSxRQUFRQyxLQUFLQyxLQUFMLENBQVdKLFFBQVEsRUFBbkIsQ0FBZDtBQUNBLE1BQU1LLE9BQU9MLFFBQVEsRUFBckI7QUFDQSxTQUFPRSxRQUFRLElBQVIsR0FBZUcsSUFBZixHQUFzQixHQUE3QjtBQUNILENBSkQ7O0FBTUE7Ozs7OztBQU1BVCxPQUFPRSxVQUFQLENBQWtCUSxFQUFsQixHQUF1QixVQUFDTixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCVyxFQUFsQixHQUF1QixVQUFDVCxLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCWSxFQUFsQixHQUF1QixVQUFDVixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICovXG5cbmNvbnN0IHJpdmV0cyA9IHJlcXVpcmUoJ3JpdmV0cycpO1xuXG4vKipcbiAqIEdlbmVyaWMgZm9ybWF0dGVyIHRvIHByZXBlbmRcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIHByZXBlbmRcbiAqIEByZXR1cm5zIHsqfVxuICovXG5yaXZldHMuZm9ybWF0dGVycy5wcmVwZW5kID0gZnVuY3Rpb24gKHZhbHVlLCBwcmVwZW5kKSB7XG4gICAgcmV0dXJuIHByZXBlbmQgKyB2YWx1ZVxufTtcblxuLyoqXG4gKiBGb3JtYXQgbWludXRlcyBpbnRvIEhIaCBNTW1cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xucml2ZXRzLmZvcm1hdHRlcnMudGltZV9obSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHZhbHVlIC8gNjApO1xuICAgIGNvbnN0IG1pbnMgPSB2YWx1ZSAlIDYwO1xuICAgIHJldHVybiBob3VycyArICdoICcgKyBtaW5zICsgJ20nO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gbGVuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xucml2ZXRzLmZvcm1hdHRlcnMuZ3QgPSAodmFsdWUsIGxlbikgPT4ge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBsZW47XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBsZW5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5yaXZldHMuZm9ybWF0dGVycy5sdCA9ICh2YWx1ZSwgbGVuKSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA8IGxlbjtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIGxlblxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbnJpdmV0cy5mb3JtYXR0ZXJzLmVxID0gKHZhbHVlLCBsZW4pID0+IHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gbGVuO1xufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9jb21tb24uanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/common.js\n");
+eval("/**\r\n *\r\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n/**\r\n * Generic formatter to prepend\r\n * @param value\r\n * @param prepend\r\n * @returns {*}\r\n */\nrivets.formatters.prepend = function (value, prepend) {\n return prepend + value;\n};\n\n/**\r\n * Format minutes into HHh MMm\r\n * @param value\r\n * @returns {string}\r\n */\nrivets.formatters.time_hm = function (value) {\n var hours = Math.floor(value / 60);\n var mins = value % 60;\n return hours + 'h ' + mins + 'm';\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.gt = function (value, len) {\n return value.length > len;\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.lt = function (value, len) {\n return value.length < len;\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.eq = function (value, len) {\n return value.length > len;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzPzVmZDUiXSwibmFtZXMiOlsicml2ZXRzIiwicmVxdWlyZSIsImZvcm1hdHRlcnMiLCJwcmVwZW5kIiwidmFsdWUiLCJ0aW1lX2htIiwiaG91cnMiLCJNYXRoIiwiZmxvb3IiLCJtaW5zIiwiZ3QiLCJsZW4iLCJsZW5ndGgiLCJsdCIsImVxIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQU1BLFNBQVMsbUJBQUFDLENBQVEsc0NBQVIsQ0FBZjs7QUFFQTs7Ozs7O0FBTUFELE9BQU9FLFVBQVAsQ0FBa0JDLE9BQWxCLEdBQTRCLFVBQVVDLEtBQVYsRUFBaUJELE9BQWpCLEVBQTBCO0FBQ2xELFNBQU9BLFVBQVVDLEtBQWpCO0FBQ0gsQ0FGRDs7QUFJQTs7Ozs7QUFLQUosT0FBT0UsVUFBUCxDQUFrQkcsT0FBbEIsR0FBNEIsVUFBU0QsS0FBVCxFQUFnQjtBQUN4QyxNQUFNRSxRQUFRQyxLQUFLQyxLQUFMLENBQVdKLFFBQVEsRUFBbkIsQ0FBZDtBQUNBLE1BQU1LLE9BQU9MLFFBQVEsRUFBckI7QUFDQSxTQUFPRSxRQUFRLElBQVIsR0FBZUcsSUFBZixHQUFzQixHQUE3QjtBQUNILENBSkQ7O0FBTUE7Ozs7OztBQU1BVCxPQUFPRSxVQUFQLENBQWtCUSxFQUFsQixHQUF1QixVQUFDTixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCVyxFQUFsQixHQUF1QixVQUFDVCxLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCWSxFQUFsQixHQUF1QixVQUFDVixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqXHJcbiAqL1xyXG5cclxuY29uc3Qgcml2ZXRzID0gcmVxdWlyZSgncml2ZXRzJyk7XHJcblxyXG4vKipcclxuICogR2VuZXJpYyBmb3JtYXR0ZXIgdG8gcHJlcGVuZFxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHBhcmFtIHByZXBlbmRcclxuICogQHJldHVybnMgeyp9XHJcbiAqL1xyXG5yaXZldHMuZm9ybWF0dGVycy5wcmVwZW5kID0gZnVuY3Rpb24gKHZhbHVlLCBwcmVwZW5kKSB7XHJcbiAgICByZXR1cm4gcHJlcGVuZCArIHZhbHVlXHJcbn07XHJcblxyXG4vKipcclxuICogRm9ybWF0IG1pbnV0ZXMgaW50byBISGggTU1tXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gKi9cclxucml2ZXRzLmZvcm1hdHRlcnMudGltZV9obSA9IGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodmFsdWUgLyA2MCk7XHJcbiAgICBjb25zdCBtaW5zID0gdmFsdWUgJSA2MDtcclxuICAgIHJldHVybiBob3VycyArICdoICcgKyBtaW5zICsgJ20nO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKiBAcGFyYW0gbGVuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxucml2ZXRzLmZvcm1hdHRlcnMuZ3QgPSAodmFsdWUsIGxlbikgPT4ge1xyXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxlbjtcclxufTtcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHBhcmFtIGxlblxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbnJpdmV0cy5mb3JtYXR0ZXJzLmx0ID0gKHZhbHVlLCBsZW4pID0+IHtcclxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPCBsZW47XHJcbn07XHJcblxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHZhbHVlXHJcbiAqIEBwYXJhbSBsZW5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG5yaXZldHMuZm9ybWF0dGVycy5lcSA9ICh2YWx1ZSwgbGVuKSA9PiB7XHJcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gbGVuO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/common.js\n");
/***/ }),
@@ -360,7 +360,7 @@ eval("/**\n *\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/d
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\n * Render a map with the airspace, etc around a given set of coords\n * e.g, the airport map\n * @param opts\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true,\n marker_popup: '',\n\n // Passed from the config/maps.php file\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup);\n }\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFya2VyX3BvcHVwIiwibWV0YXJfd21zIiwidXJsIiwicGFyYW1zIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iLCJiaW5kUG9wdXAiLCJhZGRXTVNMYXllciJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTtBQUN2QkEsU0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ25CQyxpQkFBYSxLQURNO0FBRW5CQyxrQkFBYyxFQUZLO0FBR25CQyxTQUFLLENBSGM7QUFJbkJDLFNBQUssQ0FKYztBQUtuQkMsVUFBTSxFQUxhO0FBTW5CQyxZQUFRLEVBTlc7QUFPbkJDLGdCQUFZLElBUE87QUFRbkJDLGtCQUFjLEVBUks7O0FBVW5CO0FBQ0FDLGVBQVc7QUFDUEMsV0FBSyxFQURFO0FBRVBDLGNBQVE7QUFGRDtBQVhRLEdBQWQsRUFlSmIsSUFmSSxDQUFQOztBQWlCQSxNQUFJYyxNQUFNLGtFQUFBQyxDQUFjZixJQUFkLENBQVY7QUFDQSxNQUFNZ0IsU0FBUyxDQUFDaEIsS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQmhCLEtBQUtPLElBQXpCO0FBQ0EsTUFBSVAsS0FBS1MsVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QlgsWUFBUXNCLE1BQVIsQ0FBZUosTUFBZixFQUF1QkssS0FBdkIsQ0FBNkJQLEdBQTdCLEVBQWtDUSxTQUFsQyxDQUE0Q3RCLEtBQUtVLFlBQWpEO0FBQ0Q7O0FBRUQsTUFBR1YsS0FBS1csU0FBTCxDQUFlQyxHQUFmLEtBQXVCLEVBQTFCLEVBQThCO0FBQzFCVyxJQUFBLHFFQUFBQSxDQUFZVCxHQUFaLEVBQWlCZCxLQUFLVyxTQUF0QjtBQUNIOztBQUVELFNBQU9HLEdBQVA7QUFDRCxDQWhDRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IGFkZFdNU0xheWVyIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBSZW5kZXIgYSBtYXAgd2l0aCB0aGUgYWlyc3BhY2UsIGV0YyBhcm91bmQgYSBnaXZlbiBzZXQgb2YgY29vcmRzXG4gKiBlLmcsIHRoZSBhaXJwb3J0IG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcbiAgICBvdmVybGF5X2VsZW06ICcnLFxuICAgIGxhdDogMCxcbiAgICBsb246IDAsXG4gICAgem9vbTogMTIsXG4gICAgbGF5ZXJzOiBbXSxcbiAgICBzZXRfbWFya2VyOiB0cnVlLFxuICAgIG1hcmtlcl9wb3B1cDogJycsXG5cbiAgICAvLyBQYXNzZWQgZnJvbSB0aGUgY29uZmlnL21hcHMucGhwIGZpbGVcbiAgICBtZXRhcl93bXM6IHtcbiAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgcGFyYW1zOiB7fVxuICAgIH0sXG4gIH0sIG9wdHMpO1xuXG4gIGxldCBtYXAgPSBkcmF3X2Jhc2VfbWFwKG9wdHMpO1xuICBjb25zdCBjb29yZHMgPSBbb3B0cy5sYXQsIG9wdHMubG9uXTtcbiAgY29uc29sZS5sb2coJ0FwcGx5aW5nIGNvb3JkcycsIGNvb3Jkcyk7XG5cbiAgbWFwLnNldFZpZXcoY29vcmRzLCBvcHRzLnpvb20pO1xuICBpZiAob3B0cy5zZXRfbWFya2VyID09PSB0cnVlKSB7XG4gICAgbGVhZmxldC5tYXJrZXIoY29vcmRzKS5hZGRUbyhtYXApLmJpbmRQb3B1cChvcHRzLm1hcmtlcl9wb3B1cCk7XG4gIH1cblxuICBpZihvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XG4gICAgICBhZGRXTVNMYXllcihtYXAsIG9wdHMubWV0YXJfd21zKTtcbiAgfVxuXG4gIHJldHVybiBtYXA7XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvYWlyc3BhY2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\r\n * Render a map with the airspace, etc around a given set of coords\r\n * e.g, the airport map\r\n * @param opts\r\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true,\n marker_popup: '',\n\n // Passed from the config/maps.php file\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup);\n }\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFya2VyX3BvcHVwIiwibWV0YXJfd21zIiwidXJsIiwicGFyYW1zIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iLCJiaW5kUG9wdXAiLCJhZGRXTVNMYXllciJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTtBQUN2QkEsU0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ25CQyxpQkFBYSxLQURNO0FBRW5CQyxrQkFBYyxFQUZLO0FBR25CQyxTQUFLLENBSGM7QUFJbkJDLFNBQUssQ0FKYztBQUtuQkMsVUFBTSxFQUxhO0FBTW5CQyxZQUFRLEVBTlc7QUFPbkJDLGdCQUFZLElBUE87QUFRbkJDLGtCQUFjLEVBUks7O0FBVW5CO0FBQ0FDLGVBQVc7QUFDUEMsV0FBSyxFQURFO0FBRVBDLGNBQVE7QUFGRDtBQVhRLEdBQWQsRUFlSmIsSUFmSSxDQUFQOztBQWlCQSxNQUFJYyxNQUFNLGtFQUFBQyxDQUFjZixJQUFkLENBQVY7QUFDQSxNQUFNZ0IsU0FBUyxDQUFDaEIsS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQmhCLEtBQUtPLElBQXpCO0FBQ0EsTUFBSVAsS0FBS1MsVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QlgsWUFBUXNCLE1BQVIsQ0FBZUosTUFBZixFQUF1QkssS0FBdkIsQ0FBNkJQLEdBQTdCLEVBQWtDUSxTQUFsQyxDQUE0Q3RCLEtBQUtVLFlBQWpEO0FBQ0Q7O0FBRUQsTUFBR1YsS0FBS1csU0FBTCxDQUFlQyxHQUFmLEtBQXVCLEVBQTFCLEVBQThCO0FBQzFCVyxJQUFBLHFFQUFBQSxDQUFZVCxHQUFaLEVBQWlCZCxLQUFLVyxTQUF0QjtBQUNIOztBQUVELFNBQU9HLEdBQVA7QUFDRCxDQWhDRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5cclxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcclxuaW1wb3J0IHsgYWRkV01TTGF5ZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5cclxuLyoqXHJcbiAqIFJlbmRlciBhIG1hcCB3aXRoIHRoZSBhaXJzcGFjZSwgZXRjIGFyb3VuZCBhIGdpdmVuIHNldCBvZiBjb29yZHNcclxuICogZS5nLCB0aGUgYWlycG9ydCBtYXBcclxuICogQHBhcmFtIG9wdHNcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XHJcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgcmVuZGVyX2VsZW06ICdtYXAnLFxyXG4gICAgb3ZlcmxheV9lbGVtOiAnJyxcclxuICAgIGxhdDogMCxcclxuICAgIGxvbjogMCxcclxuICAgIHpvb206IDEyLFxyXG4gICAgbGF5ZXJzOiBbXSxcclxuICAgIHNldF9tYXJrZXI6IHRydWUsXHJcbiAgICBtYXJrZXJfcG9wdXA6ICcnLFxyXG5cclxuICAgIC8vIFBhc3NlZCBmcm9tIHRoZSBjb25maWcvbWFwcy5waHAgZmlsZVxyXG4gICAgbWV0YXJfd21zOiB7XHJcbiAgICAgICAgdXJsOiAnJyxcclxuICAgICAgICBwYXJhbXM6IHt9XHJcbiAgICB9LFxyXG4gIH0sIG9wdHMpO1xyXG5cclxuICBsZXQgbWFwID0gZHJhd19iYXNlX21hcChvcHRzKTtcclxuICBjb25zdCBjb29yZHMgPSBbb3B0cy5sYXQsIG9wdHMubG9uXTtcclxuICBjb25zb2xlLmxvZygnQXBwbHlpbmcgY29vcmRzJywgY29vcmRzKTtcclxuXHJcbiAgbWFwLnNldFZpZXcoY29vcmRzLCBvcHRzLnpvb20pO1xyXG4gIGlmIChvcHRzLnNldF9tYXJrZXIgPT09IHRydWUpIHtcclxuICAgIGxlYWZsZXQubWFya2VyKGNvb3JkcykuYWRkVG8obWFwKS5iaW5kUG9wdXAob3B0cy5tYXJrZXJfcG9wdXApO1xyXG4gIH1cclxuXHJcbiAgaWYob3B0cy5tZXRhcl93bXMudXJsICE9PSAnJykge1xyXG4gICAgICBhZGRXTVNMYXllcihtYXAsIG9wdHMubWV0YXJfd21zKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBtYXA7XHJcbn07XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n");
/***/ }),
@@ -368,7 +368,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("//\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/leaflet-providers/leaflet-providers.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false,\n providers: ['Esri.WorldStreetMap'],\n tile_layers: []\n }, opts);\n\n /*\n let feature_groups = [];\n const openaip_airspace_labels = new leaflet.TileLayer.WMS(\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\n maxZoom: 14,\n minZoom: 12,\n layers: 'openaip_approved_airspaces_labels',\n tileSize: 1024,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n openaip_airspace_labels.addTo(map);*/\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\n maxZoom: 14,\n minZoom: 4,\n tms: true,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n feature_groups.push(openaip_cached_basemap);\n */\n\n var map = leaflet.map('map', {\n //layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n for (var i in opts.providers) {\n leaflet.tileLayer.provider(opts.providers[i]).addTo(map);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwicHJvdmlkZXJzIiwidGlsZV9sYXllcnMiLCJtYXAiLCJzY3JvbGxXaGVlbFpvb20iLCJpIiwidGlsZUxheWVyIiwicHJvdmlkZXIiLCJhZGRUbyJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjtBQUNBLG1CQUFBQSxDQUFRLHVEQUFSOztBQUVBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTs7QUFFckJBLFdBQU9DLE9BQU9DLE1BQVAsQ0FBYztBQUNqQkMscUJBQWEsS0FESTtBQUVqQkMsZ0JBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlM7QUFHakJDLGNBQU0sQ0FIVztBQUlqQkMsaUJBQVMsRUFKUTtBQUtqQkMsZ0JBQVEsRUFMUztBQU1qQkMsb0JBQVksS0FOSztBQU9qQkMsbUJBQVcsQ0FDUCxxQkFETyxDQVBNO0FBVWpCQyxxQkFBYTtBQVZJLEtBQWQsRUFXSlYsSUFYSSxDQUFQOztBQWFBOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7Ozs7Ozs7Ozs7OztBQWFBLFFBQUlXLE1BQU1iLFFBQVFhLEdBQVIsQ0FBWSxLQUFaLEVBQW1CO0FBQ3pCO0FBQ0FQLGdCQUFRSixLQUFLSSxNQUZZO0FBR3pCQyxjQUFNTCxLQUFLSyxJQUhjO0FBSXpCTyx5QkFBaUI7QUFKUSxLQUFuQixDQUFWOztBQU9BLFNBQUksSUFBTUMsQ0FBVixJQUFlYixLQUFLUyxTQUFwQixFQUErQjtBQUMzQlgsZ0JBQVFnQixTQUFSLENBQWtCQyxRQUFsQixDQUEyQmYsS0FBS1MsU0FBTCxDQUFlSSxDQUFmLENBQTNCLEVBQThDRyxLQUE5QyxDQUFvREwsR0FBcEQ7QUFDSDs7QUFFRCxXQUFPQSxHQUFQO0FBQ0gsQ0F4REQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG5cbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5yZXF1aXJlKCdsZWFmbGV0LXByb3ZpZGVycycpO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgICAgIGNlbnRlcjogWzI5Ljk4MTM5LCAtOTUuMzMzNzRdLFxuICAgICAgICB6b29tOiA1LFxuICAgICAgICBtYXhab29tOiAxMCxcbiAgICAgICAgbGF5ZXJzOiBbXSxcbiAgICAgICAgc2V0X21hcmtlcjogZmFsc2UsXG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgJ0VzcmkuV29ybGRTdHJlZXRNYXAnLFxuICAgICAgICBdLFxuICAgICAgICB0aWxlX2xheWVyczogW10sXG4gICAgfSwgb3B0cyk7XG5cbiAgICAvKlxuICAgIGxldCBmZWF0dXJlX2dyb3VwcyA9IFtdO1xuICAgIGNvbnN0IG9wZW5haXBfYWlyc3BhY2VfbGFiZWxzID0gbmV3IGxlYWZsZXQuVGlsZUxheWVyLldNUyhcbiAgICAgICAgXCJodHRwOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3dtc1wiLCB7XG4gICAgICAgICAgICBtYXhab29tOiAxNCxcbiAgICAgICAgICAgIG1pblpvb206IDEyLFxuICAgICAgICAgICAgbGF5ZXJzOiAnb3BlbmFpcF9hcHByb3ZlZF9haXJzcGFjZXNfbGFiZWxzJyxcbiAgICAgICAgICAgIHRpbGVTaXplOiAxMDI0LFxuICAgICAgICAgICAgZGV0ZWN0UmV0aW5hOiB0cnVlLFxuICAgICAgICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgIG9wZW5haXBfYWlyc3BhY2VfbGFiZWxzLmFkZFRvKG1hcCk7Ki9cblxuICAgIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xuICAgICAgICBtYXhab29tOiAxNCxcbiAgICAgICAgbWluWm9vbTogNCxcbiAgICAgICAgdG1zOiB0cnVlLFxuICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXG4gICAgICAgIHN1YmRvbWFpbnM6ICcxMicsXG4gICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICBmZWF0dXJlX2dyb3Vwcy5wdXNoKG9wZW5haXBfY2FjaGVkX2Jhc2VtYXApO1xuICAgICovXG5cbiAgICBsZXQgbWFwID0gbGVhZmxldC5tYXAoJ21hcCcsIHtcbiAgICAgICAgLy9sYXllcnM6IFtvcGVuYWlwX2Jhc2VtYXBfcGh5c19vc21dLFxuICAgICAgICBjZW50ZXI6IG9wdHMuY2VudGVyLFxuICAgICAgICB6b29tOiBvcHRzLnpvb20sXG4gICAgICAgIHNjcm9sbFdoZWVsWm9vbTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBmb3IoY29uc3QgaSBpbiBvcHRzLnByb3ZpZGVycykge1xuICAgICAgICBsZWFmbGV0LnRpbGVMYXllci5wcm92aWRlcihvcHRzLnByb3ZpZGVyc1tpXSkuYWRkVG8obWFwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n");
+eval("//\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/leaflet-providers/leaflet-providers.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false,\n providers: ['Esri.WorldStreetMap'],\n tile_layers: []\n }, opts);\n\n /*\r\n let feature_groups = [];\r\n const openaip_airspace_labels = new leaflet.TileLayer.WMS(\r\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\r\n maxZoom: 14,\r\n minZoom: 12,\r\n layers: 'openaip_approved_airspaces_labels',\r\n tileSize: 1024,\r\n detectRetina: true,\r\n subdomains: '12',\r\n format: 'image/png',\r\n transparent: true\r\n });\r\n openaip_airspace_labels.addTo(map);*/\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\r\n maxZoom: 14,\r\n minZoom: 4,\r\n tms: true,\r\n detectRetina: true,\r\n subdomains: '12',\r\n format: 'image/png',\r\n transparent: true\r\n });\r\n feature_groups.push(openaip_cached_basemap);\r\n */\n\n var map = leaflet.map('map', {\n //layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n for (var i in opts.providers) {\n leaflet.tileLayer.provider(opts.providers[i]).addTo(map);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwicHJvdmlkZXJzIiwidGlsZV9sYXllcnMiLCJtYXAiLCJzY3JvbGxXaGVlbFpvb20iLCJpIiwidGlsZUxheWVyIiwicHJvdmlkZXIiLCJhZGRUbyJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjtBQUNBLG1CQUFBQSxDQUFRLHVEQUFSOztBQUVBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTs7QUFFckJBLFdBQU9DLE9BQU9DLE1BQVAsQ0FBYztBQUNqQkMscUJBQWEsS0FESTtBQUVqQkMsZ0JBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlM7QUFHakJDLGNBQU0sQ0FIVztBQUlqQkMsaUJBQVMsRUFKUTtBQUtqQkMsZ0JBQVEsRUFMUztBQU1qQkMsb0JBQVksS0FOSztBQU9qQkMsbUJBQVcsQ0FDUCxxQkFETyxDQVBNO0FBVWpCQyxxQkFBYTtBQVZJLEtBQWQsRUFXSlYsSUFYSSxDQUFQOztBQWFBOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7Ozs7Ozs7Ozs7OztBQWFBLFFBQUlXLE1BQU1iLFFBQVFhLEdBQVIsQ0FBWSxLQUFaLEVBQW1CO0FBQ3pCO0FBQ0FQLGdCQUFRSixLQUFLSSxNQUZZO0FBR3pCQyxjQUFNTCxLQUFLSyxJQUhjO0FBSXpCTyx5QkFBaUI7QUFKUSxLQUFuQixDQUFWOztBQU9BLFNBQUksSUFBTUMsQ0FBVixJQUFlYixLQUFLUyxTQUFwQixFQUErQjtBQUMzQlgsZ0JBQVFnQixTQUFSLENBQWtCQyxRQUFsQixDQUEyQmYsS0FBS1MsU0FBTCxDQUFlSSxDQUFmLENBQTNCLEVBQThDRyxLQUE5QyxDQUFvREwsR0FBcEQ7QUFDSDs7QUFFRCxXQUFPQSxHQUFQO0FBQ0gsQ0F4REQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXHJcblxyXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5yZXF1aXJlKCdsZWFmbGV0LXByb3ZpZGVycycpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcclxuXHJcbiAgICBvcHRzID0gT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgcmVuZGVyX2VsZW06ICdtYXAnLFxyXG4gICAgICAgIGNlbnRlcjogWzI5Ljk4MTM5LCAtOTUuMzMzNzRdLFxyXG4gICAgICAgIHpvb206IDUsXHJcbiAgICAgICAgbWF4Wm9vbTogMTAsXHJcbiAgICAgICAgbGF5ZXJzOiBbXSxcclxuICAgICAgICBzZXRfbWFya2VyOiBmYWxzZSxcclxuICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgJ0VzcmkuV29ybGRTdHJlZXRNYXAnLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgdGlsZV9sYXllcnM6IFtdLFxyXG4gICAgfSwgb3B0cyk7XHJcblxyXG4gICAgLypcclxuICAgIGxldCBmZWF0dXJlX2dyb3VwcyA9IFtdO1xyXG4gICAgY29uc3Qgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMgPSBuZXcgbGVhZmxldC5UaWxlTGF5ZXIuV01TKFxyXG4gICAgICAgIFwiaHR0cDovL3tzfS50aWxlLm1hcHMub3BlbmFpcC5uZXQvZ2Vvd2ViY2FjaGUvc2VydmljZS93bXNcIiwge1xyXG4gICAgICAgICAgICBtYXhab29tOiAxNCxcclxuICAgICAgICAgICAgbWluWm9vbTogMTIsXHJcbiAgICAgICAgICAgIGxheWVyczogJ29wZW5haXBfYXBwcm92ZWRfYWlyc3BhY2VzX2xhYmVscycsXHJcbiAgICAgICAgICAgIHRpbGVTaXplOiAxMDI0LFxyXG4gICAgICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YmRvbWFpbnM6ICcxMicsXHJcbiAgICAgICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMuYWRkVG8obWFwKTsqL1xyXG5cclxuICAgIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xyXG4gICAgICAgIG1heFpvb206IDE0LFxyXG4gICAgICAgIG1pblpvb206IDQsXHJcbiAgICAgICAgdG1zOiB0cnVlLFxyXG4gICAgICAgIGRldGVjdFJldGluYTogdHJ1ZSxcclxuICAgICAgICBzdWJkb21haW5zOiAnMTInLFxyXG4gICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIGZlYXR1cmVfZ3JvdXBzLnB1c2gob3BlbmFpcF9jYWNoZWRfYmFzZW1hcCk7XHJcbiAgICAqL1xyXG5cclxuICAgIGxldCBtYXAgPSBsZWFmbGV0Lm1hcCgnbWFwJywge1xyXG4gICAgICAgIC8vbGF5ZXJzOiBbb3BlbmFpcF9iYXNlbWFwX3BoeXNfb3NtXSxcclxuICAgICAgICBjZW50ZXI6IG9wdHMuY2VudGVyLFxyXG4gICAgICAgIHpvb206IG9wdHMuem9vbSxcclxuICAgICAgICBzY3JvbGxXaGVlbFpvb206IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yKGNvbnN0IGkgaW4gb3B0cy5wcm92aWRlcnMpIHtcclxuICAgICAgICBsZWFmbGV0LnRpbGVMYXllci5wcm92aWRlcihvcHRzLnByb3ZpZGVyc1tpXSkuYWRkVG8obWFwKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWFwO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n");
/***/ }),
@@ -376,7 +376,7 @@ eval("//\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaf
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return PLAN_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ACTUAL_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CIRCLE_COLOR; });\nvar PLAN_ROUTE_COLOR = '#043758',\n ACTUAL_ROUTE_COLOR = '#067ec1',\n CIRCLE_COLOR = '#056093';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanM/NzdmNyJdLCJuYW1lcyI6WyJQTEFOX1JPVVRFX0NPTE9SIiwiQUNUVUFMX1JPVVRFX0NPTE9SIiwiQ0lSQ0xFX0NPTE9SIl0sIm1hcHBpbmdzIjoiOzs7QUFBTyxJQUNIQSxtQkFBbUIsU0FEaEI7QUFBQSxJQUVIQyxxQkFBcUIsU0FGbEI7QUFBQSxJQUdIQyxlQUFlLFNBSFoiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbGV0XG4gICAgUExBTl9ST1VURV9DT0xPUiA9ICcjMDQzNzU4JyxcbiAgICBBQ1RVQUxfUk9VVEVfQ09MT1IgPSAnIzA2N2VjMScsXG4gICAgQ0lSQ0xFX0NPTE9SID0gJyMwNTYwOTMnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/config.js\n");
+eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return PLAN_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ACTUAL_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CIRCLE_COLOR; });\nvar PLAN_ROUTE_COLOR = '#043758',\n ACTUAL_ROUTE_COLOR = '#067ec1',\n CIRCLE_COLOR = '#056093';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanM/NzdmNyJdLCJuYW1lcyI6WyJQTEFOX1JPVVRFX0NPTE9SIiwiQUNUVUFMX1JPVVRFX0NPTE9SIiwiQ0lSQ0xFX0NPTE9SIl0sIm1hcHBpbmdzIjoiOzs7QUFBTyxJQUNIQSxtQkFBbUIsU0FEaEI7QUFBQSxJQUVIQyxxQkFBcUIsU0FGbEI7QUFBQSxJQUdIQyxlQUFlLFNBSFoiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbGV0XHJcbiAgICBQTEFOX1JPVVRFX0NPTE9SID0gJyMwNDM3NTgnLFxyXG4gICAgQUNUVUFMX1JPVVRFX0NPTE9SID0gJyMwNjdlYzEnLFxyXG4gICAgQ0lSQ0xFX0NPTE9SID0gJyMwNTYwOTMnO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/config.js\n");
/***/ }),
@@ -384,7 +384,7 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__,
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;\n/* unused harmony export showFeaturePopup */\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/**\n * Add a WMS layer to a map. opts must be:\n * {\n * url: '',\n * params: {}\n * }\n * @param map\n * @param opts\n */\nfunction addWMSLayer(map, opts) {\n\n if (opts.url === '') {\n return;\n }\n\n opts.params = Object.assign({\n format: 'image/png',\n transparent: true,\n maxZoom: 14,\n minZoom: 4\n }, opts.params);\n\n var mlayer = leaflet.tileLayer.wms(opts.url, opts.params);\n\n mlayer.addTo(map);\n\n return mlayer;\n}\n\n/**\n * Show a popup\n * @param feature\n * @param layer\n */\nfunction showFeaturePopup(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzPzNjZDUiXSwibmFtZXMiOlsibGVhZmxldCIsInJlcXVpcmUiLCJhZGRXTVNMYXllciIsIm1hcCIsIm9wdHMiLCJ1cmwiLCJwYXJhbXMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXQiLCJ0cmFuc3BhcmVudCIsIm1heFpvb20iLCJtaW5ab29tIiwibWxheWVyIiwidGlsZUxheWVyIiwid21zIiwiYWRkVG8iLCJzaG93RmVhdHVyZVBvcHVwIiwiZmVhdHVyZSIsImxheWVyIiwicG9wdXBfaHRtbCIsInByb3BlcnRpZXMiLCJwb3B1cCIsImJpbmRQb3B1cCJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7Ozs7Ozs7O0FBU08sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDOztBQUVuQyxRQUFHQSxLQUFLQyxHQUFMLEtBQWEsRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFREQsU0FBS0UsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQWM7QUFDeEJDLGdCQUFRLFdBRGdCO0FBRXhCQyxxQkFBYSxJQUZXO0FBR3hCQyxpQkFBUyxFQUhlO0FBSXhCQyxpQkFBUztBQUplLEtBQWQsRUFLWFIsS0FBS0UsTUFMTSxDQUFkOztBQU9BLFFBQU1PLFNBQVNiLFFBQVFjLFNBQVIsQ0FBa0JDLEdBQWxCLENBQ1hYLEtBQUtDLEdBRE0sRUFDREQsS0FBS0UsTUFESixDQUFmOztBQUlBTyxXQUFPRyxLQUFQLENBQWFiLEdBQWI7O0FBRUEsV0FBT1UsTUFBUDtBQUNIOztBQUVEOzs7OztBQUtPLFNBQVNJLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDN0MsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5cbi8qKlxuICogQWRkIGEgV01TIGxheWVyIHRvIGEgbWFwLiBvcHRzIG11c3QgYmU6XG4gKiB7XG4gKiAgdXJsOiAnJyxcbiAqICBwYXJhbXM6IHt9XG4gKiAgfVxuICogQHBhcmFtIG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdNU0xheWVyKG1hcCwgb3B0cykge1xuXG4gICAgaWYob3B0cy51cmwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvcHRzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgIG1pblpvb206IDQsXG4gICAgfSwgb3B0cy5wYXJhbXMpO1xuXG4gICAgY29uc3QgbWxheWVyID0gbGVhZmxldC50aWxlTGF5ZXIud21zKFxuICAgICAgICBvcHRzLnVybCwgb3B0cy5wYXJhbXNcbiAgICApO1xuXG4gICAgbWxheWVyLmFkZFRvKG1hcCk7XG5cbiAgICByZXR1cm4gbWxheWVyO1xufVxuXG4vKipcbiAqIFNob3cgYSBwb3B1cFxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0ZlYXR1cmVQb3B1cChmZWF0dXJlLCBsYXllcikge1xuICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgICB9XG5cbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/helpers.js\n");
+eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;\n/* unused harmony export showFeaturePopup */\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/**\r\n * Add a WMS layer to a map. opts must be:\r\n * {\r\n * url: '',\r\n * params: {}\r\n * }\r\n * @param map\r\n * @param opts\r\n */\nfunction addWMSLayer(map, opts) {\n\n if (opts.url === '') {\n return;\n }\n\n opts.params = Object.assign({\n format: 'image/png',\n transparent: true,\n maxZoom: 14,\n minZoom: 4\n }, opts.params);\n\n var mlayer = leaflet.tileLayer.wms(opts.url, opts.params);\n\n mlayer.addTo(map);\n\n return mlayer;\n}\n\n/**\r\n * Show a popup\r\n * @param feature\r\n * @param layer\r\n */\nfunction showFeaturePopup(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzPzNjZDUiXSwibmFtZXMiOlsibGVhZmxldCIsInJlcXVpcmUiLCJhZGRXTVNMYXllciIsIm1hcCIsIm9wdHMiLCJ1cmwiLCJwYXJhbXMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXQiLCJ0cmFuc3BhcmVudCIsIm1heFpvb20iLCJtaW5ab29tIiwibWxheWVyIiwidGlsZUxheWVyIiwid21zIiwiYWRkVG8iLCJzaG93RmVhdHVyZVBvcHVwIiwiZmVhdHVyZSIsImxheWVyIiwicG9wdXBfaHRtbCIsInByb3BlcnRpZXMiLCJwb3B1cCIsImJpbmRQb3B1cCJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7Ozs7Ozs7O0FBU08sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDOztBQUVuQyxRQUFHQSxLQUFLQyxHQUFMLEtBQWEsRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFREQsU0FBS0UsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQWM7QUFDeEJDLGdCQUFRLFdBRGdCO0FBRXhCQyxxQkFBYSxJQUZXO0FBR3hCQyxpQkFBUyxFQUhlO0FBSXhCQyxpQkFBUztBQUplLEtBQWQsRUFLWFIsS0FBS0UsTUFMTSxDQUFkOztBQU9BLFFBQU1PLFNBQVNiLFFBQVFjLFNBQVIsQ0FBa0JDLEdBQWxCLENBQ1hYLEtBQUtDLEdBRE0sRUFDREQsS0FBS0UsTUFESixDQUFmOztBQUlBTyxXQUFPRyxLQUFQLENBQWFiLEdBQWI7O0FBRUEsV0FBT1UsTUFBUDtBQUNIOztBQUVEOzs7OztBQUtPLFNBQVNJLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDN0MsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcclxuXHJcbi8qKlxyXG4gKiBBZGQgYSBXTVMgbGF5ZXIgdG8gYSBtYXAuIG9wdHMgbXVzdCBiZTpcclxuICoge1xyXG4gKiAgdXJsOiAnJyxcclxuICogIHBhcmFtczoge31cclxuICogIH1cclxuICogQHBhcmFtIG1hcFxyXG4gKiBAcGFyYW0gb3B0c1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFdNU0xheWVyKG1hcCwgb3B0cykge1xyXG5cclxuICAgIGlmKG9wdHMudXJsID09PSAnJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBvcHRzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXHJcbiAgICAgICAgbWF4Wm9vbTogMTQsXHJcbiAgICAgICAgbWluWm9vbTogNCxcclxuICAgIH0sIG9wdHMucGFyYW1zKTtcclxuXHJcbiAgICBjb25zdCBtbGF5ZXIgPSBsZWFmbGV0LnRpbGVMYXllci53bXMoXHJcbiAgICAgICAgb3B0cy51cmwsIG9wdHMucGFyYW1zXHJcbiAgICApO1xyXG5cclxuICAgIG1sYXllci5hZGRUbyhtYXApO1xyXG5cclxuICAgIHJldHVybiBtbGF5ZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaG93IGEgcG9wdXBcclxuICogQHBhcmFtIGZlYXR1cmVcclxuICogQHBhcmFtIGxheWVyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2hvd0ZlYXR1cmVQb3B1cChmZWF0dXJlLCBsYXllcikge1xyXG4gICAgbGV0IHBvcHVwX2h0bWwgPSAnJztcclxuICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwKSB7XHJcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcclxuICAgIH1cclxuXHJcbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcclxufVxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/helpers.js\n");
/***/ }),
@@ -392,7 +392,7 @@ eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__airspace_map__ = __webpack_require__(\"./resources/js/maps/airspace_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__live_map__ = __webpack_require__(\"./resources/js/maps/live_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__route_map__ = __webpack_require__(\"./resources/js/maps/route_map.js\");\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_airspace_map\", function() { return __WEBPACK_IMPORTED_MODULE_0__airspace_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_live_map\", function() { return __WEBPACK_IMPORTED_MODULE_1__live_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_route_map\", function() { return __WEBPACK_IMPORTED_MODULE_2__route_map__[\"a\"]; });\n/**\n * All of the functionality required for maps\n */\n\nwindow.L = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\");\n__webpack_require__(\"./node_modules/leaflet-rotatedmarker/leaflet.rotatedMarker.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcz85MmYwIl0sIm5hbWVzIjpbIndpbmRvdyIsIkwiLCJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUFBOzs7O0FBSUFBLE9BQU9DLENBQVAsR0FBVyxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFYO0FBQ0EsbUJBQUFBLENBQVEscURBQVI7QUFDQSxtQkFBQUEsQ0FBUSwrREFBUjs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWxsIG9mIHRoZSBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBtYXBzXG4gKi9cblxud2luZG93LkwgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5yZXF1aXJlKCdMZWFmbGV0Lkdlb2Rlc2ljJyk7XG5yZXF1aXJlKCdsZWFmbGV0LXJvdGF0ZWRtYXJrZXInKTtcblxuaW1wb3J0IHJlbmRlcl9haXJzcGFjZV9tYXAgZnJvbSAnLi9haXJzcGFjZV9tYXAnXG5pbXBvcnQgcmVuZGVyX2xpdmVfbWFwIGZyb20gJy4vbGl2ZV9tYXAnXG5pbXBvcnQgcmVuZGVyX3JvdXRlX21hcCBmcm9tICcuL3JvdXRlX21hcCdcblxuZXhwb3J0IHtcbiAgcmVuZGVyX2FpcnNwYWNlX21hcCxcbiAgcmVuZGVyX2xpdmVfbWFwLFxuICByZW5kZXJfcm91dGVfbWFwLFxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/index.js\n");
+eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__airspace_map__ = __webpack_require__(\"./resources/js/maps/airspace_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__live_map__ = __webpack_require__(\"./resources/js/maps/live_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__route_map__ = __webpack_require__(\"./resources/js/maps/route_map.js\");\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_airspace_map\", function() { return __WEBPACK_IMPORTED_MODULE_0__airspace_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_live_map\", function() { return __WEBPACK_IMPORTED_MODULE_1__live_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_route_map\", function() { return __WEBPACK_IMPORTED_MODULE_2__route_map__[\"a\"]; });\n/**\r\n * All of the functionality required for maps\r\n */\n\nwindow.L = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\");\n__webpack_require__(\"./node_modules/leaflet-rotatedmarker/leaflet.rotatedMarker.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcz85MmYwIl0sIm5hbWVzIjpbIndpbmRvdyIsIkwiLCJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUFBOzs7O0FBSUFBLE9BQU9DLENBQVAsR0FBVyxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFYO0FBQ0EsbUJBQUFBLENBQVEscURBQVI7QUFDQSxtQkFBQUEsQ0FBUSwrREFBUjs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBbGwgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgZm9yIG1hcHNcclxuICovXHJcblxyXG53aW5kb3cuTCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcclxucmVxdWlyZSgnTGVhZmxldC5HZW9kZXNpYycpO1xyXG5yZXF1aXJlKCdsZWFmbGV0LXJvdGF0ZWRtYXJrZXInKTtcclxuXHJcbmltcG9ydCByZW5kZXJfYWlyc3BhY2VfbWFwIGZyb20gJy4vYWlyc3BhY2VfbWFwJ1xyXG5pbXBvcnQgcmVuZGVyX2xpdmVfbWFwIGZyb20gJy4vbGl2ZV9tYXAnXHJcbmltcG9ydCByZW5kZXJfcm91dGVfbWFwIGZyb20gJy4vcm91dGVfbWFwJ1xyXG5cclxuZXhwb3J0IHtcclxuICByZW5kZXJfYWlyc3BhY2VfbWFwLFxyXG4gIHJlbmRlcl9saXZlX21hcCxcclxuICByZW5kZXJfcm91dGVfbWFwLFxyXG59XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2luZGV4LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/index.js\n");
/***/ }),
@@ -400,7 +400,7 @@ eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true }
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n//\n\nvar geolib = __webpack_require__(\"./node_modules/geolib/dist/geolib.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n\n\n\n/**\n * Render the live map\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n center: [29.98139, -95.33374],\n zoom: 5,\n update_uri: '/api/acars',\n pirep_uri: '/api/pireps/{id}',\n pirep_link_uri: '/pireps/{id}',\n positions: null,\n render_elem: 'map',\n aircraft_icon: '/assets/img/acars/aircraft.png',\n units: 'nmi'\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n /**\n * Hold the markers\n * @type {{}}\n */\n var markers_list = {};\n\n var pannedToCenter = false;\n\n var layerFlights = null;\n var layerSelFlight = null;\n var layerSelFlightFeature = null;\n var layerSelFlightLayer = null;\n var layerSelArr = null;\n var layerSelDep = null;\n\n /**\n * Controller for two-way bindings\n * @type {{focusMarker: focusMarker}}\n */\n var mapController = {\n /**\n * Focus on a specific marker\n * @param e\n * @param model\n */\n focusMarker: function focusMarker(e, model) {\n if (!(model.pirep.id in markers_list)) {\n console.log('marker not found in list');\n return;\n }\n\n var marker = markers_list[model.pirep.id];\n onFlightClick(marker[0], marker[1]);\n }\n };\n\n var r_map_view = rivets.bind($('#map-info-box'), { pirep: {}, controller: mapController });\n var r_table_view = rivets.bind($('#live_flights'), { pireps: [], controller: mapController });\n\n /**\n * When a flight is clicked on, show the path, etc for that flight\n * @param feature\n * @param layer\n */\n var onFlightClick = function onFlightClick(feature, layer) {\n\n var pirep_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id);\n var geojson_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id) + \"/acars/geojson\";\n\n var pirep_info = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flight_route = $.ajax({\n url: geojson_uri,\n dataType: 'json',\n error: console.log\n });\n\n // Load up the PIREP info\n $.when(flight_route).done(function (rte) {\n if (layerSelFlight !== null) {\n map.removeLayer(layerSelFlight);\n //map.removeLayer(layerSelArr);\n //map.removeLayer(layerSelDep);\n }\n\n layerSelFlight = leaflet.geodesic([], {\n weight: 5,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n wrap: false\n }).addTo(map);\n\n layerSelFlight.geoJson(rte.line);\n layerSelFlightFeature = feature;\n layerSelFlightLayer = layer;\n\n /*const dptIcon = leaflet.divIcon({\n html: '
' + rte.airports.d.icao + '
'\n });\n layerSelDep = leaflet.marker([rte.airports.d.lat, rte.airports.d.lon], {icon:dptIcon}).addTo(map);\n */\n\n // Center on it, but only do it once, in case the map is moved\n if (!pannedToCenter) {\n // find center\n var c = geolib.getCenter([{ latitude: rte.airports.a.lat, longitude: rte.airports.a.lon }, { latitude: rte.airports.d.lat, longitude: rte.airports.d.lon }]);\n\n //map.panTo({lat: c.latitude, lng: c.longitude});\n map.panTo({ lat: rte.position.lat, lng: rte.position.lon });\n pannedToCenter = true;\n }\n });\n\n //\n // When the PIREP info is done loading, show the bottom bar\n //\n $.when(pirep_info).done(function (pirep) {\n r_map_view.update({ pirep: pirep.data });\n $('#map-info-box').show();\n });\n };\n\n var updateMap = function updateMap() {\n\n console.log('reloading flights from acars...');\n\n /**\n * AJAX UPDATE\n */\n var pirep_uri = opts.pirep_uri.replace('{id}', '');\n var pireps = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flights = $.ajax({\n url: opts.update_uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(flights).done(function (flightGeoJson) {\n\n if (layerFlights !== null) {\n layerFlights.clearLayers();\n }\n\n layerFlights = leaflet.geoJSON(flightGeoJson, {\n onEachFeature: function onEachFeature(feature, layer) {\n layer.on({\n click: function click(e) {\n pannedToCenter = false;\n onFlightClick(feature, layer);\n }\n });\n\n var popup_html = '';\n if (feature.properties && feature.properties.popup !== '' && feature.properties.popup !== undefined) {\n popup_html += feature.properties.popup;\n layer.bindPopup(popup_html);\n }\n\n // add to the list\n markers_list[feature.properties.pirep_id] = [feature, layer];\n },\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerFlights.addTo(map);\n\n // Reload the clicked-flight information\n if (layerSelFlight !== null) {\n onFlightClick(layerSelFlightFeature, layerSelFlightLayer);\n }\n });\n\n $.when(pireps).done(function (pireps) {\n r_table_view.update({\n pireps: pireps.data,\n has_data: pireps.data.length > 0\n });\n });\n };\n\n updateMap();\n setInterval(updateMap, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9saXZlX21hcC5qcz9lN2Y2Il0sIm5hbWVzIjpbImdlb2xpYiIsInJlcXVpcmUiLCJsZWFmbGV0Iiwicml2ZXRzIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImNlbnRlciIsInpvb20iLCJ1cGRhdGVfdXJpIiwicGlyZXBfdXJpIiwicGlyZXBfbGlua191cmkiLCJwb3NpdGlvbnMiLCJyZW5kZXJfZWxlbSIsImFpcmNyYWZ0X2ljb24iLCJ1bml0cyIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcmtlcnNfbGlzdCIsInBhbm5lZFRvQ2VudGVyIiwibGF5ZXJGbGlnaHRzIiwibGF5ZXJTZWxGbGlnaHQiLCJsYXllclNlbEZsaWdodEZlYXR1cmUiLCJsYXllclNlbEZsaWdodExheWVyIiwibGF5ZXJTZWxBcnIiLCJsYXllclNlbERlcCIsIm1hcENvbnRyb2xsZXIiLCJmb2N1c01hcmtlciIsImUiLCJtb2RlbCIsInBpcmVwIiwiaWQiLCJjb25zb2xlIiwibG9nIiwibWFya2VyIiwib25GbGlnaHRDbGljayIsInJfbWFwX3ZpZXciLCJiaW5kIiwiJCIsImNvbnRyb2xsZXIiLCJyX3RhYmxlX3ZpZXciLCJwaXJlcHMiLCJmZWF0dXJlIiwibGF5ZXIiLCJyZXBsYWNlIiwicHJvcGVydGllcyIsInBpcmVwX2lkIiwiZ2VvanNvbl91cmkiLCJwaXJlcF9pbmZvIiwiYWpheCIsInVybCIsImRhdGFUeXBlIiwiZXJyb3IiLCJmbGlnaHRfcm91dGUiLCJ3aGVuIiwiZG9uZSIsInJ0ZSIsInJlbW92ZUxheWVyIiwiZ2VvZGVzaWMiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiY29sb3IiLCJ3cmFwIiwiYWRkVG8iLCJnZW9Kc29uIiwibGluZSIsImMiLCJnZXRDZW50ZXIiLCJsYXRpdHVkZSIsImFpcnBvcnRzIiwiYSIsImxhdCIsImxvbmdpdHVkZSIsImxvbiIsImQiLCJwYW5UbyIsInBvc2l0aW9uIiwibG5nIiwidXBkYXRlIiwiZGF0YSIsInNob3ciLCJ1cGRhdGVNYXAiLCJmbGlnaHRzIiwiY2xlYXJMYXllcnMiLCJnZW9KU09OIiwiZmxpZ2h0R2VvSnNvbiIsIm9uRWFjaEZlYXR1cmUiLCJvbiIsImNsaWNrIiwicG9wdXBfaHRtbCIsInBvcHVwIiwidW5kZWZpbmVkIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG9uIiwicm90YXRpb25BbmdsZSIsImhlYWRpbmciLCJoYXNfZGF0YSIsImxlbmd0aCIsInNldEludGVydmFsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTs7QUFFQSxJQUFNQSxTQUFTLG1CQUFBQyxDQUFRLHNDQUFSLENBQWY7QUFDQSxJQUFNQyxVQUFVLG1CQUFBRCxDQUFRLDRDQUFSLENBQWhCO0FBQ0EsSUFBTUUsU0FBUyxtQkFBQUYsQ0FBUSxzQ0FBUixDQUFmOztBQUVBO0FBQ0E7O0FBRUE7Ozs7O0FBS0EseURBQWUsVUFBQ0csSUFBRCxFQUFVOztBQUVyQkEsV0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ2pCQyxnQkFBUSxDQUFDLFFBQUQsRUFBVyxDQUFDLFFBQVosQ0FEUztBQUVqQkMsY0FBTSxDQUZXO0FBR2pCQyxvQkFBWSxZQUhLO0FBSWpCQyxtQkFBVyxrQkFKTTtBQUtqQkMsd0JBQWdCLGNBTEM7QUFNakJDLG1CQUFXLElBTk07QUFPakJDLHFCQUFhLEtBUEk7QUFRakJDLHVCQUFlLGdDQVJFO0FBU2pCQyxlQUFPO0FBVFUsS0FBZCxFQVVKWCxJQVZJLENBQVA7O0FBWUEsUUFBTVksTUFBTSxrRUFBQUMsQ0FBY2IsSUFBZCxDQUFaO0FBQ0EsUUFBTWMsZUFBZWhCLFFBQVFpQixJQUFSLENBQWE7QUFDOUJDLGlCQUFTaEIsS0FBS1UsYUFEZ0I7QUFFOUJPLGtCQUFVLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FGb0I7QUFHOUJDLG9CQUFZLENBQUMsRUFBRCxFQUFLLEVBQUw7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LENBQW9CLGtCQUFVO0FBQzFCZix5QkFBYXNDLE1BQWIsQ0FBb0I7QUFDaEJyQyx3QkFBUUEsT0FBT3NDLElBREM7QUFFaEJrQiwwQkFBV3hELE9BQU9zQyxJQUFQLENBQVltQixNQUFaLEdBQXFCO0FBRmhCLGFBQXBCO0FBSUgsU0FMRDtBQU1ILEtBbEVEOztBQW9FQWpCO0FBQ0FrQixnQkFBWWxCLFNBQVosRUFBdUIsS0FBdkI7QUFDSCxDQXpNRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2xpdmVfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cblxuY29uc3QgZ2VvbGliID0gcmVxdWlyZSgnZ2VvbGliJyk7XG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuY29uc3Qgcml2ZXRzID0gcmVxdWlyZSgncml2ZXRzJyk7XG5cbmltcG9ydCBkcmF3X2Jhc2VfbWFwIGZyb20gJy4vYmFzZV9tYXAnXG5pbXBvcnQgeyBBQ1RVQUxfUk9VVEVfQ09MT1IgfSBmcm9tICcuL2NvbmZpZydcblxuLyoqXG4gKiBSZW5kZXIgdGhlIGxpdmUgbWFwXG4gKiBAcGFyYW0gb3B0c1xuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcblxuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2VudGVyOiBbMjkuOTgxMzksIC05NS4zMzM3NF0sXG4gICAgICAgIHpvb206IDUsXG4gICAgICAgIHVwZGF0ZV91cmk6ICcvYXBpL2FjYXJzJyxcbiAgICAgICAgcGlyZXBfdXJpOiAnL2FwaS9waXJlcHMve2lkfScsXG4gICAgICAgIHBpcmVwX2xpbmtfdXJpOiAnL3BpcmVwcy97aWR9JyxcbiAgICAgICAgcG9zaXRpb25zOiBudWxsLFxuICAgICAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgICAgIGFpcmNyYWZ0X2ljb246ICcvYXNzZXRzL2ltZy9hY2Fycy9haXJjcmFmdC5wbmcnLFxuICAgICAgICB1bml0czogJ25taScsXG4gICAgfSwgb3B0cyk7XG5cbiAgICBjb25zdCBtYXAgPSBkcmF3X2Jhc2VfbWFwKG9wdHMpO1xuICAgIGNvbnN0IGFpcmNyYWZ0SWNvbiA9IGxlYWZsZXQuaWNvbih7XG4gICAgICAgIGljb25Vcmw6IG9wdHMuYWlyY3JhZnRfaWNvbixcbiAgICAgICAgaWNvblNpemU6IFs0MiwgNDJdLFxuICAgICAgICBpY29uQW5jaG9yOiBbMjEsIDIxXSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEhvbGQgdGhlIG1hcmtlcnNcbiAgICAgKiBAdHlwZSB7e319XG4gICAgICovXG4gICAgbGV0IG1hcmtlcnNfbGlzdCA9IHt9O1xuXG4gICAgbGV0IHBhbm5lZFRvQ2VudGVyID0gZmFsc2U7XG5cbiAgICBsZXQgbGF5ZXJGbGlnaHRzID0gbnVsbDtcbiAgICBsZXQgbGF5ZXJTZWxGbGlnaHQgPSBudWxsO1xuICAgIGxldCBsYXllclNlbEZsaWdodEZlYXR1cmUgPSBudWxsO1xuICAgIGxldCBsYXllclNlbEZsaWdodExheWVyID0gbnVsbDtcbiAgICBsZXQgbGF5ZXJTZWxBcnIgPSBudWxsO1xuICAgIGxldCBsYXllclNlbERlcCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9sbGVyIGZvciB0d28td2F5IGJpbmRpbmdzXG4gICAgICogQHR5cGUge3tmb2N1c01hcmtlcjogZm9jdXNNYXJrZXJ9fVxuICAgICAqL1xuICAgIGNvbnN0IG1hcENvbnRyb2xsZXIgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb2N1cyBvbiBhIHNwZWNpZmljIG1hcmtlclxuICAgICAgICAgKiBAcGFyYW0gZVxuICAgICAgICAgKiBAcGFyYW0gbW9kZWxcbiAgICAgICAgICovXG4gICAgICAgIGZvY3VzTWFya2VyOiAoZSwgbW9kZWwpID0+IHtcbiAgICAgICAgICAgIGlmKCEobW9kZWwucGlyZXAuaWQgaW4gbWFya2Vyc19saXN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXJrZXIgbm90IGZvdW5kIGluIGxpc3QnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG1hcmtlcnNfbGlzdFttb2RlbC5waXJlcC5pZF07XG4gICAgICAgICAgICBvbkZsaWdodENsaWNrKG1hcmtlclswXSwgbWFya2VyWzFdKTtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgcl9tYXBfdmlldyA9IHJpdmV0cy5iaW5kKCQoJyNtYXAtaW5mby1ib3gnKSwge3BpcmVwOiB7fSwgY29udHJvbGxlcjogbWFwQ29udHJvbGxlcn0pO1xuICAgIGNvbnN0IHJfdGFibGVfdmlldyA9IHJpdmV0cy5iaW5kKCQoJyNsaXZlX2ZsaWdodHMnKSwge3BpcmVwczogW10sIGNvbnRyb2xsZXI6IG1hcENvbnRyb2xsZXJ9KTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYSBmbGlnaHQgaXMgY2xpY2tlZCBvbiwgc2hvdyB0aGUgcGF0aCwgZXRjIGZvciB0aGF0IGZsaWdodFxuICAgICAqIEBwYXJhbSBmZWF0dXJlXG4gICAgICogQHBhcmFtIGxheWVyXG4gICAgICovXG4gICAgY29uc3Qgb25GbGlnaHRDbGljayA9IChmZWF0dXJlLCBsYXllcikgPT4ge1xuXG4gICAgICAgIGNvbnN0IHBpcmVwX3VyaSA9IG9wdHMucGlyZXBfdXJpLnJlcGxhY2UoJ3tpZH0nLCBmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWQpO1xuICAgICAgICBjb25zdCBnZW9qc29uX3VyaSA9IG9wdHMucGlyZXBfdXJpLnJlcGxhY2UoJ3tpZH0nLCBmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWQpICsgXCIvYWNhcnMvZ2VvanNvblwiO1xuXG4gICAgICAgIGNvbnN0IHBpcmVwX2luZm8gPSAkLmFqYXgoe1xuICAgICAgICAgICAgdXJsOiBwaXJlcF91cmksXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUubG9nXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGZsaWdodF9yb3V0ZSA9ICQuYWpheCh7XG4gICAgICAgICAgICB1cmw6IGdlb2pzb25fdXJpLFxuICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2FkIHVwIHRoZSBQSVJFUCBpbmZvXG4gICAgICAgICQud2hlbihmbGlnaHRfcm91dGUpLmRvbmUoKHJ0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGxheWVyU2VsRmxpZ2h0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsRmxpZ2h0KTtcbiAgICAgICAgICAgICAgICAvL21hcC5yZW1vdmVMYXllcihsYXllclNlbEFycik7XG4gICAgICAgICAgICAgICAgLy9tYXAucmVtb3ZlTGF5ZXIobGF5ZXJTZWxEZXApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYXllclNlbEZsaWdodCA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IDUsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC45LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXG4gICAgICAgICAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgICAgICAgICB9KS5hZGRUbyhtYXApO1xuXG4gICAgICAgICAgICBsYXllclNlbEZsaWdodC5nZW9Kc29uKHJ0ZS5saW5lKTtcbiAgICAgICAgICAgIGxheWVyU2VsRmxpZ2h0RmVhdHVyZSA9IGZlYXR1cmU7XG4gICAgICAgICAgICBsYXllclNlbEZsaWdodExheWVyID0gbGF5ZXI7XG5cbiAgICAgICAgICAgIC8qY29uc3QgZHB0SWNvbiA9IGxlYWZsZXQuZGl2SWNvbih7XG4gICAgICAgICAgICAgICAgaHRtbDogJzxkaXYgY2xhc3M9XCJtYXAtaW5mby1sYWJlbFwiPjxoNT4nICsgcnRlLmFpcnBvcnRzLmQuaWNhbyArICc8L2g1PjwvZGl2PidcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsYXllclNlbERlcCA9IGxlYWZsZXQubWFya2VyKFtydGUuYWlycG9ydHMuZC5sYXQsIHJ0ZS5haXJwb3J0cy5kLmxvbl0sIHtpY29uOmRwdEljb259KS5hZGRUbyhtYXApO1xuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgLy8gQ2VudGVyIG9uIGl0LCBidXQgb25seSBkbyBpdCBvbmNlLCBpbiBjYXNlIHRoZSBtYXAgaXMgbW92ZWRcbiAgICAgICAgICAgIGlmKCFwYW5uZWRUb0NlbnRlcikge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgY2VudGVyXG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGdlb2xpYi5nZXRDZW50ZXIoW1xuICAgICAgICAgICAgICAgICAgICB7bGF0aXR1ZGU6IHJ0ZS5haXJwb3J0cy5hLmxhdCwgbG9uZ2l0dWRlOiBydGUuYWlycG9ydHMuYS5sb259LFxuICAgICAgICAgICAgICAgICAgICB7bGF0aXR1ZGU6IHJ0ZS5haXJwb3J0cy5kLmxhdCwgbG9uZ2l0dWRlOiBydGUuYWlycG9ydHMuZC5sb259LFxuICAgICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICAgICAgLy9tYXAucGFuVG8oe2xhdDogYy5sYXRpdHVkZSwgbG5nOiBjLmxvbmdpdHVkZX0pO1xuICAgICAgICAgICAgICAgIG1hcC5wYW5Ubyh7bGF0OiBydGUucG9zaXRpb24ubGF0LCBsbmc6IHJ0ZS5wb3NpdGlvbi5sb259KTtcbiAgICAgICAgICAgICAgICBwYW5uZWRUb0NlbnRlciA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdoZW4gdGhlIFBJUkVQIGluZm8gaXMgZG9uZSBsb2FkaW5nLCBzaG93IHRoZSBib3R0b20gYmFyXG4gICAgICAgIC8vXG4gICAgICAgICQud2hlbihwaXJlcF9pbmZvKS5kb25lKHBpcmVwID0+IHtcbiAgICAgICAgICAgIHJfbWFwX3ZpZXcudXBkYXRlKHtwaXJlcDpwaXJlcC5kYXRhfSk7XG4gICAgICAgICAgICAkKCcjbWFwLWluZm8tYm94Jykuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlTWFwID0gKCkgPT4ge1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWxvYWRpbmcgZmxpZ2h0cyBmcm9tIGFjYXJzLi4uJyk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFKQVggVVBEQVRFXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBwaXJlcF91cmkgPSBvcHRzLnBpcmVwX3VyaS5yZXBsYWNlKCd7aWR9JywgJycpO1xuICAgICAgICBsZXQgcGlyZXBzID0gJC5hamF4KHtcbiAgICAgICAgICAgIHVybDogcGlyZXBfdXJpLFxuICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgZmxpZ2h0cyA9ICQuYWpheCh7XG4gICAgICAgICAgICB1cmw6IG9wdHMudXBkYXRlX3VyaSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXG4gICAgICAgICAgICBlcnJvcjogY29uc29sZS5sb2dcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJC53aGVuKGZsaWdodHMpLmRvbmUoZmxpZ2h0R2VvSnNvbiA9PiB7XG5cbiAgICAgICAgICAgIGlmIChsYXllckZsaWdodHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsYXllckZsaWdodHMuY2xlYXJMYXllcnMoKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYXllckZsaWdodHMgPSBsZWFmbGV0Lmdlb0pTT04oZmxpZ2h0R2VvSnNvbiwge1xuICAgICAgICAgICAgICAgIG9uRWFjaEZlYXR1cmU6IChmZWF0dXJlLCBsYXllcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsYXllci5vbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5uZWRUb0NlbnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2soZmVhdHVyZSwgbGF5ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgKGZlYXR1cmUucHJvcGVydGllcy5wb3B1cCAhPT0gJycgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cF9odG1sICs9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLmJpbmRQb3B1cChwb3B1cF9odG1sKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0byB0aGUgbGlzdFxuICAgICAgICAgICAgICAgICAgICBtYXJrZXJzX2xpc3RbZmVhdHVyZS5wcm9wZXJ0aWVzLnBpcmVwX2lkXSA9IFtmZWF0dXJlLCBsYXllcl07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlYWZsZXQubWFya2VyKGxhdGxvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYWlyY3JhZnRJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGF5ZXJGbGlnaHRzLmFkZFRvKG1hcCk7XG5cbiAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgY2xpY2tlZC1mbGlnaHQgaW5mb3JtYXRpb25cbiAgICAgICAgICAgIGlmIChsYXllclNlbEZsaWdodCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2sobGF5ZXJTZWxGbGlnaHRGZWF0dXJlLCBsYXllclNlbEZsaWdodExheWVyKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAkLndoZW4ocGlyZXBzKS5kb25lKHBpcmVwcyA9PiB7XG4gICAgICAgICAgICByX3RhYmxlX3ZpZXcudXBkYXRlKHtcbiAgICAgICAgICAgICAgICBwaXJlcHM6IHBpcmVwcy5kYXRhLFxuICAgICAgICAgICAgICAgIGhhc19kYXRhOiAocGlyZXBzLmRhdGEubGVuZ3RoID4gMCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZU1hcCgpO1xuICAgIHNldEludGVydmFsKHVwZGF0ZU1hcCwgMTAwMDApXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvbGl2ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/live_map.js\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n//\n\nvar geolib = __webpack_require__(\"./node_modules/geolib/dist/geolib.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n\n\n\n/**\r\n * Render the live map\r\n * @param opts\r\n * @private\r\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n center: [29.98139, -95.33374],\n zoom: 5,\n update_uri: '/api/acars',\n pirep_uri: '/api/pireps/{id}',\n pirep_link_uri: '/pireps/{id}',\n positions: null,\n render_elem: 'map',\n aircraft_icon: '/assets/img/acars/aircraft.png',\n units: 'nmi'\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n /**\r\n * Hold the markers\r\n * @type {{}}\r\n */\n var markers_list = {};\n\n var pannedToCenter = false;\n\n var layerFlights = null;\n var layerSelFlight = null;\n var layerSelFlightFeature = null;\n var layerSelFlightLayer = null;\n var layerSelArr = null;\n var layerSelDep = null;\n\n /**\r\n * Controller for two-way bindings\r\n * @type {{focusMarker: focusMarker}}\r\n */\n var mapController = {\n /**\r\n * Focus on a specific marker\r\n * @param e\r\n * @param model\r\n */\n focusMarker: function focusMarker(e, model) {\n if (!(model.pirep.id in markers_list)) {\n console.log('marker not found in list');\n return;\n }\n\n var marker = markers_list[model.pirep.id];\n onFlightClick(marker[0], marker[1]);\n }\n };\n\n var r_map_view = rivets.bind($('#map-info-box'), { pirep: {}, controller: mapController });\n var r_table_view = rivets.bind($('#live_flights'), { pireps: [], controller: mapController });\n\n /**\r\n * When a flight is clicked on, show the path, etc for that flight\r\n * @param feature\r\n * @param layer\r\n */\n var onFlightClick = function onFlightClick(feature, layer) {\n\n var pirep_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id);\n var geojson_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id) + \"/acars/geojson\";\n\n var pirep_info = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flight_route = $.ajax({\n url: geojson_uri,\n dataType: 'json',\n error: console.log\n });\n\n // Load up the PIREP info\n $.when(flight_route).done(function (rte) {\n if (layerSelFlight !== null) {\n map.removeLayer(layerSelFlight);\n //map.removeLayer(layerSelArr);\n //map.removeLayer(layerSelDep);\n }\n\n layerSelFlight = leaflet.geodesic([], {\n weight: 5,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n wrap: false\n }).addTo(map);\n\n layerSelFlight.geoJson(rte.line);\n layerSelFlightFeature = feature;\n layerSelFlightLayer = layer;\n\n /*const dptIcon = leaflet.divIcon({\r\n html: '' + rte.airports.d.icao + '
'\r\n });\r\n layerSelDep = leaflet.marker([rte.airports.d.lat, rte.airports.d.lon], {icon:dptIcon}).addTo(map);\r\n */\n\n // Center on it, but only do it once, in case the map is moved\n if (!pannedToCenter) {\n // find center\n var c = geolib.getCenter([{ latitude: rte.airports.a.lat, longitude: rte.airports.a.lon }, { latitude: rte.airports.d.lat, longitude: rte.airports.d.lon }]);\n\n //map.panTo({lat: c.latitude, lng: c.longitude});\n map.panTo({ lat: rte.position.lat, lng: rte.position.lon });\n pannedToCenter = true;\n }\n });\n\n //\n // When the PIREP info is done loading, show the bottom bar\n //\n $.when(pirep_info).done(function (pirep) {\n r_map_view.update({ pirep: pirep.data });\n $('#map-info-box').show();\n });\n };\n\n var updateMap = function updateMap() {\n\n console.log('reloading flights from acars...');\n\n /**\r\n * AJAX UPDATE\r\n */\n var pirep_uri = opts.pirep_uri.replace('{id}', '');\n var pireps = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flights = $.ajax({\n url: opts.update_uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(flights).done(function (flightGeoJson) {\n\n if (layerFlights !== null) {\n layerFlights.clearLayers();\n }\n\n layerFlights = leaflet.geoJSON(flightGeoJson, {\n onEachFeature: function onEachFeature(feature, layer) {\n layer.on({\n click: function click(e) {\n pannedToCenter = false;\n onFlightClick(feature, layer);\n }\n });\n\n var popup_html = '';\n if (feature.properties && feature.properties.popup !== '' && feature.properties.popup !== undefined) {\n popup_html += feature.properties.popup;\n layer.bindPopup(popup_html);\n }\n\n // add to the list\n markers_list[feature.properties.pirep_id] = [feature, layer];\n },\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerFlights.addTo(map);\n\n // Reload the clicked-flight information\n if (layerSelFlight !== null) {\n onFlightClick(layerSelFlightFeature, layerSelFlightLayer);\n }\n });\n\n $.when(pireps).done(function (pireps) {\n r_table_view.update({\n pireps: pireps.data,\n has_data: pireps.data.length > 0\n });\n });\n };\n\n updateMap();\n setInterval(updateMap, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9saXZlX21hcC5qcz9lN2Y2Il0sIm5hbWVzIjpbImdlb2xpYiIsInJlcXVpcmUiLCJsZWFmbGV0Iiwicml2ZXRzIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImNlbnRlciIsInpvb20iLCJ1cGRhdGVfdXJpIiwicGlyZXBfdXJpIiwicGlyZXBfbGlua191cmkiLCJwb3NpdGlvbnMiLCJyZW5kZXJfZWxlbSIsImFpcmNyYWZ0X2ljb24iLCJ1bml0cyIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcmtlcnNfbGlzdCIsInBhbm5lZFRvQ2VudGVyIiwibGF5ZXJGbGlnaHRzIiwibGF5ZXJTZWxGbGlnaHQiLCJsYXllclNlbEZsaWdodEZlYXR1cmUiLCJsYXllclNlbEZsaWdodExheWVyIiwibGF5ZXJTZWxBcnIiLCJsYXllclNlbERlcCIsIm1hcENvbnRyb2xsZXIiLCJmb2N1c01hcmtlciIsImUiLCJtb2RlbCIsInBpcmVwIiwiaWQiLCJjb25zb2xlIiwibG9nIiwibWFya2VyIiwib25GbGlnaHRDbGljayIsInJfbWFwX3ZpZXciLCJiaW5kIiwiJCIsImNvbnRyb2xsZXIiLCJyX3RhYmxlX3ZpZXciLCJwaXJlcHMiLCJmZWF0dXJlIiwibGF5ZXIiLCJyZXBsYWNlIiwicHJvcGVydGllcyIsInBpcmVwX2lkIiwiZ2VvanNvbl91cmkiLCJwaXJlcF9pbmZvIiwiYWpheCIsInVybCIsImRhdGFUeXBlIiwiZXJyb3IiLCJmbGlnaHRfcm91dGUiLCJ3aGVuIiwiZG9uZSIsInJ0ZSIsInJlbW92ZUxheWVyIiwiZ2VvZGVzaWMiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiY29sb3IiLCJ3cmFwIiwiYWRkVG8iLCJnZW9Kc29uIiwibGluZSIsImMiLCJnZXRDZW50ZXIiLCJsYXRpdHVkZSIsImFpcnBvcnRzIiwiYSIsImxhdCIsImxvbmdpdHVkZSIsImxvbiIsImQiLCJwYW5UbyIsInBvc2l0aW9uIiwibG5nIiwidXBkYXRlIiwiZGF0YSIsInNob3ciLCJ1cGRhdGVNYXAiLCJmbGlnaHRzIiwiY2xlYXJMYXllcnMiLCJnZW9KU09OIiwiZmxpZ2h0R2VvSnNvbiIsIm9uRWFjaEZlYXR1cmUiLCJvbiIsImNsaWNrIiwicG9wdXBfaHRtbCIsInBvcHVwIiwidW5kZWZpbmVkIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG9uIiwicm90YXRpb25BbmdsZSIsImhlYWRpbmciLCJoYXNfZGF0YSIsImxlbmd0aCIsInNldEludGVydmFsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTs7QUFFQSxJQUFNQSxTQUFTLG1CQUFBQyxDQUFRLHNDQUFSLENBQWY7QUFDQSxJQUFNQyxVQUFVLG1CQUFBRCxDQUFRLDRDQUFSLENBQWhCO0FBQ0EsSUFBTUUsU0FBUyxtQkFBQUYsQ0FBUSxzQ0FBUixDQUFmOztBQUVBO0FBQ0E7O0FBRUE7Ozs7O0FBS0EseURBQWUsVUFBQ0csSUFBRCxFQUFVOztBQUVyQkEsV0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ2pCQyxnQkFBUSxDQUFDLFFBQUQsRUFBVyxDQUFDLFFBQVosQ0FEUztBQUVqQkMsY0FBTSxDQUZXO0FBR2pCQyxvQkFBWSxZQUhLO0FBSWpCQyxtQkFBVyxrQkFKTTtBQUtqQkMsd0JBQWdCLGNBTEM7QUFNakJDLG1CQUFXLElBTk07QUFPakJDLHFCQUFhLEtBUEk7QUFRakJDLHVCQUFlLGdDQVJFO0FBU2pCQyxlQUFPO0FBVFUsS0FBZCxFQVVKWCxJQVZJLENBQVA7O0FBWUEsUUFBTVksTUFBTSxrRUFBQUMsQ0FBY2IsSUFBZCxDQUFaO0FBQ0EsUUFBTWMsZUFBZWhCLFFBQVFpQixJQUFSLENBQWE7QUFDOUJDLGlCQUFTaEIsS0FBS1UsYUFEZ0I7QUFFOUJPLGtCQUFVLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FGb0I7QUFHOUJDLG9CQUFZLENBQUMsRUFBRCxFQUFLLEVBQUw7QUFIa0IsS0FBYixDQUFyQjs7QUFNQTs7OztBQUlBLFFBQUlDLGVBQWUsRUFBbkI7O0FBRUEsUUFBSUMsaUJBQWlCLEtBQXJCOztBQUVBLFFBQUlDLGVBQWUsSUFBbkI7QUFDQSxRQUFJQyxpQkFBaUIsSUFBckI7QUFDQSxRQUFJQyx3QkFBd0IsSUFBNUI7QUFDQSxRQUFJQyxzQkFBc0IsSUFBMUI7QUFDQSxRQUFJQyxjQUFjLElBQWxCO0FBQ0EsUUFBSUMsY0FBYyxJQUFsQjs7QUFFQTs7OztBQUlBLFFBQU1DLGdCQUFnQjtBQUNsQjs7Ozs7QUFLQUMscUJBQWEscUJBQUNDLENBQUQsRUFBSUMsS0FBSixFQUFjO0FBQ3ZCLGdCQUFHLEVBQUVBLE1BQU1DLEtBQU4sQ0FBWUMsRUFBWixJQUFrQmIsWUFBcEIsQ0FBSCxFQUFzQztBQUNsQ2Msd0JBQVFDLEdBQVIsQ0FBWSwwQkFBWjtBQUNBO0FBQ0g7O0FBRUQsZ0JBQU1DLFNBQVNoQixhQUFhVyxNQUFNQyxLQUFOLENBQVlDLEVBQXpCLENBQWY7QUFDQUksMEJBQWNELE9BQU8sQ0FBUCxDQUFkLEVBQXlCQSxPQUFPLENBQVAsQ0FBekI7QUFDSDtBQWRpQixLQUF0Qjs7QUFpQkEsUUFBTUUsYUFBYXRDLE9BQU91QyxJQUFQLENBQVlDLEVBQUUsZUFBRixDQUFaLEVBQWdDLEVBQUNSLE9BQU8sRUFBUixFQUFZUyxZQUFZYixhQUF4QixFQUFoQyxDQUFuQjtBQUNBLFFBQU1jLGVBQWUxQyxPQUFPdUMsSUFBUCxDQUFZQyxFQUFFLGVBQUYsQ0FBWixFQUFnQyxFQUFDRyxRQUFRLEVBQVQsRUFBYUYsWUFBWWIsYUFBekIsRUFBaEMsQ0FBckI7O0FBRUE7Ozs7O0FBS0EsUUFBTVMsZ0JBQWdCLFNBQWhCQSxhQUFnQixDQUFDTyxPQUFELEVBQVVDLEtBQVYsRUFBb0I7O0FBRXRDLFlBQU10QyxZQUFZTixLQUFLTSxTQUFMLENBQWV1QyxPQUFmLENBQXVCLE1BQXZCLEVBQStCRixRQUFRRyxVQUFSLENBQW1CQyxRQUFsRCxDQUFsQjtBQUNBLFlBQU1DLGNBQWNoRCxLQUFLTSxTQUFMLENBQWV1QyxPQUFmLENBQXVCLE1BQXZCLEVBQStCRixRQUFRRyxVQUFSLENBQW1CQyxRQUFsRCxJQUE4RCxnQkFBbEY7O0FBRUEsWUFBTUUsYUFBYVYsRUFBRVcsSUFBRixDQUFPO0FBQ3RCQyxpQkFBSzdDLFNBRGlCO0FBRXRCOEMsc0JBQVUsTUFGWTtBQUd0QkMsbUJBQU9wQixRQUFRQztBQUhPLFNBQVAsQ0FBbkI7O0FBTUEsWUFBTW9CLGVBQWVmLEVBQUVXLElBQUYsQ0FBTztBQUN4QkMsaUJBQUtILFdBRG1CO0FBRXhCSSxzQkFBVSxNQUZjO0FBR3hCQyxtQkFBT3BCLFFBQVFDO0FBSFMsU0FBUCxDQUFyQjs7QUFNQTtBQUNBSyxVQUFFZ0IsSUFBRixDQUFPRCxZQUFQLEVBQXFCRSxJQUFyQixDQUEwQixVQUFDQyxHQUFELEVBQVM7QUFDL0IsZ0JBQUluQyxtQkFBbUIsSUFBdkIsRUFBNkI7QUFDekJWLG9CQUFJOEMsV0FBSixDQUFnQnBDLGNBQWhCO0FBQ0E7QUFDQTtBQUNIOztBQUVEQSw2QkFBaUJ4QixRQUFRNkQsUUFBUixDQUFpQixFQUFqQixFQUFxQjtBQUNsQ0Msd0JBQVEsQ0FEMEI7QUFFbENDLHlCQUFTLEdBRnlCO0FBR2xDQyx1QkFBTyxtRUFIMkI7QUFJbENDLHNCQUFNO0FBSjRCLGFBQXJCLEVBS2RDLEtBTGMsQ0FLUnBELEdBTFEsQ0FBakI7O0FBT0FVLDJCQUFlMkMsT0FBZixDQUF1QlIsSUFBSVMsSUFBM0I7QUFDQTNDLG9DQUF3Qm9CLE9BQXhCO0FBQ0FuQixrQ0FBc0JvQixLQUF0Qjs7QUFFQTs7Ozs7O0FBT0E7QUFDQSxnQkFBRyxDQUFDeEIsY0FBSixFQUFvQjtBQUNoQjtBQUNBLG9CQUFNK0MsSUFBSXZFLE9BQU93RSxTQUFQLENBQWlCLENBQ3ZCLEVBQUNDLFVBQVVaLElBQUlhLFFBQUosQ0FBYUMsQ0FBYixDQUFlQyxHQUExQixFQUErQkMsV0FBV2hCLElBQUlhLFFBQUosQ0FBYUMsQ0FBYixDQUFlRyxHQUF6RCxFQUR1QixFQUV2QixFQUFDTCxVQUFVWixJQUFJYSxRQUFKLENBQWFLLENBQWIsQ0FBZUgsR0FBMUIsRUFBK0JDLFdBQVdoQixJQUFJYSxRQUFKLENBQWFLLENBQWIsQ0FBZUQsR0FBekQsRUFGdUIsQ0FBakIsQ0FBVjs7QUFLQTtBQUNBOUQsb0JBQUlnRSxLQUFKLENBQVUsRUFBQ0osS0FBS2YsSUFBSW9CLFFBQUosQ0FBYUwsR0FBbkIsRUFBd0JNLEtBQUtyQixJQUFJb0IsUUFBSixDQUFhSCxHQUExQyxFQUFWO0FBQ0F0RCxpQ0FBaUIsSUFBakI7QUFDSDtBQUNKLFNBckNEOztBQXVDQTtBQUNBO0FBQ0E7QUFDQW1CLFVBQUVnQixJQUFGLENBQU9OLFVBQVAsRUFBbUJPLElBQW5CLENBQXdCLGlCQUFTO0FBQzdCbkIsdUJBQVcwQyxNQUFYLENBQWtCLEVBQUNoRCxPQUFNQSxNQUFNaUQsSUFBYixFQUFsQjtBQUNBekMsY0FBRSxlQUFGLEVBQW1CMEMsSUFBbkI7QUFDSCxTQUhEO0FBSUgsS0FoRUQ7O0FBa0VBLFFBQU1DLFlBQVksU0FBWkEsU0FBWSxHQUFNOztBQUVwQmpELGdCQUFRQyxHQUFSLENBQVksaUNBQVo7O0FBRUE7OztBQUdBLFlBQU01QixZQUFZTixLQUFLTSxTQUFMLENBQWV1QyxPQUFmLENBQXVCLE1BQXZCLEVBQStCLEVBQS9CLENBQWxCO0FBQ0EsWUFBSUgsU0FBU0gsRUFBRVcsSUFBRixDQUFPO0FBQ2hCQyxpQkFBSzdDLFNBRFc7QUFFaEI4QyxzQkFBVSxNQUZNO0FBR2hCQyxtQkFBT3BCLFFBQVFDO0FBSEMsU0FBUCxDQUFiOztBQU1BLFlBQUlpRCxVQUFVNUMsRUFBRVcsSUFBRixDQUFPO0FBQ2pCQyxpQkFBS25ELEtBQUtLLFVBRE87QUFFakIrQyxzQkFBVSxNQUZPO0FBR2pCQyxtQkFBT3BCLFFBQVFDO0FBSEUsU0FBUCxDQUFkOztBQU1BSyxVQUFFZ0IsSUFBRixDQUFPNEIsT0FBUCxFQUFnQjNCLElBQWhCLENBQXFCLHlCQUFpQjs7QUFFbEMsZ0JBQUluQyxpQkFBaUIsSUFBckIsRUFBMkI7QUFDdkJBLDZCQUFhK0QsV0FBYjtBQUNIOztBQUVEL0QsMkJBQWV2QixRQUFRdUYsT0FBUixDQUFnQkMsYUFBaEIsRUFBK0I7QUFDMUNDLCtCQUFlLHVCQUFDNUMsT0FBRCxFQUFVQyxLQUFWLEVBQW9CO0FBQy9CQSwwQkFBTTRDLEVBQU4sQ0FBUztBQUNMQywrQkFBTyxlQUFDNUQsQ0FBRCxFQUFPO0FBQ1ZULDZDQUFpQixLQUFqQjtBQUNBZ0IsMENBQWNPLE9BQWQsRUFBdUJDLEtBQXZCO0FBQ0g7QUFKSSxxQkFBVDs7QUFPQSx3QkFBSThDLGFBQWEsRUFBakI7QUFDQSx3QkFBSS9DLFFBQVFHLFVBQVIsSUFBdUJILFFBQVFHLFVBQVIsQ0FBbUI2QyxLQUFuQixLQUE2QixFQUE3QixJQUFtQ2hELFFBQVFHLFVBQVIsQ0FBbUI2QyxLQUFuQixLQUE2QkMsU0FBM0YsRUFBdUc7QUFDbkdGLHNDQUFjL0MsUUFBUUcsVUFBUixDQUFtQjZDLEtBQWpDO0FBQ0EvQyw4QkFBTWlELFNBQU4sQ0FBZ0JILFVBQWhCO0FBQ0g7O0FBRUQ7QUFDQXZFLGlDQUFhd0IsUUFBUUcsVUFBUixDQUFtQkMsUUFBaEMsSUFBNEMsQ0FBQ0osT0FBRCxFQUFVQyxLQUFWLENBQTVDO0FBQ0gsaUJBakJ5QztBQWtCMUNrRCw4QkFBYyxzQkFBVW5ELE9BQVYsRUFBbUJvRCxNQUFuQixFQUEyQjtBQUNyQywyQkFBT2pHLFFBQVFxQyxNQUFSLENBQWU0RCxNQUFmLEVBQXVCO0FBQzFCaEYsOEJBQU1ELFlBRG9CO0FBRTFCa0YsdUNBQWVyRCxRQUFRRyxVQUFSLENBQW1CbUQ7QUFGUixxQkFBdkIsQ0FBUDtBQUlIO0FBdkJ5QyxhQUEvQixDQUFmOztBQTBCQTVFLHlCQUFhMkMsS0FBYixDQUFtQnBELEdBQW5COztBQUVBO0FBQ0EsZ0JBQUlVLG1CQUFtQixJQUF2QixFQUE2QjtBQUN6QmMsOEJBQWNiLHFCQUFkLEVBQXFDQyxtQkFBckM7QUFDSDtBQUNKLFNBdENEOztBQXdDQWUsVUFBRWdCLElBQUYsQ0FBT2IsTUFBUCxFQUFlYyxJQUFmLENBQW9CLGtCQUFVO0FBQzFCZix5QkFBYXNDLE1BQWIsQ0FBb0I7QUFDaEJyQyx3QkFBUUEsT0FBT3NDLElBREM7QUFFaEJrQiwwQkFBV3hELE9BQU9zQyxJQUFQLENBQVltQixNQUFaLEdBQXFCO0FBRmhCLGFBQXBCO0FBSUgsU0FMRDtBQU1ILEtBbEVEOztBQW9FQWpCO0FBQ0FrQixnQkFBWWxCLFNBQVosRUFBdUIsS0FBdkI7QUFDSCxDQXpNRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2xpdmVfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cclxuXHJcbmNvbnN0IGdlb2xpYiA9IHJlcXVpcmUoJ2dlb2xpYicpO1xyXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5jb25zdCByaXZldHMgPSByZXF1aXJlKCdyaXZldHMnKTtcclxuXHJcbmltcG9ydCBkcmF3X2Jhc2VfbWFwIGZyb20gJy4vYmFzZV9tYXAnXHJcbmltcG9ydCB7IEFDVFVBTF9ST1VURV9DT0xPUiB9IGZyb20gJy4vY29uZmlnJ1xyXG5cclxuLyoqXHJcbiAqIFJlbmRlciB0aGUgbGl2ZSBtYXBcclxuICogQHBhcmFtIG9wdHNcclxuICogQHByaXZhdGVcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XHJcblxyXG4gICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgIGNlbnRlcjogWzI5Ljk4MTM5LCAtOTUuMzMzNzRdLFxyXG4gICAgICAgIHpvb206IDUsXHJcbiAgICAgICAgdXBkYXRlX3VyaTogJy9hcGkvYWNhcnMnLFxyXG4gICAgICAgIHBpcmVwX3VyaTogJy9hcGkvcGlyZXBzL3tpZH0nLFxyXG4gICAgICAgIHBpcmVwX2xpbmtfdXJpOiAnL3BpcmVwcy97aWR9JyxcclxuICAgICAgICBwb3NpdGlvbnM6IG51bGwsXHJcbiAgICAgICAgcmVuZGVyX2VsZW06ICdtYXAnLFxyXG4gICAgICAgIGFpcmNyYWZ0X2ljb246ICcvYXNzZXRzL2ltZy9hY2Fycy9haXJjcmFmdC5wbmcnLFxyXG4gICAgICAgIHVuaXRzOiAnbm1pJyxcclxuICAgIH0sIG9wdHMpO1xyXG5cclxuICAgIGNvbnN0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XHJcbiAgICBjb25zdCBhaXJjcmFmdEljb24gPSBsZWFmbGV0Lmljb24oe1xyXG4gICAgICAgIGljb25Vcmw6IG9wdHMuYWlyY3JhZnRfaWNvbixcclxuICAgICAgICBpY29uU2l6ZTogWzQyLCA0Ml0sXHJcbiAgICAgICAgaWNvbkFuY2hvcjogWzIxLCAyMV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvbGQgdGhlIG1hcmtlcnNcclxuICAgICAqIEB0eXBlIHt7fX1cclxuICAgICAqL1xyXG4gICAgbGV0IG1hcmtlcnNfbGlzdCA9IHt9O1xyXG5cclxuICAgIGxldCBwYW5uZWRUb0NlbnRlciA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBsYXllckZsaWdodHMgPSBudWxsO1xyXG4gICAgbGV0IGxheWVyU2VsRmxpZ2h0ID0gbnVsbDtcclxuICAgIGxldCBsYXllclNlbEZsaWdodEZlYXR1cmUgPSBudWxsO1xyXG4gICAgbGV0IGxheWVyU2VsRmxpZ2h0TGF5ZXIgPSBudWxsO1xyXG4gICAgbGV0IGxheWVyU2VsQXJyID0gbnVsbDtcclxuICAgIGxldCBsYXllclNlbERlcCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sbGVyIGZvciB0d28td2F5IGJpbmRpbmdzXHJcbiAgICAgKiBAdHlwZSB7e2ZvY3VzTWFya2VyOiBmb2N1c01hcmtlcn19XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IG1hcENvbnRyb2xsZXIgPSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogRm9jdXMgb24gYSBzcGVjaWZpYyBtYXJrZXJcclxuICAgICAgICAgKiBAcGFyYW0gZVxyXG4gICAgICAgICAqIEBwYXJhbSBtb2RlbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGZvY3VzTWFya2VyOiAoZSwgbW9kZWwpID0+IHtcclxuICAgICAgICAgICAgaWYoIShtb2RlbC5waXJlcC5pZCBpbiBtYXJrZXJzX2xpc3QpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbWFya2VyIG5vdCBmb3VuZCBpbiBsaXN0Jyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG1hcmtlcnNfbGlzdFttb2RlbC5waXJlcC5pZF07XHJcbiAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2sobWFya2VyWzBdLCBtYXJrZXJbMV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJfbWFwX3ZpZXcgPSByaXZldHMuYmluZCgkKCcjbWFwLWluZm8tYm94JyksIHtwaXJlcDoge30sIGNvbnRyb2xsZXI6IG1hcENvbnRyb2xsZXJ9KTtcclxuICAgIGNvbnN0IHJfdGFibGVfdmlldyA9IHJpdmV0cy5iaW5kKCQoJyNsaXZlX2ZsaWdodHMnKSwge3BpcmVwczogW10sIGNvbnRyb2xsZXI6IG1hcENvbnRyb2xsZXJ9KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gYSBmbGlnaHQgaXMgY2xpY2tlZCBvbiwgc2hvdyB0aGUgcGF0aCwgZXRjIGZvciB0aGF0IGZsaWdodFxyXG4gICAgICogQHBhcmFtIGZlYXR1cmVcclxuICAgICAqIEBwYXJhbSBsYXllclxyXG4gICAgICovXHJcbiAgICBjb25zdCBvbkZsaWdodENsaWNrID0gKGZlYXR1cmUsIGxheWVyKSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHBpcmVwX3VyaSA9IG9wdHMucGlyZXBfdXJpLnJlcGxhY2UoJ3tpZH0nLCBmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWQpO1xyXG4gICAgICAgIGNvbnN0IGdlb2pzb25fdXJpID0gb3B0cy5waXJlcF91cmkucmVwbGFjZSgne2lkfScsIGZlYXR1cmUucHJvcGVydGllcy5waXJlcF9pZCkgKyBcIi9hY2Fycy9nZW9qc29uXCI7XHJcblxyXG4gICAgICAgIGNvbnN0IHBpcmVwX2luZm8gPSAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6IHBpcmVwX3VyaSxcclxuICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUubG9nXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZsaWdodF9yb3V0ZSA9ICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogZ2VvanNvbl91cmksXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBMb2FkIHVwIHRoZSBQSVJFUCBpbmZvXHJcbiAgICAgICAgJC53aGVuKGZsaWdodF9yb3V0ZSkuZG9uZSgocnRlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsYXllclNlbEZsaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsRmxpZ2h0KTtcclxuICAgICAgICAgICAgICAgIC8vbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsQXJyKTtcclxuICAgICAgICAgICAgICAgIC8vbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsRGVwKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGF5ZXJTZWxGbGlnaHQgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XHJcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IDUsXHJcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjksXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQUNUVUFMX1JPVVRFX0NPTE9SLFxyXG4gICAgICAgICAgICAgICAgd3JhcDogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pLmFkZFRvKG1hcCk7XHJcblxyXG4gICAgICAgICAgICBsYXllclNlbEZsaWdodC5nZW9Kc29uKHJ0ZS5saW5lKTtcclxuICAgICAgICAgICAgbGF5ZXJTZWxGbGlnaHRGZWF0dXJlID0gZmVhdHVyZTtcclxuICAgICAgICAgICAgbGF5ZXJTZWxGbGlnaHRMYXllciA9IGxheWVyO1xyXG5cclxuICAgICAgICAgICAgLypjb25zdCBkcHRJY29uID0gbGVhZmxldC5kaXZJY29uKHtcclxuICAgICAgICAgICAgICAgIGh0bWw6ICc8ZGl2IGNsYXNzPVwibWFwLWluZm8tbGFiZWxcIj48aDU+JyArIHJ0ZS5haXJwb3J0cy5kLmljYW8gKyAnPC9oNT48L2Rpdj4nXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgbGF5ZXJTZWxEZXAgPSBsZWFmbGV0Lm1hcmtlcihbcnRlLmFpcnBvcnRzLmQubGF0LCBydGUuYWlycG9ydHMuZC5sb25dLCB7aWNvbjpkcHRJY29ufSkuYWRkVG8obWFwKTtcclxuICAgICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICAgIC8vIENlbnRlciBvbiBpdCwgYnV0IG9ubHkgZG8gaXQgb25jZSwgaW4gY2FzZSB0aGUgbWFwIGlzIG1vdmVkXHJcbiAgICAgICAgICAgIGlmKCFwYW5uZWRUb0NlbnRlcikge1xyXG4gICAgICAgICAgICAgICAgLy8gZmluZCBjZW50ZXJcclxuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBnZW9saWIuZ2V0Q2VudGVyKFtcclxuICAgICAgICAgICAgICAgICAgICB7bGF0aXR1ZGU6IHJ0ZS5haXJwb3J0cy5hLmxhdCwgbG9uZ2l0dWRlOiBydGUuYWlycG9ydHMuYS5sb259LFxyXG4gICAgICAgICAgICAgICAgICAgIHtsYXRpdHVkZTogcnRlLmFpcnBvcnRzLmQubGF0LCBsb25naXR1ZGU6IHJ0ZS5haXJwb3J0cy5kLmxvbn0sXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvL21hcC5wYW5Ubyh7bGF0OiBjLmxhdGl0dWRlLCBsbmc6IGMubG9uZ2l0dWRlfSk7XHJcbiAgICAgICAgICAgICAgICBtYXAucGFuVG8oe2xhdDogcnRlLnBvc2l0aW9uLmxhdCwgbG5nOiBydGUucG9zaXRpb24ubG9ufSk7XHJcbiAgICAgICAgICAgICAgICBwYW5uZWRUb0NlbnRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBXaGVuIHRoZSBQSVJFUCBpbmZvIGlzIGRvbmUgbG9hZGluZywgc2hvdyB0aGUgYm90dG9tIGJhclxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgJC53aGVuKHBpcmVwX2luZm8pLmRvbmUocGlyZXAgPT4ge1xyXG4gICAgICAgICAgICByX21hcF92aWV3LnVwZGF0ZSh7cGlyZXA6cGlyZXAuZGF0YX0pO1xyXG4gICAgICAgICAgICAkKCcjbWFwLWluZm8tYm94Jykuc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVNYXAgPSAoKSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWxvYWRpbmcgZmxpZ2h0cyBmcm9tIGFjYXJzLi4uJyk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFKQVggVVBEQVRFXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3QgcGlyZXBfdXJpID0gb3B0cy5waXJlcF91cmkucmVwbGFjZSgne2lkfScsICcnKTtcclxuICAgICAgICBsZXQgcGlyZXBzID0gJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBwaXJlcF91cmksXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgZmxpZ2h0cyA9ICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogb3B0cy51cGRhdGVfdXJpLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICBlcnJvcjogY29uc29sZS5sb2dcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJC53aGVuKGZsaWdodHMpLmRvbmUoZmxpZ2h0R2VvSnNvbiA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAobGF5ZXJGbGlnaHRzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBsYXllckZsaWdodHMuY2xlYXJMYXllcnMoKVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsYXllckZsaWdodHMgPSBsZWFmbGV0Lmdlb0pTT04oZmxpZ2h0R2VvSnNvbiwge1xyXG4gICAgICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogKGZlYXR1cmUsIGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIub24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbm5lZFRvQ2VudGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZsaWdodENsaWNrKGZlYXR1cmUsIGxheWVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3B1cF9odG1sID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiAoZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwICE9PSAnJyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXAgIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLmJpbmRQb3B1cChwb3B1cF9odG1sKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0byB0aGUgbGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcmtlcnNfbGlzdFtmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWRdID0gW2ZlYXR1cmUsIGxheWVyXTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVhZmxldC5tYXJrZXIobGF0bG9uLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGFpcmNyYWZ0SWNvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxheWVyRmxpZ2h0cy5hZGRUbyhtYXApO1xyXG5cclxuICAgICAgICAgICAgLy8gUmVsb2FkIHRoZSBjbGlja2VkLWZsaWdodCBpbmZvcm1hdGlvblxyXG4gICAgICAgICAgICBpZiAobGF5ZXJTZWxGbGlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2sobGF5ZXJTZWxGbGlnaHRGZWF0dXJlLCBsYXllclNlbEZsaWdodExheWVyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQud2hlbihwaXJlcHMpLmRvbmUocGlyZXBzID0+IHtcclxuICAgICAgICAgICAgcl90YWJsZV92aWV3LnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwaXJlcHM6IHBpcmVwcy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgaGFzX2RhdGE6IChwaXJlcHMuZGF0YS5sZW5ndGggPiAwKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHVwZGF0ZU1hcCgpO1xyXG4gICAgc2V0SW50ZXJ2YWwodXBkYXRlTWFwLCAxMDAwMClcclxufTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvbGl2ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/live_map.js\n");
/***/ }),
@@ -408,7 +408,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n\n\n/**\n * Show some popup text when a feature is clicked on\n * @param feature\n * @param layer\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\n * Show each point as a marker\n * @param feature\n * @param latlng\n * @returns {*}\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 5,\n fillColor: __WEBPACK_IMPORTED_MODULE_2__config__[\"b\" /* CIRCLE_COLOR */],\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\n *\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map',\n live_map: false,\n aircraft_icon: '/assets/img/acars/aircraft.png',\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var layerLiveFlight = void 0;\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 4,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\n * draw the actual route\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 3,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n\n /**\n *\n */\n var liveFlight = function liveFlight() {\n var uri = opts.pirep_uri;\n var live_route = $.ajax({\n url: uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(live_route).done(function (routeJson) {\n layerLiveFlight = leaflet.geoJSON(routeJson, {\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerLiveFlight.addTo(map);\n });\n };\n\n setInterval(liveFlight, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJsaXZlX21hcCIsImFpcmNyYWZ0X2ljb24iLCJtZXRhcl93bXMiLCJ1cmwiLCJwYXJhbXMiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJsYXllckxpdmVGbGlnaHQiLCJhZGRXTVNMYXllciIsImdlb2Rlc2ljTGF5ZXIiLCJnZW9kZXNpYyIsInN0ZXBzIiwid3JhcCIsImFkZFRvIiwiZ2VvSnNvbiIsImZpdEJvdW5kcyIsImdldEJvdW5kcyIsImUiLCJjb25zb2xlIiwibG9nIiwiZ2VvSlNPTiIsIm9uRWFjaEZlYXR1cmUiLCJzdHlsZSIsImZlYXR1cmVzIiwibGVuZ3RoIiwibGl2ZUZsaWdodCIsInVyaSIsInBpcmVwX3VyaSIsImxpdmVfcm91dGUiLCIkIiwiYWpheCIsImRhdGFUeXBlIiwiZXJyb3IiLCJ3aGVuIiwiZG9uZSIsInJvdXRlSnNvbiIsImxhdGxvbiIsIm1hcmtlciIsInJvdGF0aW9uQW5nbGUiLCJoZWFkaW5nIiwic2V0SW50ZXJ2YWwiXSwibWFwcGluZ3Mi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QVUsVUFBRUksSUFBRixDQUFPTCxVQUFQLEVBQW1CTSxJQUFuQixDQUF3QixVQUFDQyxTQUFELEVBQWU7QUFDbkM1Qiw4QkFBa0J0QyxRQUFRbUQsT0FBUixDQUFnQmUsU0FBaEIsRUFBMkI7QUFDekN6RCw4QkFBYyxzQkFBVU4sT0FBVixFQUFtQmdFLE1BQW5CLEVBQTJCO0FBQ3JDLDJCQUFPbkUsUUFBUW9FLE1BQVIsQ0FBZUQsTUFBZixFQUF1QjtBQUMxQm5DLDhCQUFNRCxZQURvQjtBQUUxQnNDLHVDQUFlbEUsUUFBUUcsVUFBUixDQUFtQmdFO0FBRlIscUJBQXZCLENBQVA7QUFJSDtBQU53QyxhQUEzQixDQUFsQjs7QUFTQWhDLDRCQUFnQk0sS0FBaEIsQ0FBc0JSLEdBQXRCO0FBQ0gsU0FYRDtBQVlILEtBcEJEOztBQXNCQW1DLGdCQUFZZixVQUFaLEVBQXdCLEtBQXhCO0FBQ0gsQ0EzSEQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuXG5pbXBvcnQgZHJhd19iYXNlX21hcCBmcm9tICcuL2Jhc2VfbWFwJ1xuaW1wb3J0IHthZGRXTVNMYXllcn0gZnJvbSAnLi9oZWxwZXJzJztcblxuaW1wb3J0IHtBQ1RVQUxfUk9VVEVfQ09MT1IsIENJUkNMRV9DT0xPUiwgUExBTl9ST1VURV9DT0xPUn0gZnJvbSAnLi9jb25maWcnXG5cbi8qKlxuICogU2hvdyBzb21lIHBvcHVwIHRleHQgd2hlbiBhIGZlYXR1cmUgaXMgY2xpY2tlZCBvblxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXllclxuICovXG5leHBvcnQgY29uc3Qgb25GZWF0dXJlUG9pbnRDbGljayA9IChmZWF0dXJlLCBsYXllcikgPT4ge1xuICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgICB9XG5cbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcbn07XG5cbi8qKlxuICogU2hvdyBlYWNoIHBvaW50IGFzIGEgbWFya2VyXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHBhcmFtIGxhdGxuZ1xuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBjb25zdCBwb2ludFRvTGF5ZXIgPSAoZmVhdHVyZSwgbGF0bG5nKSA9PiB7XG4gICAgcmV0dXJuIGxlYWZsZXQuY2lyY2xlTWFya2VyKGxhdGxuZywge1xuICAgICAgICByYWRpdXM6IDUsXG4gICAgICAgIGZpbGxDb2xvcjogQ0lSQ0xFX0NPTE9SLFxuICAgICAgICBjb2xvcjogJyMwMDAnLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjhcbiAgICB9KVxufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gb3B0c1xuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcblxuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcblxuICAgICAgICByb3V0ZV9wb2ludHM6IG51bGwsXG4gICAgICAgIHBsYW5uZWRfcm91dGVfbGluZTogbnVsbCxcbiAgICAgICAgYWN0dWFsX3JvdXRlX3BvaW50czogbnVsbCxcbiAgICAgICAgYWN0dWFsX3JvdXRlX2xpbmU6IG51bGwsXG4gICAgICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcbiAgICAgICAgbGl2ZV9tYXA6IGZhbHNlLFxuICAgICAgICBhaXJjcmFmdF9pY29uOiAnL2Fzc2V0cy9pbWcvYWNhcnMvYWlyY3JhZnQucG5nJyxcbiAgICAgICAgbWV0YXJfd21zOiB7XG4gICAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICAgICAgcGFyYW1zOiB7fVxuICAgICAgICB9LFxuICAgIH0sIG9wdHMpO1xuXG4gICAgY29uc3QgYWlyY3JhZnRJY29uID0gbGVhZmxldC5pY29uKHtcbiAgICAgICAgaWNvblVybDogb3B0cy5haXJjcmFmdF9pY29uLFxuICAgICAgICBpY29uU2l6ZTogWzQyLCA0Ml0sXG4gICAgICAgIGljb25BbmNob3I6IFsyMSwgMjFdLFxuICAgIH0pO1xuXG4gICAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XG4gICAgbGV0IGxheWVyTGl2ZUZsaWdodDtcblxuICAgIGlmIChvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XG4gICAgICAgIGFkZFdNU0xheWVyKG1hcCwgb3B0cy5tZXRhcl93bXMpO1xuICAgIH1cblxuICAgIGxldCBnZW9kZXNpY0xheWVyID0gbGVhZmxldC5nZW9kZXNpYyhbXSwge1xuICAgICAgICB3ZWlnaHQ6IDQsXG4gICAgICAgIG9wYWNpdHk6IDAuOSxcbiAgICAgICAgY29sb3I6IFBMQU5fUk9VVEVfQ09MT1IsXG4gICAgICAgIHN0ZXBzOiA1MCxcbiAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgfSkuYWRkVG8obWFwKTtcblxuICAgIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLnBsYW5uZWRfcm91dGVfbGluZSk7XG5cbiAgICB0cnkge1xuICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cblxuICAgIC8vIERyYXcgdGhlIHJvdXRlIHBvaW50cyBhZnRlclxuICAgIGlmIChvcHRzLnJvdXRlX3BvaW50cyAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgcm91dGVfcG9pbnRzID0gbGVhZmxldC5nZW9KU09OKG9wdHMucm91dGVfcG9pbnRzLCB7XG4gICAgICAgICAgICBvbkVhY2hGZWF0dXJlOiBvbkZlYXR1cmVQb2ludENsaWNrLFxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICdjb2xvcic6IFBMQU5fUk9VVEVfQ09MT1IsXG4gICAgICAgICAgICAgICAgJ3dlaWdodCc6IDMsXG4gICAgICAgICAgICAgICAgJ29wYWNpdHknOiAwLjY1LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcm91dGVfcG9pbnRzLmFkZFRvKG1hcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZHJhdyB0aGUgYWN0dWFsIHJvdXRlXG4gICAgICovXG5cbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfbGluZSAhPT0gbnVsbCAmJiBvcHRzLmFjdHVhbF9yb3V0ZV9saW5lLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGdlb2Rlc2ljTGF5ZXIgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XG4gICAgICAgICAgICB3ZWlnaHQ6IDMsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjksXG4gICAgICAgICAgICBjb2xvcjogQUNUVUFMX1JPVVRFX0NPTE9SLFxuICAgICAgICAgICAgc3RlcHM6IDUwLFxuICAgICAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgICAgIH0pLmFkZFRvKG1hcCk7XG5cbiAgICAgICAgZ2VvZGVzaWNMYXllci5nZW9Kc29uKG9wdHMuYWN0dWFsX3JvdXRlX2xpbmUpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCByb3V0ZV9wb2ludHMgPSBsZWFmbGV0Lmdlb0pTT04ob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzLCB7XG4gICAgICAgICAgICBvbkVhY2hGZWF0dXJlOiBvbkZlYXR1cmVQb2ludENsaWNrLFxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICdjb2xvcic6IEFDVFVBTF9ST1VURV9DT0xPUixcbiAgICAgICAgICAgICAgICAnd2VpZ2h0JzogMyxcbiAgICAgICAgICAgICAgICAnb3BhY2l0eSc6IDAuNjUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByb3V0ZV9wb2ludHMuYWRkVG8obWFwKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgY29uc3QgbGl2ZUZsaWdodCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJpID0gb3B0cy5waXJlcF91cmk7XG4gICAgICAgIGNvbnN0IGxpdmVfcm91dGUgPSAkLmFqYXgoe1xuICAgICAgICAgICAgdXJsOiB1cmksXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUubG9nXG4gICAgICAgIH0pO1xuXG4gICAgICAgICQud2hlbihsaXZlX3JvdXRlKS5kb25lKChyb3V0ZUpzb24pID0+IHtcbiAgICAgICAgICAgIGxheWVyTGl2ZUZsaWdodCA9IGxlYWZsZXQuZ2VvSlNPTihyb3V0ZUpzb24sIHtcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlYWZsZXQubWFya2VyKGxhdGxvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYWlyY3JhZnRJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGF5ZXJMaXZlRmxpZ2h0LmFkZFRvKG1hcClcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHNldEludGVydmFsKGxpdmVGbGlnaHQsIDEwMDAwKTtcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n");
+eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n\n\n/**\r\n * Show some popup text when a feature is clicked on\r\n * @param feature\r\n * @param layer\r\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\r\n * Show each point as a marker\r\n * @param feature\r\n * @param latlng\r\n * @returns {*}\r\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 5,\n fillColor: __WEBPACK_IMPORTED_MODULE_2__config__[\"b\" /* CIRCLE_COLOR */],\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\r\n *\r\n * @param opts\r\n * @private\r\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map',\n live_map: false,\n aircraft_icon: '/assets/img/acars/aircraft.png',\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var layerLiveFlight = void 0;\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 4,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\r\n * draw the actual route\r\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 3,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n\n /**\r\n *\r\n */\n var liveFlight = function liveFlight() {\n var uri = opts.pirep_uri;\n var live_route = $.ajax({\n url: uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(live_route).done(function (routeJson) {\n layerLiveFlight = leaflet.geoJSON(routeJson, {\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerLiveFlight.addTo(map);\n });\n };\n\n setInterval(liveFlight, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJsaXZlX21hcCIsImFpcmNyYWZ0X2ljb24iLCJtZXRhcl93bXMiLCJ1cmwiLCJwYXJhbXMiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJsYXllckxpdmVGbGlnaHQiLCJhZGRXTVNMYXllciIsImdlb2Rlc2ljTGF5ZXIiLCJnZW9kZXNpYyIsInN0ZXBzIiwid3JhcCIsImFkZFRvIiwiZ2VvSnNvbiIsImZpdEJvdW5kcyIsImdldEJvdW5kcyIsImUiLCJjb25zb2xlIiwibG9nIiwiZ2VvSlNPTiIsIm9uRWFjaEZlYXR1cmUiLCJzdHlsZSIsImZlYXR1cmVzIiwibGVuZ3RoIiwibGl2ZUZsaWdodCIsInVyaSIsInBpcmVwX3VyaSIsImxpdmVfcm91dGUiLCIkIiwiYWpheCIsImRhdGFUeXBlIiwiZXJyb3IiLCJ3aGVuIiwiZG9uZSIsInJvdXRlSnNvbiIsImxhdGxvbiIsIm1hcmtlciIsInJvdGF0aW9uQW5nbGUiLCJoZWFkaW5nIiwic2V0SW50ZXJ2YWwiXSwibWFwcGluZ3Mi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QVUsVUFBRUksSUFBRixDQUFPTCxVQUFQLEVBQW1CTSxJQUFuQixDQUF3QixVQUFDQyxTQUFELEVBQWU7QUFDbkM1Qiw4QkFBa0J0QyxRQUFRbUQsT0FBUixDQUFnQmUsU0FBaEIsRUFBMkI7QUFDekN6RCw4QkFBYyxzQkFBVU4sT0FBVixFQUFtQmdFLE1BQW5CLEVBQTJCO0FBQ3JDLDJCQUFPbkUsUUFBUW9FLE1BQVIsQ0FBZUQsTUFBZixFQUF1QjtBQUMxQm5DLDhCQUFNRCxZQURvQjtBQUUxQnNDLHVDQUFlbEUsUUFBUUcsVUFBUixDQUFtQmdFO0FBRlIscUJBQXZCLENBQVA7QUFJSDtBQU53QyxhQUEzQixDQUFsQjs7QUFTQWhDLDRCQUFnQk0sS0FBaEIsQ0FBc0JSLEdBQXRCO0FBQ0gsU0FYRDtBQVlILEtBcEJEOztBQXNCQW1DLGdCQUFZZixVQUFaLEVBQXdCLEtBQXhCO0FBQ0gsQ0EzSEQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5cclxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcclxuaW1wb3J0IHthZGRXTVNMYXllcn0gZnJvbSAnLi9oZWxwZXJzJztcclxuXHJcbmltcG9ydCB7QUNUVUFMX1JPVVRFX0NPTE9SLCBDSVJDTEVfQ09MT1IsIFBMQU5fUk9VVEVfQ09MT1J9IGZyb20gJy4vY29uZmlnJ1xyXG5cclxuLyoqXHJcbiAqIFNob3cgc29tZSBwb3B1cCB0ZXh0IHdoZW4gYSBmZWF0dXJlIGlzIGNsaWNrZWQgb25cclxuICogQHBhcmFtIGZlYXR1cmVcclxuICogQHBhcmFtIGxheWVyXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb25GZWF0dXJlUG9pbnRDbGljayA9IChmZWF0dXJlLCBsYXllcikgPT4ge1xyXG4gICAgbGV0IHBvcHVwX2h0bWwgPSAnJztcclxuICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwKSB7XHJcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcclxuICAgIH1cclxuXHJcbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTaG93IGVhY2ggcG9pbnQgYXMgYSBtYXJrZXJcclxuICogQHBhcmFtIGZlYXR1cmVcclxuICogQHBhcmFtIGxhdGxuZ1xyXG4gKiBAcmV0dXJucyB7Kn1cclxuICovXHJcbmV4cG9ydCBjb25zdCBwb2ludFRvTGF5ZXIgPSAoZmVhdHVyZSwgbGF0bG5nKSA9PiB7XHJcbiAgICByZXR1cm4gbGVhZmxldC5jaXJjbGVNYXJrZXIobGF0bG5nLCB7XHJcbiAgICAgICAgcmFkaXVzOiA1LFxyXG4gICAgICAgIGZpbGxDb2xvcjogQ0lSQ0xFX0NPTE9SLFxyXG4gICAgICAgIGNvbG9yOiAnIzAwMCcsXHJcbiAgICAgICAgd2VpZ2h0OiAxLFxyXG4gICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuOFxyXG4gICAgfSlcclxufVxyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBvcHRzXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xyXG5cclxuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcclxuXHJcbiAgICAgICAgcm91dGVfcG9pbnRzOiBudWxsLFxyXG4gICAgICAgIHBsYW5uZWRfcm91dGVfbGluZTogbnVsbCxcclxuICAgICAgICBhY3R1YWxfcm91dGVfcG9pbnRzOiBudWxsLFxyXG4gICAgICAgIGFjdHVhbF9yb3V0ZV9saW5lOiBudWxsLFxyXG4gICAgICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcclxuICAgICAgICBsaXZlX21hcDogZmFsc2UsXHJcbiAgICAgICAgYWlyY3JhZnRfaWNvbjogJy9hc3NldHMvaW1nL2FjYXJzL2FpcmNyYWZ0LnBuZycsXHJcbiAgICAgICAgbWV0YXJfd21zOiB7XHJcbiAgICAgICAgICAgIHVybDogJycsXHJcbiAgICAgICAgICAgIHBhcmFtczoge31cclxuICAgICAgICB9LFxyXG4gICAgfSwgb3B0cyk7XHJcblxyXG4gICAgY29uc3QgYWlyY3JhZnRJY29uID0gbGVhZmxldC5pY29uKHtcclxuICAgICAgICBpY29uVXJsOiBvcHRzLmFpcmNyYWZ0X2ljb24sXHJcbiAgICAgICAgaWNvblNpemU6IFs0MiwgNDJdLFxyXG4gICAgICAgIGljb25BbmNob3I6IFsyMSwgMjFdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XHJcbiAgICBsZXQgbGF5ZXJMaXZlRmxpZ2h0O1xyXG5cclxuICAgIGlmIChvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XHJcbiAgICAgICAgYWRkV01TTGF5ZXIobWFwLCBvcHRzLm1ldGFyX3dtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGdlb2Rlc2ljTGF5ZXIgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XHJcbiAgICAgICAgd2VpZ2h0OiA0LFxyXG4gICAgICAgIG9wYWNpdHk6IDAuOSxcclxuICAgICAgICBjb2xvcjogUExBTl9ST1VURV9DT0xPUixcclxuICAgICAgICBzdGVwczogNTAsXHJcbiAgICAgICAgd3JhcDogZmFsc2UsXHJcbiAgICB9KS5hZGRUbyhtYXApO1xyXG5cclxuICAgIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLnBsYW5uZWRfcm91dGVfbGluZSk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSlcclxuICAgIH1cclxuXHJcbiAgICAvLyBEcmF3IHRoZSByb3V0ZSBwb2ludHMgYWZ0ZXJcclxuICAgIGlmIChvcHRzLnJvdXRlX3BvaW50cyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCByb3V0ZV9wb2ludHMgPSBsZWFmbGV0Lmdlb0pTT04ob3B0cy5yb3V0ZV9wb2ludHMsIHtcclxuICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcclxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAnY29sb3InOiBQTEFOX1JPVVRFX0NPTE9SLFxyXG4gICAgICAgICAgICAgICAgJ3dlaWdodCc6IDMsXHJcbiAgICAgICAgICAgICAgICAnb3BhY2l0eSc6IDAuNjUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJvdXRlX3BvaW50cy5hZGRUbyhtYXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZHJhdyB0aGUgYWN0dWFsIHJvdXRlXHJcbiAgICAgKi9cclxuXHJcbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfbGluZSAhPT0gbnVsbCAmJiBvcHRzLmFjdHVhbF9yb3V0ZV9saW5lLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgZ2VvZGVzaWNMYXllciA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcclxuICAgICAgICAgICAgd2VpZ2h0OiAzLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjksXHJcbiAgICAgICAgICAgIGNvbG9yOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXHJcbiAgICAgICAgICAgIHN0ZXBzOiA1MCxcclxuICAgICAgICAgICAgd3JhcDogZmFsc2UsXHJcbiAgICAgICAgfSkuYWRkVG8obWFwKTtcclxuXHJcbiAgICAgICAgZ2VvZGVzaWNMYXllci5nZW9Kc29uKG9wdHMuYWN0dWFsX3JvdXRlX2xpbmUpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHJvdXRlX3BvaW50cyA9IGxlYWZsZXQuZ2VvSlNPTihvcHRzLmFjdHVhbF9yb3V0ZV9wb2ludHMsIHtcclxuICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcclxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAnY29sb3InOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXHJcbiAgICAgICAgICAgICAgICAnd2VpZ2h0JzogMyxcclxuICAgICAgICAgICAgICAgICdvcGFjaXR5JzogMC42NSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcm91dGVfcG9pbnRzLmFkZFRvKG1hcClcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IGxpdmVGbGlnaHQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXJpID0gb3B0cy5waXJlcF91cmk7XHJcbiAgICAgICAgY29uc3QgbGl2ZV9yb3V0ZSA9ICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogdXJpLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICBlcnJvcjogY29uc29sZS5sb2dcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJC53aGVuKGxpdmVfcm91dGUpLmRvbmUoKHJvdXRlSnNvbikgPT4ge1xyXG4gICAgICAgICAgICBsYXllckxpdmVGbGlnaHQgPSBsZWFmbGV0Lmdlb0pTT04ocm91dGVKc29uLCB7XHJcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVhZmxldC5tYXJrZXIobGF0bG9uLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGFpcmNyYWZ0SWNvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxheWVyTGl2ZUZsaWdodC5hZGRUbyhtYXApXHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHNldEludGVydmFsKGxpdmVGbGlnaHQsIDEwMDAwKTtcclxufTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvcm91dGVfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n");
/***/ }),
diff --git a/public/assets/frontend/css/now-ui-kit.css b/public/assets/frontend/css/now-ui-kit.css
index 48351272..0d0daf2b 100644
--- a/public/assets/frontend/css/now-ui-kit.css
+++ b/public/assets/frontend/css/now-ui-kit.css
@@ -1,28 +1,28 @@
-/*!
-
- =========================================================
- * Now-ui-kit - v1.0.0
- =========================================================
-
- * Product Page: http://www.creative-tim.com/product/now-ui-kit
- * Copyright 2017 Creative Tim (http://www.creative-tim.com)
- * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md)
-
- * Designed by www.invisionapp.com Coded by www.creative-tim.com
-
- =========================================================
-
- * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
+/*!
+
+ =========================================================
+ * Now-ui-kit - v1.0.0
+ =========================================================
+
+ * Product Page: http://www.creative-tim.com/product/now-ui-kit
+ * Copyright 2017 Creative Tim (http://www.creative-tim.com)
+ * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md)
+
+ * Designed by www.invisionapp.com Coded by www.creative-tim.com
+
+ =========================================================
+
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
*/
/* brand Colors */
/* light colors */
-/* ========================================================================
- * bootstrap-switch - v3.3.2
- * http://www.bootstrap-switch.org
- * ========================================================================
- * Copyright 2012-2013 Mattia Larentis
- * http://www.apache.org/licenses/LICENSE-2.0
+/* ========================================================================
+ * bootstrap-switch - v3.3.2
+ * http://www.bootstrap-switch.org
+ * ========================================================================
+ * Copyright 2012-2013 Mattia Larentis
+ * http://www.apache.org/licenses/LICENSE-2.0
*/
.bootstrap-switch {
display: inline-block;
@@ -293,9 +293,9 @@
}
/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */
-/* Functional styling;
- * These styles are required for noUiSlider to function.
- * You don't need to change these rules to apply your design.
+/* Functional styling;
+ * These styles are required for noUiSlider to function.
+ * You don't need to change these rules to apply your design.
*/
.noUi-target,
.noUi-target * {
@@ -353,8 +353,8 @@
cursor: inherit !important;
}
-/* Painting and performance;
- * Browsers can paint handles in their own layer.
+/* Painting and performance;
+ * Browsers can paint handles in their own layer.
*/
.noUi-base,
.noUi-handle {
@@ -362,7 +362,7 @@
transform: translate3d(0, 0, 0);
}
-/* Slider size and handle placement;
+/* Slider size and handle placement;
*/
.noUi-horizontal {
height: 1px;
@@ -391,7 +391,7 @@
top: -17px;
}
-/* Styling;
+/* Styling;
*/
.noUi-target {
background-color: rgba(182, 182, 182, 0.3);
@@ -405,7 +405,7 @@
transition: background 450ms;
}
-/* Handles and cursors;
+/* Handles and cursors;
*/
.noUi-draggable {
cursor: ew-resize;
@@ -419,8 +419,8 @@
border-radius: 3px;
background: #FFF;
cursor: default;
- -webkit-box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;
- box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;
+ -webkit-box-shadow: inset 0 0 1px #FFF,
inset 0 1px 7px #EBEBEB,
0 3px 6px -3px #BBB;
+ box-shadow: inset 0 0 1px #FFF,
inset 0 1px 7px #EBEBEB,
0 3px 6px -3px #BBB;
-webkit-transition: 300ms ease 0s;
-moz-transition: 300ms ease 0s;
-ms-transition: 300ms ease 0s;
@@ -433,7 +433,7 @@
transform: scale3d(1.5, 1.5, 1);
}
-/* Disabled state;
+/* Disabled state;
*/
[disabled] .noUi-connect {
background: #B8B8B8;
@@ -445,8 +445,8 @@
cursor: not-allowed;
}
-/* Base;
- *
+/* Base;
+ *
*/
.noUi-pips,
.noUi-pips * {
@@ -459,8 +459,8 @@
color: #999;
}
-/* Values;
- *
+/* Values;
+ *
*/
.noUi-value {
position: absolute;
@@ -472,8 +472,8 @@
font-size: 10px;
}
-/* Markings;
- *
+/* Markings;
+ *
*/
.noUi-marker {
position: absolute;
@@ -488,8 +488,8 @@
background: #AAA;
}
-/* Horizontal layout;
- *
+/* Horizontal layout;
+ *
*/
.noUi-pips-horizontal {
padding: 10px 0;
@@ -518,8 +518,8 @@
height: 15px;
}
-/* Vertical layout;
- *
+/* Vertical layout;
+ *
*/
.noUi-pips-vertical {
padding: 0 10px;
@@ -645,10 +645,10 @@
background-color: #FF3636;
}
-/*!
- * Datepicker for Bootstrap v1.7.0-dev (https://github.com/uxsolutions/bootstrap-datepicker)
- *
- * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+/*!
+ * Datepicker for Bootstrap v1.7.0-dev (https://github.com/uxsolutions/bootstrap-datepicker)
+ *
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/
.datepicker {
padding: 8px 6px;
@@ -2196,17 +2196,17 @@ fieldset[disabled]
background-color: #E3E3E3;
}
-/*.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
- border-right: 0 none;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child) {
- border-left: 0 none;
+/*.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-right: 0 none;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+ border-left: 0 none;
}*/
.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
background-color: #E3E3E3;
@@ -3753,12 +3753,12 @@ img {
box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2);
}
-/* --------------------------------
-
-Nucleo Outline Web Font - nucleoapp.com/
-License - nucleoapp.com/license/
-Created using IcoMoon - icomoon.io
-
+/* --------------------------------
+
+Nucleo Outline Web Font - nucleoapp.com/
+License - nucleoapp.com/license/
+Created using IcoMoon - icomoon.io
+
-------------------------------- */
@font-face {
font-family: 'Nucleo Outline';
@@ -3768,8 +3768,8 @@ Created using IcoMoon - icomoon.io
font-style: normal;
}
-/*------------------------
- base class definition
+/*------------------------
+ base class definition
-------------------------*/
.now-ui-icons {
display: inline-block;
@@ -3782,11 +3782,11 @@ Created using IcoMoon - icomoon.io
-moz-osx-font-smoothing: grayscale;
}
-/*------------------------
- change icon size
+/*------------------------
+ change icon size
-------------------------*/
-/*----------------------------------
- add a square/circle background
+/*----------------------------------
+ add a square/circle background
-----------------------------------*/
.now-ui-icons.circle {
padding: 0.33333333em;
@@ -3798,8 +3798,8 @@ Created using IcoMoon - icomoon.io
border-radius: 50%;
}
-/*------------------------
- list icons
+/*------------------------
+ list icons
-------------------------*/
.nc-icon-ul {
padding-left: 0;
@@ -3823,8 +3823,8 @@ Created using IcoMoon - icomoon.io
left: -1.9047619em;
}
-/*------------------------
- spinning icons
+/*------------------------
+ spinning icons
-------------------------*/
.now-ui-icons.spin {
-webkit-animation: nc-icon-spin 2s infinite linear;
@@ -3851,11 +3851,11 @@ Created using IcoMoon - icomoon.io
}
}
-/*------------------------
- rotated/flipped icons
+/*------------------------
+ rotated/flipped icons
-------------------------*/
-/*------------------------
- font icons
+/*------------------------
+ font icons
-------------------------*/
.now-ui-icons.ui-1_check:before {
content: "\EA22";
@@ -5666,21 +5666,21 @@ Created using IcoMoon - icomoon.io
}
}
-/*.separator{
- content: "Separator";
- color: #FFFFFF;
- display: block;
- width: 100%;
- padding: 20px;
-}
-.separator-line{
- background-color: #EEE;
- height: 1px;
- width: 100%;
- display: block;
-}
-.separator.separator-gray{
- background-color: #EEEEEE;
+/*.separator{
+ content: "Separator";
+ color: #FFFFFF;
+ display: block;
+ width: 100%;
+ padding: 20px;
+}
+.separator-line{
+ background-color: #EEE;
+ height: 1px;
+ width: 100%;
+ display: block;
+}
+.separator.separator-gray{
+ background-color: #EEEEEE;
}*/
.social-buttons-demo .btn {
margin-right: 5px;
diff --git a/public/assets/frontend/js/app.js b/public/assets/frontend/js/app.js
index dda367f4..622b638f 100644
--- a/public/assets/frontend/js/app.js
+++ b/public/assets/frontend/js/app.js
@@ -69,7 +69,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-eval("\n\n// This file is part of Leaflet.Geodesic.\n// Copyright (C) 2017 Henry Thasler\n// based on code by Chris Veness Copyright (C) 2014 https://github.com/chrisveness/geodesy\n//\n// Leaflet.Geodesic is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Leaflet.Geodesic is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Leaflet.Geodesic. If not, see .\n\n\n/** Extend Number object with method to convert numeric degrees to radians */\nif (typeof Number.prototype.toRadians === \"undefined\") {\n Number.prototype.toRadians = function() {\n return this * Math.PI / 180;\n };\n}\n\n/** Extend Number object with method to convert radians to numeric (signed) degrees */\nif (typeof Number.prototype.toDegrees === \"undefined\") {\n Number.prototype.toDegrees = function() {\n return this * 180 / Math.PI;\n };\n}\n\nvar INTERSECT_LNG = 179.999; // Lng used for intersection and wrap around on map edges\n\nL.Geodesic = L.Polyline.extend({\n options: {\n color: \"blue\",\n steps: 10,\n dash: 1,\n wrap: true\n },\n\n initialize: function(latlngs, options) {\n this.options = this._merge_options(this.options, options);\n this.options.dash = Math.max(1e-3, Math.min(1, parseFloat(this.options.dash) || 1));\n this.datum = {};\n this.datum.ellipsoid = {\n a: 6378137,\n b: 6356752.3142,\n f: 1 / 298.257223563\n }; // WGS-84\n this._latlngs = this._generate_Geodesic(latlngs);\n L.Polyline.prototype.initialize.call(this, this._latlngs, this.options);\n },\n\n setLatLngs: function(latlngs) {\n this._latlngs = this._generate_Geodesic(latlngs);\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\n },\n\n /**\n * Calculates some statistic values of current geodesic multipolyline\n * @returns (Object} Object with several properties (e.g. overall distance)\n */\n getStats: function() {\n let obj = {\n distance: 0,\n points: 0,\n polygons: this._latlngs.length\n }, poly, points;\n\n for (poly = 0; poly < this._latlngs.length; poly++) {\n obj.points += this._latlngs[poly].length;\n for (points = 0; points < (this._latlngs[poly].length - 1); points++) {\n obj.distance += this._vincenty_inverse(this._latlngs[poly][points],\n this._latlngs[poly][points + 1]).distance;\n }\n }\n return obj;\n },\n\n\n /**\n * Creates geodesic lines from geoJson. Replaces all current features of this instance.\n * Supports LineString, MultiLineString and Polygon\n * @param {Object} geojson - geosjon as object.\n */\n geoJson: function(geojson) {\n\n let normalized = L.GeoJSON.asFeature(geojson);\n let features = normalized.type === \"FeatureCollection\" ? normalized.features : [\n normalized\n ];\n this._latlngs = [];\n for (let feature of features) {\n let geometry = feature.type === \"Feature\" ? feature.geometry :\n feature,\n coords = geometry.coordinates;\n\n switch (geometry.type) {\n case \"LineString\":\n this._latlngs.push(this._generate_Geodesic([L.GeoJSON.coordsToLatLngs(\n coords, 0)]));\n break;\n case \"MultiLineString\":\n case \"Polygon\":\n this._latlngs.push(this._generate_Geodesic(L.GeoJSON.coordsToLatLngs(\n coords, 1)));\n break;\n case \"Point\":\n case \"MultiPoint\":\n console.log(\"Dude, points can't be drawn as geodesic lines...\");\n break;\n default:\n console.log(\"Drawing \" + geometry.type +\n \" as a geodesic is not supported. Skipping...\");\n }\n }\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\n },\n\n /**\n * Creates a great circle. Replaces all current lines.\n * @param {Object} center - geographic position\n * @param {number} radius - radius of the circle in metres\n */\n createCircle: function(center, radius) {\n let polylineIndex = 0;\n let prev = {\n lat: 0,\n lng: 0,\n brg: 0\n };\n let step;\n\n this._latlngs = [];\n this._latlngs[polylineIndex] = [];\n\n let direct = this._vincenty_direct(L.latLng(center), 0, radius, this.options\n .wrap);\n prev = L.latLng(direct.lat, direct.lng);\n this._latlngs[polylineIndex].push(prev);\n for (step = 1; step <= this.options.steps;) {\n direct = this._vincenty_direct(L.latLng(center), 360 / this.options\n .steps * step, radius, this.options.wrap);\n let gp = L.latLng(direct.lat, direct.lng);\n if (Math.abs(gp.lng - prev.lng) > 180) {\n let inverse = this._vincenty_inverse(prev, gp);\n let sec = this._intersection(prev, inverse.initialBearing, {\n lat: -89,\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\n }, 0);\n if (sec) {\n this._latlngs[polylineIndex].push(L.latLng(sec.lat, sec.lng));\n polylineIndex++;\n this._latlngs[polylineIndex] = [];\n prev = L.latLng(sec.lat, -sec.lng);\n this._latlngs[polylineIndex].push(prev);\n } else {\n polylineIndex++;\n this._latlngs[polylineIndex] = [];\n this._latlngs[polylineIndex].push(gp);\n prev = gp;\n step++;\n }\n } else {\n this._latlngs[polylineIndex].push(gp);\n prev = gp;\n step++;\n }\n }\n\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\n },\n\n /**\n * Creates a geodesic Polyline from given coordinates\n * Note: dashed lines are under work\n * @param {Object} latlngs - One or more polylines as an array. See Leaflet doc about Polyline\n * @returns (Object} An array of arrays of geographical points.\n */\n _generate_Geodesic: function(latlngs) {\n let _geo = [], _geocnt = 0;\n\n for (let poly = 0; poly < latlngs.length; poly++) {\n _geo[_geocnt] = [];\n let prev = L.latLng(latlngs[poly][0]);\n for (let points = 0; points < (latlngs[poly].length - 1); points++) {\n // use prev, so that wrapping behaves correctly\n let pointA = prev;\n let pointB = L.latLng(latlngs[poly][points + 1]);\n if (pointA.equals(pointB)) {\n continue;\n }\n let inverse = this._vincenty_inverse(pointA, pointB);\n _geo[_geocnt].push(prev);\n for (let s = 1; s <= this.options.steps;) {\n let distance = inverse.distance / this.options.steps;\n // dashed lines don't go the full distance between the points\n let dist_mult = s - 1 + this.options.dash;\n let direct = this._vincenty_direct(pointA, inverse.initialBearing, distance*dist_mult, this.options.wrap);\n let gp = L.latLng(direct.lat, direct.lng);\n if (Math.abs(gp.lng - prev.lng) > 180) {\n let sec = this._intersection(pointA, inverse.initialBearing, {\n lat: -89,\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\n }, 0);\n if (sec) {\n _geo[_geocnt].push(L.latLng(sec.lat, sec.lng));\n _geocnt++;\n _geo[_geocnt] = [];\n prev = L.latLng(sec.lat, -sec.lng);\n _geo[_geocnt].push(prev);\n } else {\n _geocnt++;\n _geo[_geocnt] = [];\n _geo[_geocnt].push(gp);\n prev = gp;\n s++;\n } \n } else {\n _geo[_geocnt].push(gp);\n // Dashed lines start a new line\n if (this.options.dash < 1){\n _geocnt++;\n // go full distance this time, to get starting point for next line\n let direct_full = this._vincenty_direct(pointA, inverse.initialBearing, distance*s, this.options.wrap);\n _geo[_geocnt] = [];\n prev = L.latLng(direct_full.lat, direct_full.lng);\n _geo[_geocnt].push(prev);\n }\n else prev = gp;\n s++;\n }\n }\n }\n _geocnt++;\n }\n return _geo;\n },\n\n /**\n * Vincenty direct calculation.\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\n *\n * @private\n * @param {number} initialBearing - Initial bearing in degrees from north.\n * @param {number} distance - Distance along bearing in metres.\n * @returns (Object} Object including point (destination point), finalBearing.\n */\n\n _vincenty_direct: function(p1, initialBearing, distance, wrap) {\n var φ1 = p1.lat.toRadians(),\n λ1 = p1.lng.toRadians();\n var α1 = initialBearing.toRadians();\n var s = distance;\n\n var a = this.datum.ellipsoid.a,\n b = this.datum.ellipsoid.b,\n f = this.datum.ellipsoid.f;\n\n var sinα1 = Math.sin(α1);\n var cosα1 = Math.cos(α1);\n\n var tanU1 = (1 - f) * Math.tan(φ1),\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\n sinU1 = tanU1 * cosU1;\n var σ1 = Math.atan2(tanU1, cosα1);\n var sinα = cosU1 * sinα1;\n var cosSqα = 1 - sinα * sinα;\n var uSq = cosSqα * (a * a - b * b) / (b * b);\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\n uSq)));\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\n\n var σ = s / (b * A),\n σʹ, iterations = 0;\n var sinσ, cosσ;\n var cos2σM;\n do {\n cos2σM = Math.cos(2 * σ1 + σ);\n sinσ = Math.sin(σ);\n cosσ = Math.cos(σ);\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\n cos2σM) -\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\n cos2σM)));\n σʹ = σ;\n σ = s / (b * A) + Δσ;\n } while (Math.abs(σ - σʹ) > 1e-12 && ++iterations);\n\n var x = sinU1 * sinσ - cosU1 * cosσ * cosα1;\n var φ2 = Math.atan2(sinU1 * cosσ + cosU1 * sinσ * cosα1, (1 - f) *\n Math.sqrt(sinα * sinα + x * x));\n var λ = Math.atan2(sinσ * sinα1, cosU1 * cosσ - sinU1 * sinσ * cosα1);\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\n var L = λ - (1 - C) * f * sinα *\n (σ + C * sinσ * (cos2σM + C * cosσ * (-1 + 2 * cos2σM * cos2σM)));\n\n var λ2;\n if (wrap) {\n λ2 = (λ1 + L + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180...+180\n } else {\n λ2 = (λ1 + L); // do not normalize\n }\n\n var revAz = Math.atan2(sinα, -x);\n\n return {\n lat: φ2.toDegrees(),\n lng: λ2.toDegrees(),\n finalBearing: revAz.toDegrees()\n };\n },\n\n /**\n * Vincenty inverse calculation.\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\n *\n * @private\n * @param {LatLng} p1 - Latitude/longitude of start point.\n * @param {LatLng} p2 - Latitude/longitude of destination point.\n * @returns {Object} Object including distance, initialBearing, finalBearing.\n * @throws {Error} If formula failed to converge.\n */\n _vincenty_inverse: function(p1, p2) {\n var φ1 = p1.lat.toRadians(),\n λ1 = p1.lng.toRadians();\n var φ2 = p2.lat.toRadians(),\n λ2 = p2.lng.toRadians();\n\n var a = this.datum.ellipsoid.a,\n b = this.datum.ellipsoid.b,\n f = this.datum.ellipsoid.f;\n\n var L = λ2 - λ1;\n var tanU1 = (1 - f) * Math.tan(φ1),\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\n sinU1 = tanU1 * cosU1;\n var tanU2 = (1 - f) * Math.tan(φ2),\n cosU2 = 1 / Math.sqrt((1 + tanU2 * tanU2)),\n sinU2 = tanU2 * cosU2;\n\n var λ = L,\n λʹ, iterations = 0;\n var cosSqα, sinσ, cos2σM, cosσ, σ, sinλ, cosλ;\n do {\n sinλ = Math.sin(λ);\n cosλ = Math.cos(λ);\n var sinSqσ = (cosU2 * sinλ) * (cosU2 * sinλ) + (cosU1 * sinU2 -\n sinU1 * cosU2 * cosλ) * (cosU1 * sinU2 - sinU1 * cosU2 * cosλ);\n sinσ = Math.sqrt(sinSqσ);\n if (sinσ == 0) return 0; // co-incident points\n cosσ = sinU1 * sinU2 + cosU1 * cosU2 * cosλ;\n σ = Math.atan2(sinσ, cosσ);\n var sinα = cosU1 * cosU2 * sinλ / sinσ;\n cosSqα = 1 - sinα * sinα;\n cos2σM = cosσ - 2 * sinU1 * sinU2 / cosSqα;\n if (isNaN(cos2σM)) cos2σM = 0; // equatorial line: cosSqα=0 (§6)\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\n λʹ = λ;\n λ = L + (1 - C) * f * sinα * (σ + C * sinσ * (cos2σM + C * cosσ * (-\n 1 + 2 * cos2σM * cos2σM)));\n } while (Math.abs(λ - λʹ) > 1e-12 && ++iterations < 100);\n if (iterations >= 100) {\n console.log(\"Formula failed to converge. Altering target position.\");\n return this._vincenty_inverse(p1, {\n lat: p2.lat,\n lng: p2.lng - 0.01\n });\n // throw new Error('Formula failed to converge');\n }\n\n var uSq = cosSqα * (a * a - b * b) / (b * b);\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\n uSq)));\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\n cos2σM) -\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\n cos2σM)));\n\n var s = b * A * (σ - Δσ);\n\n var fwdAz = Math.atan2(cosU2 * sinλ, cosU1 * sinU2 - sinU1 * cosU2 *\n cosλ);\n var revAz = Math.atan2(cosU1 * sinλ, -sinU1 * cosU2 + cosU1 * sinU2 *\n cosλ);\n\n s = Number(s.toFixed(3)); // round to 1mm precision\n return {\n distance: s,\n initialBearing: fwdAz.toDegrees(),\n finalBearing: revAz.toDegrees()\n };\n },\n\n\n /**\n * Returns the point of intersection of two paths defined by point and bearing.\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\n *\n * @param {LatLon} p1 - First point.\n * @param {number} brng1 - Initial bearing from first point.\n * @param {LatLon} p2 - Second point.\n * @param {number} brng2 - Initial bearing from second point.\n * @returns {Object} containing lat/lng information of intersection.\n *\n * @example\n * var p1 = LatLon(51.8853, 0.2545), brng1 = 108.55;\n * var p2 = LatLon(49.0034, 2.5735), brng2 = 32.44;\n * var pInt = LatLon.intersection(p1, brng1, p2, brng2); // pInt.toString(): 50.9078°N, 4.5084°E\n */\n _intersection: function(p1, brng1, p2, brng2) {\n // see http://williams.best.vwh.net/avform.htm#Intersection\n\n var φ1 = p1.lat.toRadians(),\n λ1 = p1.lng.toRadians();\n var φ2 = p2.lat.toRadians(),\n λ2 = p2.lng.toRadians();\n var θ13 = Number(brng1).toRadians(),\n θ23 = Number(brng2).toRadians();\n var Δφ = φ2 - φ1,\n Δλ = λ2 - λ1;\n\n var δ12 = 2 * Math.asin(Math.sqrt(Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +\n Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ /\n 2)));\n if (δ12 == 0) return null;\n\n // initial/final bearings between points\n var θ1 = Math.acos((Math.sin(φ2) - Math.sin(φ1) * Math.cos(δ12)) /\n (Math.sin(δ12) * Math.cos(φ1)));\n if (isNaN(θ1)) θ1 = 0; // protect against rounding\n var θ2 = Math.acos((Math.sin(φ1) - Math.sin(φ2) * Math.cos(δ12)) /\n (Math.sin(δ12) * Math.cos(φ2)));\n var θ12, θ21;\n if (Math.sin(λ2 - λ1) > 0) {\n θ12 = θ1;\n θ21 = 2 * Math.PI - θ2;\n } else {\n θ12 = 2 * Math.PI - θ1;\n θ21 = θ2;\n }\n\n var α1 = (θ13 - θ12 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 2-1-3\n var α2 = (θ21 - θ23 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 1-2-3\n\n if (Math.sin(α1) == 0 && Math.sin(α2) == 0) return null; // infinite intersections\n if (Math.sin(α1) * Math.sin(α2) < 0) return null; // ambiguous intersection\n\n //α1 = Math.abs(α1);\n //α2 = Math.abs(α2);\n // ... Ed Williams takes abs of α1/α2, but seems to break calculation?\n\n var α3 = Math.acos(-Math.cos(α1) * Math.cos(α2) +\n Math.sin(α1) * Math.sin(α2) * Math.cos(δ12));\n var δ13 = Math.atan2(Math.sin(δ12) * Math.sin(α1) * Math.sin(α2),\n Math.cos(α2) + Math.cos(α1) * Math.cos(α3));\n var φ3 = Math.asin(Math.sin(φ1) * Math.cos(δ13) +\n Math.cos(φ1) * Math.sin(δ13) * Math.cos(θ13));\n var Δλ13 = Math.atan2(Math.sin(θ13) * Math.sin(δ13) * Math.cos(φ1),\n Math.cos(δ13) - Math.sin(φ1) * Math.sin(φ3));\n var λ3 = λ1 + Δλ13;\n λ3 = (λ3 + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180..+180º\n\n return {\n lat: φ3.toDegrees(),\n lng: λ3.toDegrees()\n };\n },\n\n /**\n * Overwrites obj1's values with obj2's and adds obj2's if non existent in obj1\n * @param obj1\n * @param obj2\n * @returns obj3 a new object based on obj1 and obj2\n */\n _merge_options: function(obj1, obj2) {\n let obj3 = {};\n for (let attrname in obj1) {\n obj3[attrname] = obj1[attrname];\n }\n for (let attrname in obj2) {\n obj3[attrname] = obj2[attrname];\n }\n return obj3;\n }\n});\n\nL.geodesic = function(latlngs, options) {\n return new L.Geodesic(latlngs, options);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzPzU3NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxrQkFBa0IsNkJBQTZCO0FBQy9DO0FBQ0Esc0JBQXNCLDJDQUEyQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JB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QUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9MZWFmbGV0Lkdlb2Rlc2ljL0xlYWZsZXQuR2VvZGVzaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgTGVhZmxldC5HZW9kZXNpYy5cbi8vIENvcHlyaWdodCAoQykgMjAxNyAgSGVucnkgVGhhc2xlclxuLy8gYmFzZWQgb24gY29kZSBieSBDaHJpcyBWZW5lc3MgQ29weXJpZ2h0IChDKSAyMDE0IGh0dHBzOi8vZ2l0aHViLmNvbS9jaHJpc3ZlbmVzcy9nZW9kZXN5XG4vL1xuLy8gTGVhZmxldC5HZW9kZXNpYyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3Jcbi8vIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gTGVhZmxldC5HZW9kZXNpYyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggTGVhZmxldC5HZW9kZXNpYy4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cblxuXG4vKiogRXh0ZW5kIE51bWJlciBvYmplY3Qgd2l0aCBtZXRob2QgdG8gY29udmVydCBudW1lcmljIGRlZ3JlZXMgdG8gcmFkaWFucyAqL1xuaWYgKHR5cGVvZiBOdW1iZXIucHJvdG90eXBlLnRvUmFkaWFucyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICBOdW1iZXIucHJvdG90eXBlLnRvUmFkaWFucyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzICogTWF0aC5QSSAvIDE4MDtcbiAgfTtcbn1cblxuLyoqIEV4dGVuZCBOdW1iZXIgb2JqZWN0IHdpdGggbWV0aG9kIHRvIGNvbnZlcnQgcmFkaWFucyB0byBudW1lcmljIChzaWduZWQpIGRlZ3JlZXMgKi9cbmlmICh0eXBlb2YgTnVtYmVyLnByb3RvdHlwZS50b0RlZ3JlZXMgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgTnVtYmVyLnByb3RvdHlwZS50b0RlZ3JlZXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcyAqIDE4MCAvIE1hdGguUEk7XG4gIH07XG59XG5cbnZhciBJTlRFUlNFQ1RfTE5HID0gMTc5Ljk5OTsgLy8gTG5nIHVzZWQgZm9yIGludGVyc2VjdGlvbiBhbmQgd3JhcCBhcm91bmQgb24gbWFwIGVkZ2VzXG5cbkwuR2VvZGVzaWMgPSBMLlBvbHlsaW5lLmV4dGVuZCh7XG4gIG9wdGlvbnM6IHtcbiAgICBjb2xvcjogXCJibHVlXCIsXG4gICAgc3RlcHM6IDEwLFxuICAgIGRhc2g6IDEsXG4gICAgd3JhcDogdHJ1ZVxuICB9LFxuXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uKGxhdGxuZ3MsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLl9tZXJnZV9vcHRpb25zKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgdGhpcy5vcHRpb25zLmRhc2ggPSBNYXRoLm1heCgxZS0zLCBNYXRoLm1pbigxLCBwYXJzZUZsb2F0KHRoaXMub3B0aW9ucy5kYXNoKSB8fCAxKSk7XG4gICAgdGhpcy5kYXR1bSA9IHt9O1xuICAgIHRoaXMuZGF0dW0uZWxsaXBzb2lkID0ge1xuICAgICAgICBhOiA2Mzc4MTM3LFxuICAgICAgICBiOiA2MzU2NzUyLjMxNDIsXG4gICAgICAgIGY6IDEgLyAyOTguMjU3MjIzNTYzXG4gICAgICB9OyAvLyBXR1MtODRcbiAgICB0aGlzLl9sYXRsbmdzID0gdGhpcy5fZ2VuZXJhdGVfR2VvZGVzaWMobGF0bG5ncyk7XG4gICAgTC5Qb2x5bGluZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIHRoaXMuX2xhdGxuZ3MsIHRoaXMub3B0aW9ucyk7XG4gIH0sXG5cbiAgc2V0TGF0TG5nczogZnVuY3Rpb24obGF0bG5ncykge1xuICAgIHRoaXMuX2xhdGxuZ3MgPSB0aGlzLl9nZW5lcmF0ZV9HZW9kZXNpYyhsYXRsbmdzKTtcbiAgICBMLlBvbHlsaW5lLnByb3RvdHlwZS5zZXRMYXRMbmdzLmNhbGwodGhpcywgdGhpcy5fbGF0bG5ncyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZXMgc29tZSBzdGF0aXN0aWMgdmFsdWVzIG9mIGN1cnJlbnQgZ2VvZGVzaWMgbXVsdGlwb2x5bGluZVxuICAgKiBAcmV0dXJucyAoT2JqZWN0fSBPYmplY3Qgd2l0aCBzZXZlcmFsIHByb3BlcnRpZXMgKGUuZy4gb3ZlcmFsbCBkaXN0YW5jZSlcbiAgICovXG4gIGdldFN0YXRzOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgb2JqID0ge1xuICAgICAgICBkaXN0YW5jZTogMCxcbiAgICAgICAgcG9pbnRzOiAwLFxuICAgICAgICBwb2x5Z29uczogdGhpcy5fbGF0bG5ncy5sZW5ndGhcbiAgICAgIH0sIHBvbHksIHBvaW50cztcblxuICAgIGZvciAocG9seSA9IDA7IHBvbHkgPCB0aGlzLl9sYXRsbmdzLmxlbmd0aDsgcG9seSsrKSB7XG4gICAgICBvYmoucG9pbnRzICs9IHRoaXMuX2xhdGxuZ3NbcG9seV0ubGVuZ3RoO1xuICAgICAgZm9yIChwb2ludHMgPSAwOyBwb2ludHMgPCAodGhpcy5fbGF0bG5nc1twb2x5XS5sZW5ndGggLSAxKTsgcG9pbnRzKyspIHtcbiAgICAgICAgb2JqLmRpc3RhbmNlICs9IHRoaXMuX3ZpbmNlbnR5X2ludmVyc2UodGhpcy5fbGF0bG5nc1twb2x5XVtwb2ludHNdLFxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seV1bcG9pbnRzICsgMV0pLmRpc3RhbmNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZ2VvZGVzaWMgbGluZXMgZnJvbSBnZW9Kc29uLiBSZXBsYWNlcyBhbGwgY3VycmVudCBmZWF0dXJlcyBvZiB0aGlzIGluc3RhbmNlLlxuICAgKiBTdXBwb3J0cyBMaW5lU3RyaW5nLCBNdWx0aUxpbmVTdHJpbmcgYW5kIFBvbHlnb25cbiAgICogQHBhcmFtIHtPYmplY3R9IGdlb2pzb24gLSBnZW9zam9uIGFzIG9iamVjdC5cbiAgICovXG4gIGdlb0pzb246IGZ1bmN0aW9uKGdlb2pzb24pIHtcblxuICAgIGxldCBub3JtYWxpemVkID0gTC5HZW9KU09OLmFzRmVhdHVyZShnZW9qc29uKTtcbiAgICBsZXQgZmVhdHVyZXMgPSBub3JtYWxpemVkLnR5cGUgPT09IFwiRmVhdHVyZUNvbGxlY3Rpb25cIiA/IG5vcm1hbGl6ZWQuZmVhdHVyZXMgOiBbXG4gICAgICBub3JtYWxpemVkXG4gICAgXTtcbiAgICB0aGlzLl9sYXRsbmdzID0gW107XG4gICAgZm9yIChsZXQgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgICAgbGV0IGdlb21ldHJ5ID0gZmVhdHVyZS50eXBlID09PSBcIkZlYXR1cmVcIiA/IGZlYXR1cmUuZ2VvbWV0cnkgOlxuICAgICAgICBmZWF0dXJlLFxuICAgICAgICBjb29yZHMgPSBnZW9tZXRyeS5jb29yZGluYXRlcztcblxuICAgICAgc3dpdGNoIChnZW9tZXRyeS50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJMaW5lU3RyaW5nXCI6XG4gICAgICAgICAgdGhpcy5fbGF0bG5ncy5wdXNoKHRoaXMuX2dlbmVyYXRlX0dlb2Rlc2ljKFtMLkdlb0pTT04uY29vcmRzVG9MYXRMbmdzKFxuICAgICAgICAgICAgY29vcmRzLCAwKV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk11bHRpTGluZVN0cmluZ1wiOlxuICAgICAgICBjYXNlIFwiUG9seWdvblwiOlxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3MucHVzaCh0aGlzLl9nZW5lcmF0ZV9HZW9kZXNpYyhMLkdlb0pTT04uY29vcmRzVG9MYXRMbmdzKFxuICAgICAgICAgICAgY29vcmRzLCAxKSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiUG9pbnRcIjpcbiAgICAgICAgY2FzZSBcIk11bHRpUG9pbnRcIjpcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkR1ZGUsIHBvaW50cyBjYW4ndCBiZSBkcmF3biBhcyBnZW9kZXNpYyBsaW5lcy4uLlwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkRyYXdpbmcgXCIgKyBnZW9tZXRyeS50eXBlICtcbiAgICAgICAgICAgIFwiIGFzIGEgZ2VvZGVzaWMgaXMgbm90IHN1cHBvcnRlZC4gU2tpcHBpbmcuLi5cIik7XG4gICAgICB9XG4gICAgfVxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGdyZWF0IGNpcmNsZS4gUmVwbGFjZXMgYWxsIGN1cnJlbnQgbGluZXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjZW50ZXIgLSBnZW9ncmFwaGljIHBvc2l0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSByYWRpdXMgb2YgdGhlIGNpcmNsZSBpbiBtZXRyZXNcbiAgICovXG4gIGNyZWF0ZUNpcmNsZTogZnVuY3Rpb24oY2VudGVyLCByYWRpdXMpIHtcbiAgICBsZXQgcG9seWxpbmVJbmRleCA9IDA7XG4gICAgbGV0IHByZXYgPSB7XG4gICAgICBsYXQ6IDAsXG4gICAgICBsbmc6IDAsXG4gICAgICBicmc6IDBcbiAgICB9O1xuICAgIGxldCBzdGVwO1xuXG4gICAgdGhpcy5fbGF0bG5ncyA9IFtdO1xuICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcblxuICAgIGxldCBkaXJlY3QgPSB0aGlzLl92aW5jZW50eV9kaXJlY3QoTC5sYXRMbmcoY2VudGVyKSwgMCwgcmFkaXVzLCB0aGlzLm9wdGlvbnNcbiAgICAgIC53cmFwKTtcbiAgICBwcmV2ID0gTC5sYXRMbmcoZGlyZWN0LmxhdCwgZGlyZWN0LmxuZyk7XG4gICAgdGhpcy5fbGF0bG5nc1twb2x5bGluZUluZGV4XS5wdXNoKHByZXYpO1xuICAgIGZvciAoc3RlcCA9IDE7IHN0ZXAgPD0gdGhpcy5vcHRpb25zLnN0ZXBzOykge1xuICAgICAgZGlyZWN0ID0gdGhpcy5fdmluY2VudHlfZGlyZWN0KEwubGF0TG5nKGNlbnRlciksIDM2MCAvIHRoaXMub3B0aW9uc1xuICAgICAgICAuc3RlcHMgKiBzdGVwLCByYWRpdXMsIHRoaXMub3B0aW9ucy53cmFwKTtcbiAgICAgIGxldCBncCA9IEwubGF0TG5nKGRpcmVjdC5sYXQsIGRpcmVjdC5sbmcpO1xuICAgICAgaWYgKE1hdGguYWJzKGdwLmxuZyAtIHByZXYubG5nKSA+IDE4MCkge1xuICAgICAgICBsZXQgaW52ZXJzZSA9IHRoaXMuX3ZpbmNlbnR5X2ludmVyc2UocHJldiwgZ3ApO1xuICAgICAgICBsZXQgc2VjID0gdGhpcy5faW50ZXJzZWN0aW9uKHByZXYsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIHtcbiAgICAgICAgICBsYXQ6IC04OSxcbiAgICAgICAgICBsbmc6ICgoZ3AubG5nIC0gcHJldi5sbmcpID4gMCkgPyAtSU5URVJTRUNUX0xORyA6IElOVEVSU0VDVF9MTkdcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIGlmIChzZWMpIHtcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2goTC5sYXRMbmcoc2VjLmxhdCwgc2VjLmxuZykpO1xuICAgICAgICAgIHBvbHlsaW5lSW5kZXgrKztcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdID0gW107XG4gICAgICAgICAgcHJldiA9IEwubGF0TG5nKHNlYy5sYXQsIC1zZWMubG5nKTtcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2gocHJldik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcG9seWxpbmVJbmRleCsrO1xuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2goZ3ApO1xuICAgICAgICAgIHByZXYgPSBncDtcbiAgICAgICAgICBzdGVwKys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChncCk7XG4gICAgICAgIHByZXYgPSBncDtcbiAgICAgICAgc3RlcCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGdlb2Rlc2ljIFBvbHlsaW5lIGZyb20gZ2l2ZW4gY29vcmRpbmF0ZXNcbiAgICogTm90ZTogZGFzaGVkIGxpbmVzIGFyZSB1bmRlciB3b3JrXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBsYXRsbmdzIC0gT25lIG9yIG1vcmUgcG9seWxpbmVzIGFzIGFuIGFycmF5LiBTZWUgTGVhZmxldCBkb2MgYWJvdXQgUG9seWxpbmVcbiAgICogQHJldHVybnMgKE9iamVjdH0gQW4gYXJyYXkgb2YgYXJyYXlzIG9mIGdlb2dyYXBoaWNhbCBwb2ludHMuXG4gICAqL1xuICBfZ2VuZXJhdGVfR2VvZGVzaWM6IGZ1bmN0aW9uKGxhdGxuZ3MpIHtcbiAgICBsZXQgX2dlbyA9IFtdLCBfZ2VvY250ID0gMDtcblxuICAgIGZvciAobGV0IHBvbHkgPSAwOyBwb2x5IDwgbGF0bG5ncy5sZW5ndGg7IHBvbHkrKykge1xuICAgICAgX2dlb1tfZ2VvY250XSA9IFtdO1xuICAgICAgbGV0IHByZXYgPSBMLmxhdExuZyhsYXRsbmdzW3BvbHldWzBdKTtcbiAgICAgIGZvciAobGV0IHBvaW50cyA9IDA7IHBvaW50cyA8IChsYXRsbmdzW3BvbHldLmxlbmd0aCAtIDEpOyBwb2ludHMrKykge1xuICAgICAgICAvLyB1c2UgcHJldiwgc28gdGhhdCB3cmFwcGluZyBiZWhhdmVzIGNvcnJlY3RseVxuICAgICAgICBsZXQgcG9pbnRBID0gcHJldjtcbiAgICAgICAgbGV0IHBvaW50QiA9IEwubGF0TG5nKGxhdGxuZ3NbcG9seV1bcG9pbnRzICsgMV0pO1xuICAgICAgICBpZiAocG9pbnRBLmVxdWFscyhwb2ludEIpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGludmVyc2UgPSB0aGlzLl92aW5jZW50eV9pbnZlcnNlKHBvaW50QSwgcG9pbnRCKTtcbiAgICAgICAgX2dlb1tfZ2VvY250XS5wdXNoKHByZXYpO1xuICAgICAgICBmb3IgKGxldCBzID0gMTsgcyA8PSB0aGlzLm9wdGlvbnMuc3RlcHM7KSB7XG4gICAgICAgICAgbGV0IGRpc3RhbmNlID0gaW52ZXJzZS5kaXN0YW5jZSAvIHRoaXMub3B0aW9ucy5zdGVwcztcbiAgICAgICAgICAvLyBkYXNoZWQgbGluZXMgZG9uJ3QgZ28gdGhlIGZ1bGwgZGlzdGFuY2UgYmV0d2VlbiB0aGUgcG9pbnRzXG4gICAgICAgICAgbGV0IGRpc3RfbXVsdCA9IHMgLSAxICsgdGhpcy5vcHRpb25zLmRhc2g7XG4gICAgICAgICAgbGV0IGRpcmVjdCA9IHRoaXMuX3ZpbmNlbnR5X2RpcmVjdChwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlKmRpc3RfbXVsdCwgdGhpcy5vcHRpb25zLndyYXApO1xuICAgICAgICAgIGxldCBncCA9IEwubGF0TG5nKGRpcmVjdC5sYXQsIGRpcmVjdC5sbmcpO1xuICAgICAgICAgIGlmIChNYXRoLmFicyhncC5sbmcgLSBwcmV2LmxuZykgPiAxODApIHtcbiAgICAgICAgICAgIGxldCBzZWMgPSB0aGlzLl9pbnRlcnNlY3Rpb24ocG9pbnRBLCBpbnZlcnNlLmluaXRpYWxCZWFyaW5nLCB7XG4gICAgICAgICAgICAgIGxhdDogLTg5LFxuICAgICAgICAgICAgICBsbmc6ICgoZ3AubG5nIC0gcHJldi5sbmcpID4gMCkgPyAtSU5URVJTRUNUX0xORyA6IElOVEVSU0VDVF9MTkdcbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgaWYgKHNlYykge1xuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2goTC5sYXRMbmcoc2VjLmxhdCwgc2VjLmxuZykpO1xuICAgICAgICAgICAgICBfZ2VvY250Kys7XG4gICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0gPSBbXTtcbiAgICAgICAgICAgICAgcHJldiA9IEwubGF0TG5nKHNlYy5sYXQsIC1zZWMubG5nKTtcbiAgICAgICAgICAgICAgX2dlb1tfZ2VvY250XS5wdXNoKHByZXYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgX2dlb2NudCsrO1xuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdID0gW107XG4gICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0ucHVzaChncCk7XG4gICAgICAgICAgICAgIHByZXYgPSBncDtcbiAgICAgICAgICAgICAgcysrO1xuICAgICAgICAgICAgfSAgXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF9nZW9bX2dlb2NudF0ucHVzaChncCk7XG4gICAgICAgICAgICAvLyBEYXNoZWQgbGluZXMgc3RhcnQgYSBuZXcgbGluZVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXNoIDwgMSl7XG4gICAgICAgICAgICAgICAgX2dlb2NudCsrO1xuICAgICAgICAgICAgICAgIC8vIGdvIGZ1bGwgZGlzdGFuY2UgdGhpcyB0aW1lLCB0byBnZXQgc3RhcnRpbmcgcG9pbnQgZm9yIG5leHQgbGluZVxuICAgICAgICAgICAgICAgIGxldCBkaXJlY3RfZnVsbCA9IHRoaXMuX3ZpbmNlbnR5X2RpcmVjdChwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlKnMsIHRoaXMub3B0aW9ucy53cmFwKTtcbiAgICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdID0gW107XG4gICAgICAgICAgICAgICAgcHJldiA9IEwubGF0TG5nKGRpcmVjdF9mdWxsLmxhdCwgZGlyZWN0X2Z1bGwubG5nKTtcbiAgICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2gocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHByZXYgPSBncDtcbiAgICAgICAgICAgIHMrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIF9nZW9jbnQrKztcbiAgICB9XG4gICAgcmV0dXJuIF9nZW87XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZpbmNlbnR5IGRpcmVjdCBjYWxjdWxhdGlvbi5cbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluaXRpYWxCZWFyaW5nIC0gSW5pdGlhbCBiZWFyaW5nIGluIGRlZ3JlZXMgZnJvbSBub3J0aC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGRpc3RhbmNlIC0gRGlzdGFuY2UgYWxvbmcgYmVhcmluZyBpbiBtZXRyZXMuXG4gICAqIEByZXR1cm5zIChPYmplY3R9IE9iamVjdCBpbmNsdWRpbmcgcG9pbnQgKGRlc3RpbmF0aW9uIHBvaW50KSwgZmluYWxCZWFyaW5nLlxuICAgKi9cblxuICBfdmluY2VudHlfZGlyZWN0OiBmdW5jdGlvbihwMSwgaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlLCB3cmFwKSB7XG4gICAgdmFyIM+GMSA9IHAxLmxhdC50b1JhZGlhbnMoKSxcbiAgICAgIM67MSA9IHAxLmxuZy50b1JhZGlhbnMoKTtcbiAgICB2YXIgzrExID0gaW5pdGlhbEJlYXJpbmcudG9SYWRpYW5zKCk7XG4gICAgdmFyIHMgPSBkaXN0YW5jZTtcblxuICAgIHZhciBhID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuYSxcbiAgICAgIGIgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5iLFxuICAgICAgZiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmY7XG5cbiAgICB2YXIgc2luzrExID0gTWF0aC5zaW4ozrExKTtcbiAgICB2YXIgY29zzrExID0gTWF0aC5jb3MozrExKTtcblxuICAgIHZhciB0YW5VMSA9ICgxIC0gZikgKiBNYXRoLnRhbijPhjEpLFxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxuICAgICAgc2luVTEgPSB0YW5VMSAqIGNvc1UxO1xuICAgIHZhciDPgzEgPSBNYXRoLmF0YW4yKHRhblUxLCBjb3POsTEpO1xuICAgIHZhciBzaW7OsSA9IGNvc1UxICogc2luzrExO1xuICAgIHZhciBjb3NTcc6xID0gMSAtIHNpbs6xICogc2luzrE7XG4gICAgdmFyIHVTcSA9IGNvc1NxzrEgKiAoYSAqIGEgLSBiICogYikgLyAoYiAqIGIpO1xuICAgIHZhciBBID0gMSArIHVTcSAvIDE2Mzg0ICogKDQwOTYgKyB1U3EgKiAoLTc2OCArIHVTcSAqICgzMjAgLSAxNzUgKlxuICAgICAgdVNxKSkpO1xuICAgIHZhciBCID0gdVNxIC8gMTAyNCAqICgyNTYgKyB1U3EgKiAoLTEyOCArIHVTcSAqICg3NCAtIDQ3ICogdVNxKSkpO1xuXG4gICAgdmFyIM+DID0gcyAvIChiICogQSksXG4gICAgICDPg8q5LCBpdGVyYXRpb25zID0gMDtcbiAgICB2YXIgc2luz4MsIGNvc8+DO1xuICAgIHZhciBjb3Myz4NNO1xuICAgIGRvIHtcbiAgICAgIGNvczLPg00gPSBNYXRoLmNvcygyICogz4MxICsgz4MpO1xuICAgICAgc2luz4MgPSBNYXRoLnNpbijPgyk7XG4gICAgICBjb3PPgyA9IE1hdGguY29zKM+DKTtcbiAgICAgIHZhciDOlM+DID0gQiAqIHNpbs+DICogKGNvczLPg00gKyBCIC8gNCAqIChjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICpcbiAgICAgICAgICBjb3Myz4NNKSAtXG4gICAgICAgIEIgLyA2ICogY29zMs+DTSAqICgtMyArIDQgKiBzaW7PgyAqIHNpbs+DKSAqICgtMyArIDQgKiBjb3Myz4NNICpcbiAgICAgICAgICBjb3Myz4NNKSkpO1xuICAgICAgz4PKuSA9IM+DO1xuICAgICAgz4MgPSBzIC8gKGIgKiBBKSArIM6Uz4M7XG4gICAgfSB3aGlsZSAoTWF0aC5hYnMoz4MgLSDPg8q5KSA+IDFlLTEyICYmICsraXRlcmF0aW9ucyk7XG5cbiAgICB2YXIgeCA9IHNpblUxICogc2luz4MgLSBjb3NVMSAqIGNvc8+DICogY29zzrExO1xuICAgIHZhciDPhjIgPSBNYXRoLmF0YW4yKHNpblUxICogY29zz4MgKyBjb3NVMSAqIHNpbs+DICogY29zzrExLCAoMSAtIGYpICpcbiAgICAgIE1hdGguc3FydChzaW7OsSAqIHNpbs6xICsgeCAqIHgpKTtcbiAgICB2YXIgzrsgPSBNYXRoLmF0YW4yKHNpbs+DICogc2luzrExLCBjb3NVMSAqIGNvc8+DIC0gc2luVTEgKiBzaW7PgyAqIGNvc86xMSk7XG4gICAgdmFyIEMgPSBmIC8gMTYgKiBjb3NTcc6xICogKDQgKyBmICogKDQgLSAzICogY29zU3HOsSkpO1xuICAgIHZhciBMID0gzrsgLSAoMSAtIEMpICogZiAqIHNpbs6xICpcbiAgICAgICjPgyArIEMgKiBzaW7PgyAqIChjb3Myz4NNICsgQyAqIGNvc8+DICogKC0xICsgMiAqIGNvczLPg00gKiBjb3Myz4NNKSkpO1xuXG4gICAgdmFyIM67MjtcbiAgICBpZiAod3JhcCkge1xuICAgICAgzrsyID0gKM67MSArIEwgKyAzICogTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gbm9ybWFsaXNlIHRvIC0xODAuLi4rMTgwXG4gICAgfSBlbHNlIHtcbiAgICAgIM67MiA9ICjOuzEgKyBMKTsgLy8gZG8gbm90IG5vcm1hbGl6ZVxuICAgIH1cblxuICAgIHZhciByZXZBeiA9IE1hdGguYXRhbjIoc2luzrEsIC14KTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYXQ6IM+GMi50b0RlZ3JlZXMoKSxcbiAgICAgIGxuZzogzrsyLnRvRGVncmVlcygpLFxuICAgICAgZmluYWxCZWFyaW5nOiByZXZBei50b0RlZ3JlZXMoKVxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIFZpbmNlbnR5IGludmVyc2UgY2FsY3VsYXRpb24uXG4gICAqIGJhc2VkIG9uIHRoZSB3b3JrIG9mIENocmlzIFZlbmVzcyAoaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdmVuZXNzL2dlb2Rlc3kpXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7TGF0TG5nfSBwMSAtIExhdGl0dWRlL2xvbmdpdHVkZSBvZiBzdGFydCBwb2ludC5cbiAgICogQHBhcmFtIHtMYXRMbmd9IHAyIC0gTGF0aXR1ZGUvbG9uZ2l0dWRlIG9mIGRlc3RpbmF0aW9uIHBvaW50LlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBPYmplY3QgaW5jbHVkaW5nIGRpc3RhbmNlLCBpbml0aWFsQmVhcmluZywgZmluYWxCZWFyaW5nLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgZm9ybXVsYSBmYWlsZWQgdG8gY29udmVyZ2UuXG4gICAqL1xuICBfdmluY2VudHlfaW52ZXJzZTogZnVuY3Rpb24ocDEsIHAyKSB7XG4gICAgdmFyIM+GMSA9IHAxLmxhdC50b1JhZGlhbnMoKSxcbiAgICAgIM67MSA9IHAxLmxuZy50b1JhZGlhbnMoKTtcbiAgICB2YXIgz4YyID0gcDIubGF0LnRvUmFkaWFucygpLFxuICAgICAgzrsyID0gcDIubG5nLnRvUmFkaWFucygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5hLFxuICAgICAgYiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmIsXG4gICAgICBmID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuZjtcblxuICAgIHZhciBMID0gzrsyIC0gzrsxO1xuICAgIHZhciB0YW5VMSA9ICgxIC0gZikgKiBNYXRoLnRhbijPhjEpLFxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxuICAgICAgc2luVTEgPSB0YW5VMSAqIGNvc1UxO1xuICAgIHZhciB0YW5VMiA9ICgxIC0gZikgKiBNYXRoLnRhbijPhjIpLFxuICAgICAgY29zVTIgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTIgKiB0YW5VMikpLFxuICAgICAgc2luVTIgPSB0YW5VMiAqIGNvc1UyO1xuXG4gICAgdmFyIM67ID0gTCxcbiAgICAgIM67yrksIGl0ZXJhdGlvbnMgPSAwO1xuICAgIHZhciBjb3NTcc6xLCBzaW7PgywgY29zMs+DTSwgY29zz4MsIM+DLCBzaW7OuywgY29zzrs7XG4gICAgZG8ge1xuICAgICAgc2luzrsgPSBNYXRoLnNpbijOuyk7XG4gICAgICBjb3POuyA9IE1hdGguY29zKM67KTtcbiAgICAgIHZhciBzaW5Tcc+DID0gKGNvc1UyICogc2luzrspICogKGNvc1UyICogc2luzrspICsgKGNvc1UxICogc2luVTIgLVxuICAgICAgICBzaW5VMSAqIGNvc1UyICogY29zzrspICogKGNvc1UxICogc2luVTIgLSBzaW5VMSAqIGNvc1UyICogY29zzrspO1xuICAgICAgc2luz4MgPSBNYXRoLnNxcnQoc2luU3HPgyk7XG4gICAgICBpZiAoc2luz4MgPT0gMCkgcmV0dXJuIDA7IC8vIGNvLWluY2lkZW50IHBvaW50c1xuICAgICAgY29zz4MgPSBzaW5VMSAqIHNpblUyICsgY29zVTEgKiBjb3NVMiAqIGNvc867O1xuICAgICAgz4MgPSBNYXRoLmF0YW4yKHNpbs+DLCBjb3PPgyk7XG4gICAgICB2YXIgc2luzrEgPSBjb3NVMSAqIGNvc1UyICogc2luzrsgLyBzaW7PgztcbiAgICAgIGNvc1NxzrEgPSAxIC0gc2luzrEgKiBzaW7OsTtcbiAgICAgIGNvczLPg00gPSBjb3PPgyAtIDIgKiBzaW5VMSAqIHNpblUyIC8gY29zU3HOsTtcbiAgICAgIGlmIChpc05hTihjb3Myz4NNKSkgY29zMs+DTSA9IDA7IC8vIGVxdWF0b3JpYWwgbGluZTogY29zU3HOsT0wICjCpzYpXG4gICAgICB2YXIgQyA9IGYgLyAxNiAqIGNvc1NxzrEgKiAoNCArIGYgKiAoNCAtIDMgKiBjb3NTcc6xKSk7XG4gICAgICDOu8q5ID0gzrs7XG4gICAgICDOuyA9IEwgKyAoMSAtIEMpICogZiAqIHNpbs6xICogKM+DICsgQyAqIHNpbs+DICogKGNvczLPg00gKyBDICogY29zz4MgKiAoLVxuICAgICAgICAxICsgMiAqIGNvczLPg00gKiBjb3Myz4NNKSkpO1xuICAgIH0gd2hpbGUgKE1hdGguYWJzKM67IC0gzrvKuSkgPiAxZS0xMiAmJiArK2l0ZXJhdGlvbnMgPCAxMDApO1xuICAgIGlmIChpdGVyYXRpb25zID49IDEwMCkge1xuICAgICAgY29uc29sZS5sb2coXCJGb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZS4gQWx0ZXJpbmcgdGFyZ2V0IHBvc2l0aW9uLlwiKTtcbiAgICAgIHJldHVybiB0aGlzLl92aW5jZW50eV9pbnZlcnNlKHAxLCB7XG4gICAgICAgICAgbGF0OiBwMi5sYXQsXG4gICAgICAgICAgbG5nOiBwMi5sbmcgLSAwLjAxXG4gICAgICAgIH0pO1xuICAgICAgICAvLyAgdGhyb3cgbmV3IEVycm9yKCdGb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZScpO1xuICAgIH1cblxuICAgIHZhciB1U3EgPSBjb3NTcc6xICogKGEgKiBhIC0gYiAqIGIpIC8gKGIgKiBiKTtcbiAgICB2YXIgQSA9IDEgKyB1U3EgLyAxNjM4NCAqICg0MDk2ICsgdVNxICogKC03NjggKyB1U3EgKiAoMzIwIC0gMTc1ICpcbiAgICAgIHVTcSkpKTtcbiAgICB2YXIgQiA9IHVTcSAvIDEwMjQgKiAoMjU2ICsgdVNxICogKC0xMjggKyB1U3EgKiAoNzQgLSA0NyAqIHVTcSkpKTtcbiAgICB2YXIgzpTPgyA9IEIgKiBzaW7PgyAqIChjb3Myz4NNICsgQiAvIDQgKiAoY29zz4MgKiAoLTEgKyAyICogY29zMs+DTSAqXG4gICAgICAgIGNvczLPg00pIC1cbiAgICAgIEIgLyA2ICogY29zMs+DTSAqICgtMyArIDQgKiBzaW7PgyAqIHNpbs+DKSAqICgtMyArIDQgKiBjb3Myz4NNICpcbiAgICAgICAgY29zMs+DTSkpKTtcblxuICAgIHZhciBzID0gYiAqIEEgKiAoz4MgLSDOlM+DKTtcblxuICAgIHZhciBmd2RBeiA9IE1hdGguYXRhbjIoY29zVTIgKiBzaW7OuywgY29zVTEgKiBzaW5VMiAtIHNpblUxICogY29zVTIgKlxuICAgICAgY29zzrspO1xuICAgIHZhciByZXZBeiA9IE1hdGguYXRhbjIoY29zVTEgKiBzaW7OuywgLXNpblUxICogY29zVTIgKyBjb3NVMSAqIHNpblUyICpcbiAgICAgIGNvc867KTtcblxuICAgIHMgPSBOdW1iZXIocy50b0ZpeGVkKDMpKTsgLy8gcm91bmQgdG8gMW1tIHByZWNpc2lvblxuICAgIHJldHVybiB7XG4gICAgICBkaXN0YW5jZTogcyxcbiAgICAgIGluaXRpYWxCZWFyaW5nOiBmd2RBei50b0RlZ3JlZXMoKSxcbiAgICAgIGZpbmFsQmVhcmluZzogcmV2QXoudG9EZWdyZWVzKClcbiAgICB9O1xuICB9LFxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBvaW50IG9mIGludGVyc2VjdGlvbiBvZiB0d28gcGF0aHMgZGVmaW5lZCBieSBwb2ludCBhbmQgYmVhcmluZy5cbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcbiAgICpcbiAgICogQHBhcmFtIHtMYXRMb259IHAxIC0gRmlyc3QgcG9pbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBicm5nMSAtIEluaXRpYWwgYmVhcmluZyBmcm9tIGZpcnN0IHBvaW50LlxuICAgKiBAcGFyYW0ge0xhdExvbn0gcDIgLSBTZWNvbmQgcG9pbnQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBicm5nMiAtIEluaXRpYWwgYmVhcmluZyBmcm9tIHNlY29uZCBwb2ludC5cbiAgICogQHJldHVybnMge09iamVjdH0gY29udGFpbmluZyBsYXQvbG5nIGluZm9ybWF0aW9uIG9mIGludGVyc2VjdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogdmFyIHAxID0gTGF0TG9uKDUxLjg4NTMsIDAuMjU0NSksIGJybmcxID0gMTA4LjU1O1xuICAgKiB2YXIgcDIgPSBMYXRMb24oNDkuMDAzNCwgMi41NzM1KSwgYnJuZzIgPSAzMi40NDtcbiAgICogdmFyIHBJbnQgPSBMYXRMb24uaW50ZXJzZWN0aW9uKHAxLCBicm5nMSwgcDIsIGJybmcyKTsgLy8gcEludC50b1N0cmluZygpOiA1MC45MDc4wrBOLCA0LjUwODTCsEVcbiAgICovXG4gIF9pbnRlcnNlY3Rpb246IGZ1bmN0aW9uKHAxLCBicm5nMSwgcDIsIGJybmcyKSB7XG4gICAgLy8gc2VlIGh0dHA6Ly93aWxsaWFtcy5iZXN0LnZ3aC5uZXQvYXZmb3JtLmh0bSNJbnRlcnNlY3Rpb25cblxuICAgIHZhciDPhjEgPSBwMS5sYXQudG9SYWRpYW5zKCksXG4gICAgICDOuzEgPSBwMS5sbmcudG9SYWRpYW5zKCk7XG4gICAgdmFyIM+GMiA9IHAyLmxhdC50b1JhZGlhbnMoKSxcbiAgICAgIM67MiA9IHAyLmxuZy50b1JhZGlhbnMoKTtcbiAgICB2YXIgzrgxMyA9IE51bWJlcihicm5nMSkudG9SYWRpYW5zKCksXG4gICAgICDOuDIzID0gTnVtYmVyKGJybmcyKS50b1JhZGlhbnMoKTtcbiAgICB2YXIgzpTPhiA9IM+GMiAtIM+GMSxcbiAgICAgIM6UzrsgPSDOuzIgLSDOuzE7XG5cbiAgICB2YXIgzrQxMiA9IDIgKiBNYXRoLmFzaW4oTWF0aC5zcXJ0KE1hdGguc2luKM6Uz4YgLyAyKSAqIE1hdGguc2luKM6Uz4YgLyAyKSArXG4gICAgICBNYXRoLmNvcyjPhjEpICogTWF0aC5jb3Moz4YyKSAqIE1hdGguc2luKM6UzrsgLyAyKSAqIE1hdGguc2luKM6UzrsgL1xuICAgICAgICAyKSkpO1xuICAgIGlmICjOtDEyID09IDApIHJldHVybiBudWxsO1xuXG4gICAgLy8gaW5pdGlhbC9maW5hbCBiZWFyaW5ncyBiZXR3ZWVuIHBvaW50c1xuICAgIHZhciDOuDEgPSBNYXRoLmFjb3MoKE1hdGguc2luKM+GMikgLSBNYXRoLnNpbijPhjEpICogTWF0aC5jb3MozrQxMikpIC9cbiAgICAgIChNYXRoLnNpbijOtDEyKSAqIE1hdGguY29zKM+GMSkpKTtcbiAgICBpZiAoaXNOYU4ozrgxKSkgzrgxID0gMDsgLy8gcHJvdGVjdCBhZ2FpbnN0IHJvdW5kaW5nXG4gICAgdmFyIM64MiA9IE1hdGguYWNvcygoTWF0aC5zaW4oz4YxKSAtIE1hdGguc2luKM+GMikgKiBNYXRoLmNvcyjOtDEyKSkgL1xuICAgICAgKE1hdGguc2luKM60MTIpICogTWF0aC5jb3Moz4YyKSkpO1xuICAgIHZhciDOuDEyLCDOuDIxO1xuICAgIGlmIChNYXRoLnNpbijOuzIgLSDOuzEpID4gMCkge1xuICAgICAgzrgxMiA9IM64MTtcbiAgICAgIM64MjEgPSAyICogTWF0aC5QSSAtIM64MjtcbiAgICB9IGVsc2Uge1xuICAgICAgzrgxMiA9IDIgKiBNYXRoLlBJIC0gzrgxO1xuICAgICAgzrgyMSA9IM64MjtcbiAgICB9XG5cbiAgICB2YXIgzrExID0gKM64MTMgLSDOuDEyICsgTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gYW5nbGUgMi0xLTNcbiAgICB2YXIgzrEyID0gKM64MjEgLSDOuDIzICsgTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gYW5nbGUgMS0yLTNcblxuICAgIGlmIChNYXRoLnNpbijOsTEpID09IDAgJiYgTWF0aC5zaW4ozrEyKSA9PSAwKSByZXR1cm4gbnVsbDsgLy8gaW5maW5pdGUgaW50ZXJzZWN0aW9uc1xuICAgIGlmIChNYXRoLnNpbijOsTEpICogTWF0aC5zaW4ozrEyKSA8IDApIHJldHVybiBudWxsOyAvLyBhbWJpZ3VvdXMgaW50ZXJzZWN0aW9uXG5cbiAgICAvL86xMSA9IE1hdGguYWJzKM6xMSk7XG4gICAgLy/OsTIgPSBNYXRoLmFicyjOsTIpO1xuICAgIC8vIC4uLiBFZCBXaWxsaWFtcyB0YWtlcyBhYnMgb2YgzrExL86xMiwgYnV0IHNlZW1zIHRvIGJyZWFrIGNhbGN1bGF0aW9uP1xuXG4gICAgdmFyIM6xMyA9IE1hdGguYWNvcygtTWF0aC5jb3MozrExKSAqIE1hdGguY29zKM6xMikgK1xuICAgICAgTWF0aC5zaW4ozrExKSAqIE1hdGguc2luKM6xMikgKiBNYXRoLmNvcyjOtDEyKSk7XG4gICAgdmFyIM60MTMgPSBNYXRoLmF0YW4yKE1hdGguc2luKM60MTIpICogTWF0aC5zaW4ozrExKSAqIE1hdGguc2luKM6xMiksXG4gICAgICBNYXRoLmNvcyjOsTIpICsgTWF0aC5jb3MozrExKSAqIE1hdGguY29zKM6xMykpO1xuICAgIHZhciDPhjMgPSBNYXRoLmFzaW4oTWF0aC5zaW4oz4YxKSAqIE1hdGguY29zKM60MTMpICtcbiAgICAgIE1hdGguY29zKM+GMSkgKiBNYXRoLnNpbijOtDEzKSAqIE1hdGguY29zKM64MTMpKTtcbiAgICB2YXIgzpTOuzEzID0gTWF0aC5hdGFuMihNYXRoLnNpbijOuDEzKSAqIE1hdGguc2luKM60MTMpICogTWF0aC5jb3Moz4YxKSxcbiAgICAgIE1hdGguY29zKM60MTMpIC0gTWF0aC5zaW4oz4YxKSAqIE1hdGguc2luKM+GMykpO1xuICAgIHZhciDOuzMgPSDOuzEgKyDOlM67MTM7XG4gICAgzrszID0gKM67MyArIDMgKiBNYXRoLlBJKSAlICgyICogTWF0aC5QSSkgLSBNYXRoLlBJOyAvLyBub3JtYWxpc2UgdG8gLTE4MC4uKzE4MMK6XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGF0OiDPhjMudG9EZWdyZWVzKCksXG4gICAgICBsbmc6IM67My50b0RlZ3JlZXMoKVxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIE92ZXJ3cml0ZXMgb2JqMSdzIHZhbHVlcyB3aXRoIG9iajIncyBhbmQgYWRkcyBvYmoyJ3MgaWYgbm9uIGV4aXN0ZW50IGluIG9iajFcbiAgICogQHBhcmFtIG9iajFcbiAgICogQHBhcmFtIG9iajJcbiAgICogQHJldHVybnMgb2JqMyBhIG5ldyBvYmplY3QgYmFzZWQgb24gb2JqMSBhbmQgb2JqMlxuICAgKi9cbiAgX21lcmdlX29wdGlvbnM6IGZ1bmN0aW9uKG9iajEsIG9iajIpIHtcbiAgICBsZXQgb2JqMyA9IHt9O1xuICAgIGZvciAobGV0IGF0dHJuYW1lIGluIG9iajEpIHtcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMVthdHRybmFtZV07XG4gICAgfVxuICAgIGZvciAobGV0IGF0dHJuYW1lIGluIG9iajIpIHtcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07XG4gICAgfVxuICAgIHJldHVybiBvYmozO1xuICB9XG59KTtcblxuTC5nZW9kZXNpYyA9IGZ1bmN0aW9uKGxhdGxuZ3MsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBMLkdlb2Rlc2ljKGxhdGxuZ3MsIG9wdGlvbnMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL0xlYWZsZXQuR2VvZGVzaWMvTGVhZmxldC5HZW9kZXNpYy5qc1xuLy8gbW9kdWxlIGlkID0gLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\n");
+eval("\r\n\r\n// This file is part of Leaflet.Geodesic.\r\n// Copyright (C) 2017 Henry Thasler\r\n// based on code by Chris Veness Copyright (C) 2014 https://github.com/chrisveness/geodesy\r\n//\r\n// Leaflet.Geodesic is free software: you can redistribute it and/or modify\r\n// it under the terms of the GNU General Public License as published by\r\n// the Free Software Foundation, either version 3 of the License, or\r\n// (at your option) any later version.\r\n//\r\n// Leaflet.Geodesic is distributed in the hope that it will be useful,\r\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n// GNU General Public License for more details.\r\n//\r\n// You should have received a copy of the GNU General Public License\r\n// along with Leaflet.Geodesic. If not, see .\r\n\r\n\r\n/** Extend Number object with method to convert numeric degrees to radians */\r\nif (typeof Number.prototype.toRadians === \"undefined\") {\r\n Number.prototype.toRadians = function() {\r\n return this * Math.PI / 180;\r\n };\r\n}\r\n\r\n/** Extend Number object with method to convert radians to numeric (signed) degrees */\r\nif (typeof Number.prototype.toDegrees === \"undefined\") {\r\n Number.prototype.toDegrees = function() {\r\n return this * 180 / Math.PI;\r\n };\r\n}\r\n\r\nvar INTERSECT_LNG = 179.999; // Lng used for intersection and wrap around on map edges\r\n\r\nL.Geodesic = L.Polyline.extend({\r\n options: {\r\n color: \"blue\",\r\n steps: 10,\r\n dash: 1,\r\n wrap: true\r\n },\r\n\r\n initialize: function(latlngs, options) {\r\n this.options = this._merge_options(this.options, options);\r\n this.options.dash = Math.max(1e-3, Math.min(1, parseFloat(this.options.dash) || 1));\r\n this.datum = {};\r\n this.datum.ellipsoid = {\r\n a: 6378137,\r\n b: 6356752.3142,\r\n f: 1 / 298.257223563\r\n }; // WGS-84\r\n this._latlngs = this._generate_Geodesic(latlngs);\r\n L.Polyline.prototype.initialize.call(this, this._latlngs, this.options);\r\n },\r\n\r\n setLatLngs: function(latlngs) {\r\n this._latlngs = this._generate_Geodesic(latlngs);\r\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\r\n },\r\n\r\n /**\r\n * Calculates some statistic values of current geodesic multipolyline\r\n * @returns (Object} Object with several properties (e.g. overall distance)\r\n */\r\n getStats: function() {\r\n let obj = {\r\n distance: 0,\r\n points: 0,\r\n polygons: this._latlngs.length\r\n }, poly, points;\r\n\r\n for (poly = 0; poly < this._latlngs.length; poly++) {\r\n obj.points += this._latlngs[poly].length;\r\n for (points = 0; points < (this._latlngs[poly].length - 1); points++) {\r\n obj.distance += this._vincenty_inverse(this._latlngs[poly][points],\r\n this._latlngs[poly][points + 1]).distance;\r\n }\r\n }\r\n return obj;\r\n },\r\n\r\n\r\n /**\r\n * Creates geodesic lines from geoJson. Replaces all current features of this instance.\r\n * Supports LineString, MultiLineString and Polygon\r\n * @param {Object} geojson - geosjon as object.\r\n */\r\n geoJson: function(geojson) {\r\n\r\n let normalized = L.GeoJSON.asFeature(geojson);\r\n let features = normalized.type === \"FeatureCollection\" ? normalized.features : [\r\n normalized\r\n ];\r\n this._latlngs = [];\r\n for (let feature of features) {\r\n let geometry = feature.type === \"Feature\" ? feature.geometry :\r\n feature,\r\n coords = geometry.coordinates;\r\n\r\n switch (geometry.type) {\r\n case \"LineString\":\r\n this._latlngs.push(this._generate_Geodesic([L.GeoJSON.coordsToLatLngs(\r\n coords, 0)]));\r\n break;\r\n case \"MultiLineString\":\r\n case \"Polygon\":\r\n this._latlngs.push(this._generate_Geodesic(L.GeoJSON.coordsToLatLngs(\r\n coords, 1)));\r\n break;\r\n case \"Point\":\r\n case \"MultiPoint\":\r\n console.log(\"Dude, points can't be drawn as geodesic lines...\");\r\n break;\r\n default:\r\n console.log(\"Drawing \" + geometry.type +\r\n \" as a geodesic is not supported. Skipping...\");\r\n }\r\n }\r\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\r\n },\r\n\r\n /**\r\n * Creates a great circle. Replaces all current lines.\r\n * @param {Object} center - geographic position\r\n * @param {number} radius - radius of the circle in metres\r\n */\r\n createCircle: function(center, radius) {\r\n let polylineIndex = 0;\r\n let prev = {\r\n lat: 0,\r\n lng: 0,\r\n brg: 0\r\n };\r\n let step;\r\n\r\n this._latlngs = [];\r\n this._latlngs[polylineIndex] = [];\r\n\r\n let direct = this._vincenty_direct(L.latLng(center), 0, radius, this.options\r\n .wrap);\r\n prev = L.latLng(direct.lat, direct.lng);\r\n this._latlngs[polylineIndex].push(prev);\r\n for (step = 1; step <= this.options.steps;) {\r\n direct = this._vincenty_direct(L.latLng(center), 360 / this.options\r\n .steps * step, radius, this.options.wrap);\r\n let gp = L.latLng(direct.lat, direct.lng);\r\n if (Math.abs(gp.lng - prev.lng) > 180) {\r\n let inverse = this._vincenty_inverse(prev, gp);\r\n let sec = this._intersection(prev, inverse.initialBearing, {\r\n lat: -89,\r\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\r\n }, 0);\r\n if (sec) {\r\n this._latlngs[polylineIndex].push(L.latLng(sec.lat, sec.lng));\r\n polylineIndex++;\r\n this._latlngs[polylineIndex] = [];\r\n prev = L.latLng(sec.lat, -sec.lng);\r\n this._latlngs[polylineIndex].push(prev);\r\n } else {\r\n polylineIndex++;\r\n this._latlngs[polylineIndex] = [];\r\n this._latlngs[polylineIndex].push(gp);\r\n prev = gp;\r\n step++;\r\n }\r\n } else {\r\n this._latlngs[polylineIndex].push(gp);\r\n prev = gp;\r\n step++;\r\n }\r\n }\r\n\r\n L.Polyline.prototype.setLatLngs.call(this, this._latlngs);\r\n },\r\n\r\n /**\r\n * Creates a geodesic Polyline from given coordinates\r\n * Note: dashed lines are under work\r\n * @param {Object} latlngs - One or more polylines as an array. See Leaflet doc about Polyline\r\n * @returns (Object} An array of arrays of geographical points.\r\n */\r\n _generate_Geodesic: function(latlngs) {\r\n let _geo = [], _geocnt = 0;\r\n\r\n for (let poly = 0; poly < latlngs.length; poly++) {\r\n _geo[_geocnt] = [];\r\n let prev = L.latLng(latlngs[poly][0]);\r\n for (let points = 0; points < (latlngs[poly].length - 1); points++) {\r\n // use prev, so that wrapping behaves correctly\r\n let pointA = prev;\r\n let pointB = L.latLng(latlngs[poly][points + 1]);\r\n if (pointA.equals(pointB)) {\r\n continue;\r\n }\r\n let inverse = this._vincenty_inverse(pointA, pointB);\r\n _geo[_geocnt].push(prev);\r\n for (let s = 1; s <= this.options.steps;) {\r\n let distance = inverse.distance / this.options.steps;\r\n // dashed lines don't go the full distance between the points\r\n let dist_mult = s - 1 + this.options.dash;\r\n let direct = this._vincenty_direct(pointA, inverse.initialBearing, distance*dist_mult, this.options.wrap);\r\n let gp = L.latLng(direct.lat, direct.lng);\r\n if (Math.abs(gp.lng - prev.lng) > 180) {\r\n let sec = this._intersection(pointA, inverse.initialBearing, {\r\n lat: -89,\r\n lng: ((gp.lng - prev.lng) > 0) ? -INTERSECT_LNG : INTERSECT_LNG\r\n }, 0);\r\n if (sec) {\r\n _geo[_geocnt].push(L.latLng(sec.lat, sec.lng));\r\n _geocnt++;\r\n _geo[_geocnt] = [];\r\n prev = L.latLng(sec.lat, -sec.lng);\r\n _geo[_geocnt].push(prev);\r\n } else {\r\n _geocnt++;\r\n _geo[_geocnt] = [];\r\n _geo[_geocnt].push(gp);\r\n prev = gp;\r\n s++;\r\n } \r\n } else {\r\n _geo[_geocnt].push(gp);\r\n // Dashed lines start a new line\r\n if (this.options.dash < 1){\r\n _geocnt++;\r\n // go full distance this time, to get starting point for next line\r\n let direct_full = this._vincenty_direct(pointA, inverse.initialBearing, distance*s, this.options.wrap);\r\n _geo[_geocnt] = [];\r\n prev = L.latLng(direct_full.lat, direct_full.lng);\r\n _geo[_geocnt].push(prev);\r\n }\r\n else prev = gp;\r\n s++;\r\n }\r\n }\r\n }\r\n _geocnt++;\r\n }\r\n return _geo;\r\n },\r\n\r\n /**\r\n * Vincenty direct calculation.\r\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\r\n *\r\n * @private\r\n * @param {number} initialBearing - Initial bearing in degrees from north.\r\n * @param {number} distance - Distance along bearing in metres.\r\n * @returns (Object} Object including point (destination point), finalBearing.\r\n */\r\n\r\n _vincenty_direct: function(p1, initialBearing, distance, wrap) {\r\n var φ1 = p1.lat.toRadians(),\r\n λ1 = p1.lng.toRadians();\r\n var α1 = initialBearing.toRadians();\r\n var s = distance;\r\n\r\n var a = this.datum.ellipsoid.a,\r\n b = this.datum.ellipsoid.b,\r\n f = this.datum.ellipsoid.f;\r\n\r\n var sinα1 = Math.sin(α1);\r\n var cosα1 = Math.cos(α1);\r\n\r\n var tanU1 = (1 - f) * Math.tan(φ1),\r\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\r\n sinU1 = tanU1 * cosU1;\r\n var σ1 = Math.atan2(tanU1, cosα1);\r\n var sinα = cosU1 * sinα1;\r\n var cosSqα = 1 - sinα * sinα;\r\n var uSq = cosSqα * (a * a - b * b) / (b * b);\r\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\r\n uSq)));\r\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\r\n\r\n var σ = s / (b * A),\r\n σʹ, iterations = 0;\r\n var sinσ, cosσ;\r\n var cos2σM;\r\n do {\r\n cos2σM = Math.cos(2 * σ1 + σ);\r\n sinσ = Math.sin(σ);\r\n cosσ = Math.cos(σ);\r\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\r\n cos2σM) -\r\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\r\n cos2σM)));\r\n σʹ = σ;\r\n σ = s / (b * A) + Δσ;\r\n } while (Math.abs(σ - σʹ) > 1e-12 && ++iterations);\r\n\r\n var x = sinU1 * sinσ - cosU1 * cosσ * cosα1;\r\n var φ2 = Math.atan2(sinU1 * cosσ + cosU1 * sinσ * cosα1, (1 - f) *\r\n Math.sqrt(sinα * sinα + x * x));\r\n var λ = Math.atan2(sinσ * sinα1, cosU1 * cosσ - sinU1 * sinσ * cosα1);\r\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\r\n var L = λ - (1 - C) * f * sinα *\r\n (σ + C * sinσ * (cos2σM + C * cosσ * (-1 + 2 * cos2σM * cos2σM)));\r\n\r\n var λ2;\r\n if (wrap) {\r\n λ2 = (λ1 + L + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180...+180\r\n } else {\r\n λ2 = (λ1 + L); // do not normalize\r\n }\r\n\r\n var revAz = Math.atan2(sinα, -x);\r\n\r\n return {\r\n lat: φ2.toDegrees(),\r\n lng: λ2.toDegrees(),\r\n finalBearing: revAz.toDegrees()\r\n };\r\n },\r\n\r\n /**\r\n * Vincenty inverse calculation.\r\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\r\n *\r\n * @private\r\n * @param {LatLng} p1 - Latitude/longitude of start point.\r\n * @param {LatLng} p2 - Latitude/longitude of destination point.\r\n * @returns {Object} Object including distance, initialBearing, finalBearing.\r\n * @throws {Error} If formula failed to converge.\r\n */\r\n _vincenty_inverse: function(p1, p2) {\r\n var φ1 = p1.lat.toRadians(),\r\n λ1 = p1.lng.toRadians();\r\n var φ2 = p2.lat.toRadians(),\r\n λ2 = p2.lng.toRadians();\r\n\r\n var a = this.datum.ellipsoid.a,\r\n b = this.datum.ellipsoid.b,\r\n f = this.datum.ellipsoid.f;\r\n\r\n var L = λ2 - λ1;\r\n var tanU1 = (1 - f) * Math.tan(φ1),\r\n cosU1 = 1 / Math.sqrt((1 + tanU1 * tanU1)),\r\n sinU1 = tanU1 * cosU1;\r\n var tanU2 = (1 - f) * Math.tan(φ2),\r\n cosU2 = 1 / Math.sqrt((1 + tanU2 * tanU2)),\r\n sinU2 = tanU2 * cosU2;\r\n\r\n var λ = L,\r\n λʹ, iterations = 0;\r\n var cosSqα, sinσ, cos2σM, cosσ, σ, sinλ, cosλ;\r\n do {\r\n sinλ = Math.sin(λ);\r\n cosλ = Math.cos(λ);\r\n var sinSqσ = (cosU2 * sinλ) * (cosU2 * sinλ) + (cosU1 * sinU2 -\r\n sinU1 * cosU2 * cosλ) * (cosU1 * sinU2 - sinU1 * cosU2 * cosλ);\r\n sinσ = Math.sqrt(sinSqσ);\r\n if (sinσ == 0) return 0; // co-incident points\r\n cosσ = sinU1 * sinU2 + cosU1 * cosU2 * cosλ;\r\n σ = Math.atan2(sinσ, cosσ);\r\n var sinα = cosU1 * cosU2 * sinλ / sinσ;\r\n cosSqα = 1 - sinα * sinα;\r\n cos2σM = cosσ - 2 * sinU1 * sinU2 / cosSqα;\r\n if (isNaN(cos2σM)) cos2σM = 0; // equatorial line: cosSqα=0 (§6)\r\n var C = f / 16 * cosSqα * (4 + f * (4 - 3 * cosSqα));\r\n λʹ = λ;\r\n λ = L + (1 - C) * f * sinα * (σ + C * sinσ * (cos2σM + C * cosσ * (-\r\n 1 + 2 * cos2σM * cos2σM)));\r\n } while (Math.abs(λ - λʹ) > 1e-12 && ++iterations < 100);\r\n if (iterations >= 100) {\r\n console.log(\"Formula failed to converge. Altering target position.\");\r\n return this._vincenty_inverse(p1, {\r\n lat: p2.lat,\r\n lng: p2.lng - 0.01\r\n });\r\n // throw new Error('Formula failed to converge');\r\n }\r\n\r\n var uSq = cosSqα * (a * a - b * b) / (b * b);\r\n var A = 1 + uSq / 16384 * (4096 + uSq * (-768 + uSq * (320 - 175 *\r\n uSq)));\r\n var B = uSq / 1024 * (256 + uSq * (-128 + uSq * (74 - 47 * uSq)));\r\n var Δσ = B * sinσ * (cos2σM + B / 4 * (cosσ * (-1 + 2 * cos2σM *\r\n cos2σM) -\r\n B / 6 * cos2σM * (-3 + 4 * sinσ * sinσ) * (-3 + 4 * cos2σM *\r\n cos2σM)));\r\n\r\n var s = b * A * (σ - Δσ);\r\n\r\n var fwdAz = Math.atan2(cosU2 * sinλ, cosU1 * sinU2 - sinU1 * cosU2 *\r\n cosλ);\r\n var revAz = Math.atan2(cosU1 * sinλ, -sinU1 * cosU2 + cosU1 * sinU2 *\r\n cosλ);\r\n\r\n s = Number(s.toFixed(3)); // round to 1mm precision\r\n return {\r\n distance: s,\r\n initialBearing: fwdAz.toDegrees(),\r\n finalBearing: revAz.toDegrees()\r\n };\r\n },\r\n\r\n\r\n /**\r\n * Returns the point of intersection of two paths defined by point and bearing.\r\n * based on the work of Chris Veness (https://github.com/chrisveness/geodesy)\r\n *\r\n * @param {LatLon} p1 - First point.\r\n * @param {number} brng1 - Initial bearing from first point.\r\n * @param {LatLon} p2 - Second point.\r\n * @param {number} brng2 - Initial bearing from second point.\r\n * @returns {Object} containing lat/lng information of intersection.\r\n *\r\n * @example\r\n * var p1 = LatLon(51.8853, 0.2545), brng1 = 108.55;\r\n * var p2 = LatLon(49.0034, 2.5735), brng2 = 32.44;\r\n * var pInt = LatLon.intersection(p1, brng1, p2, brng2); // pInt.toString(): 50.9078°N, 4.5084°E\r\n */\r\n _intersection: function(p1, brng1, p2, brng2) {\r\n // see http://williams.best.vwh.net/avform.htm#Intersection\r\n\r\n var φ1 = p1.lat.toRadians(),\r\n λ1 = p1.lng.toRadians();\r\n var φ2 = p2.lat.toRadians(),\r\n λ2 = p2.lng.toRadians();\r\n var θ13 = Number(brng1).toRadians(),\r\n θ23 = Number(brng2).toRadians();\r\n var Δφ = φ2 - φ1,\r\n Δλ = λ2 - λ1;\r\n\r\n var δ12 = 2 * Math.asin(Math.sqrt(Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +\r\n Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ /\r\n 2)));\r\n if (δ12 == 0) return null;\r\n\r\n // initial/final bearings between points\r\n var θ1 = Math.acos((Math.sin(φ2) - Math.sin(φ1) * Math.cos(δ12)) /\r\n (Math.sin(δ12) * Math.cos(φ1)));\r\n if (isNaN(θ1)) θ1 = 0; // protect against rounding\r\n var θ2 = Math.acos((Math.sin(φ1) - Math.sin(φ2) * Math.cos(δ12)) /\r\n (Math.sin(δ12) * Math.cos(φ2)));\r\n var θ12, θ21;\r\n if (Math.sin(λ2 - λ1) > 0) {\r\n θ12 = θ1;\r\n θ21 = 2 * Math.PI - θ2;\r\n } else {\r\n θ12 = 2 * Math.PI - θ1;\r\n θ21 = θ2;\r\n }\r\n\r\n var α1 = (θ13 - θ12 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 2-1-3\r\n var α2 = (θ21 - θ23 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 1-2-3\r\n\r\n if (Math.sin(α1) == 0 && Math.sin(α2) == 0) return null; // infinite intersections\r\n if (Math.sin(α1) * Math.sin(α2) < 0) return null; // ambiguous intersection\r\n\r\n //α1 = Math.abs(α1);\r\n //α2 = Math.abs(α2);\r\n // ... Ed Williams takes abs of α1/α2, but seems to break calculation?\r\n\r\n var α3 = Math.acos(-Math.cos(α1) * Math.cos(α2) +\r\n Math.sin(α1) * Math.sin(α2) * Math.cos(δ12));\r\n var δ13 = Math.atan2(Math.sin(δ12) * Math.sin(α1) * Math.sin(α2),\r\n Math.cos(α2) + Math.cos(α1) * Math.cos(α3));\r\n var φ3 = Math.asin(Math.sin(φ1) * Math.cos(δ13) +\r\n Math.cos(φ1) * Math.sin(δ13) * Math.cos(θ13));\r\n var Δλ13 = Math.atan2(Math.sin(θ13) * Math.sin(δ13) * Math.cos(φ1),\r\n Math.cos(δ13) - Math.sin(φ1) * Math.sin(φ3));\r\n var λ3 = λ1 + Δλ13;\r\n λ3 = (λ3 + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180..+180º\r\n\r\n return {\r\n lat: φ3.toDegrees(),\r\n lng: λ3.toDegrees()\r\n };\r\n },\r\n\r\n /**\r\n * Overwrites obj1's values with obj2's and adds obj2's if non existent in obj1\r\n * @param obj1\r\n * @param obj2\r\n * @returns obj3 a new object based on obj1 and obj2\r\n */\r\n _merge_options: function(obj1, obj2) {\r\n let obj3 = {};\r\n for (let attrname in obj1) {\r\n obj3[attrname] = obj1[attrname];\r\n }\r\n for (let attrname in obj2) {\r\n obj3[attrname] = obj2[attrname];\r\n }\r\n return obj3;\r\n }\r\n});\r\n\r\nL.geodesic = function(latlngs, options) {\r\n return new L.Geodesic(latlngs, options);\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzPzU3NGMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxrQkFBa0IsNkJBQTZCO0FBQy9DO0FBQ0Esc0JBQXNCLDJDQUEyQztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7O0FBR0g7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JB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QUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy9MZWFmbGV0Lkdlb2Rlc2ljL0xlYWZsZXQuR2VvZGVzaWMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuXHJcbi8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIExlYWZsZXQuR2VvZGVzaWMuXHJcbi8vIENvcHlyaWdodCAoQykgMjAxNyAgSGVucnkgVGhhc2xlclxyXG4vLyBiYXNlZCBvbiBjb2RlIGJ5IENocmlzIFZlbmVzcyBDb3B5cmlnaHQgKEMpIDIwMTQgaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdmVuZXNzL2dlb2Rlc3lcclxuLy9cclxuLy8gTGVhZmxldC5HZW9kZXNpYyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbi8vIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbi8vXHJcbi8vIExlYWZsZXQuR2VvZGVzaWMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcclxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcclxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxyXG4vLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxyXG4vL1xyXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxyXG4vLyBhbG9uZyB3aXRoIExlYWZsZXQuR2VvZGVzaWMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXHJcblxyXG5cclxuLyoqIEV4dGVuZCBOdW1iZXIgb2JqZWN0IHdpdGggbWV0aG9kIHRvIGNvbnZlcnQgbnVtZXJpYyBkZWdyZWVzIHRvIHJhZGlhbnMgKi9cclxuaWYgKHR5cGVvZiBOdW1iZXIucHJvdG90eXBlLnRvUmFkaWFucyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gIE51bWJlci5wcm90b3R5cGUudG9SYWRpYW5zID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcyAqIE1hdGguUEkgLyAxODA7XHJcbiAgfTtcclxufVxyXG5cclxuLyoqIEV4dGVuZCBOdW1iZXIgb2JqZWN0IHdpdGggbWV0aG9kIHRvIGNvbnZlcnQgcmFkaWFucyB0byBudW1lcmljIChzaWduZWQpIGRlZ3JlZXMgKi9cclxuaWYgKHR5cGVvZiBOdW1iZXIucHJvdG90eXBlLnRvRGVncmVlcyA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gIE51bWJlci5wcm90b3R5cGUudG9EZWdyZWVzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcyAqIDE4MCAvIE1hdGguUEk7XHJcbiAgfTtcclxufVxyXG5cclxudmFyIElOVEVSU0VDVF9MTkcgPSAxNzkuOTk5OyAvLyBMbmcgdXNlZCBmb3IgaW50ZXJzZWN0aW9uIGFuZCB3cmFwIGFyb3VuZCBvbiBtYXAgZWRnZXNcclxuXHJcbkwuR2VvZGVzaWMgPSBMLlBvbHlsaW5lLmV4dGVuZCh7XHJcbiAgb3B0aW9uczoge1xyXG4gICAgY29sb3I6IFwiYmx1ZVwiLFxyXG4gICAgc3RlcHM6IDEwLFxyXG4gICAgZGFzaDogMSxcclxuICAgIHdyYXA6IHRydWVcclxuICB9LFxyXG5cclxuICBpbml0aWFsaXplOiBmdW5jdGlvbihsYXRsbmdzLCBvcHRpb25zKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLl9tZXJnZV9vcHRpb25zKHRoaXMub3B0aW9ucywgb3B0aW9ucyk7XHJcbiAgICB0aGlzLm9wdGlvbnMuZGFzaCA9IE1hdGgubWF4KDFlLTMsIE1hdGgubWluKDEsIHBhcnNlRmxvYXQodGhpcy5vcHRpb25zLmRhc2gpIHx8IDEpKTtcclxuICAgIHRoaXMuZGF0dW0gPSB7fTtcclxuICAgIHRoaXMuZGF0dW0uZWxsaXBzb2lkID0ge1xyXG4gICAgICAgIGE6IDYzNzgxMzcsXHJcbiAgICAgICAgYjogNjM1Njc1Mi4zMTQyLFxyXG4gICAgICAgIGY6IDEgLyAyOTguMjU3MjIzNTYzXHJcbiAgICAgIH07IC8vIFdHUy04NFxyXG4gICAgdGhpcy5fbGF0bG5ncyA9IHRoaXMuX2dlbmVyYXRlX0dlb2Rlc2ljKGxhdGxuZ3MpO1xyXG4gICAgTC5Qb2x5bGluZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIHRoaXMuX2xhdGxuZ3MsIHRoaXMub3B0aW9ucyk7XHJcbiAgfSxcclxuXHJcbiAgc2V0TGF0TG5nczogZnVuY3Rpb24obGF0bG5ncykge1xyXG4gICAgdGhpcy5fbGF0bG5ncyA9IHRoaXMuX2dlbmVyYXRlX0dlb2Rlc2ljKGxhdGxuZ3MpO1xyXG4gICAgTC5Qb2x5bGluZS5wcm90b3R5cGUuc2V0TGF0TG5ncy5jYWxsKHRoaXMsIHRoaXMuX2xhdGxuZ3MpO1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZXMgc29tZSBzdGF0aXN0aWMgdmFsdWVzIG9mIGN1cnJlbnQgZ2VvZGVzaWMgbXVsdGlwb2x5bGluZVxyXG4gICAqIEByZXR1cm5zIChPYmplY3R9IE9iamVjdCB3aXRoIHNldmVyYWwgcHJvcGVydGllcyAoZS5nLiBvdmVyYWxsIGRpc3RhbmNlKVxyXG4gICAqL1xyXG4gIGdldFN0YXRzOiBmdW5jdGlvbigpIHtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgZGlzdGFuY2U6IDAsXHJcbiAgICAgICAgcG9pbnRzOiAwLFxyXG4gICAgICAgIHBvbHlnb25zOiB0aGlzLl9sYXRsbmdzLmxlbmd0aFxyXG4gICAgICB9LCBwb2x5LCBwb2ludHM7XHJcblxyXG4gICAgZm9yIChwb2x5ID0gMDsgcG9seSA8IHRoaXMuX2xhdGxuZ3MubGVuZ3RoOyBwb2x5KyspIHtcclxuICAgICAgb2JqLnBvaW50cyArPSB0aGlzLl9sYXRsbmdzW3BvbHldLmxlbmd0aDtcclxuICAgICAgZm9yIChwb2ludHMgPSAwOyBwb2ludHMgPCAodGhpcy5fbGF0bG5nc1twb2x5XS5sZW5ndGggLSAxKTsgcG9pbnRzKyspIHtcclxuICAgICAgICBvYmouZGlzdGFuY2UgKz0gdGhpcy5fdmluY2VudHlfaW52ZXJzZSh0aGlzLl9sYXRsbmdzW3BvbHldW3BvaW50c10sXHJcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHldW3BvaW50cyArIDFdKS5kaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9LFxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBnZW9kZXNpYyBsaW5lcyBmcm9tIGdlb0pzb24uIFJlcGxhY2VzIGFsbCBjdXJyZW50IGZlYXR1cmVzIG9mIHRoaXMgaW5zdGFuY2UuXHJcbiAgICogU3VwcG9ydHMgTGluZVN0cmluZywgTXVsdGlMaW5lU3RyaW5nIGFuZCBQb2x5Z29uXHJcbiAgICogQHBhcmFtIHtPYmplY3R9IGdlb2pzb24gLSBnZW9zam9uIGFzIG9iamVjdC5cclxuICAgKi9cclxuICBnZW9Kc29uOiBmdW5jdGlvbihnZW9qc29uKSB7XHJcblxyXG4gICAgbGV0IG5vcm1hbGl6ZWQgPSBMLkdlb0pTT04uYXNGZWF0dXJlKGdlb2pzb24pO1xyXG4gICAgbGV0IGZlYXR1cmVzID0gbm9ybWFsaXplZC50eXBlID09PSBcIkZlYXR1cmVDb2xsZWN0aW9uXCIgPyBub3JtYWxpemVkLmZlYXR1cmVzIDogW1xyXG4gICAgICBub3JtYWxpemVkXHJcbiAgICBdO1xyXG4gICAgdGhpcy5fbGF0bG5ncyA9IFtdO1xyXG4gICAgZm9yIChsZXQgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICBsZXQgZ2VvbWV0cnkgPSBmZWF0dXJlLnR5cGUgPT09IFwiRmVhdHVyZVwiID8gZmVhdHVyZS5nZW9tZXRyeSA6XHJcbiAgICAgICAgZmVhdHVyZSxcclxuICAgICAgICBjb29yZHMgPSBnZW9tZXRyeS5jb29yZGluYXRlcztcclxuXHJcbiAgICAgIHN3aXRjaCAoZ2VvbWV0cnkudHlwZSkge1xyXG4gICAgICAgIGNhc2UgXCJMaW5lU3RyaW5nXCI6XHJcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzLnB1c2godGhpcy5fZ2VuZXJhdGVfR2VvZGVzaWMoW0wuR2VvSlNPTi5jb29yZHNUb0xhdExuZ3MoXHJcbiAgICAgICAgICAgIGNvb3JkcywgMCldKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiTXVsdGlMaW5lU3RyaW5nXCI6XHJcbiAgICAgICAgY2FzZSBcIlBvbHlnb25cIjpcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3MucHVzaCh0aGlzLl9nZW5lcmF0ZV9HZW9kZXNpYyhMLkdlb0pTT04uY29vcmRzVG9MYXRMbmdzKFxyXG4gICAgICAgICAgICBjb29yZHMsIDEpKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwiUG9pbnRcIjpcclxuICAgICAgICBjYXNlIFwiTXVsdGlQb2ludFwiOlxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJEdWRlLCBwb2ludHMgY2FuJ3QgYmUgZHJhd24gYXMgZ2VvZGVzaWMgbGluZXMuLi5cIik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJEcmF3aW5nIFwiICsgZ2VvbWV0cnkudHlwZSArXHJcbiAgICAgICAgICAgIFwiIGFzIGEgZ2VvZGVzaWMgaXMgbm90IHN1cHBvcnRlZC4gU2tpcHBpbmcuLi5cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZ3JlYXQgY2lyY2xlLiBSZXBsYWNlcyBhbGwgY3VycmVudCBsaW5lcy5cclxuICAgKiBAcGFyYW0ge09iamVjdH0gY2VudGVyIC0gZ2VvZ3JhcGhpYyBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByYWRpdXMgLSByYWRpdXMgb2YgdGhlIGNpcmNsZSBpbiBtZXRyZXNcclxuICAgKi9cclxuICBjcmVhdGVDaXJjbGU6IGZ1bmN0aW9uKGNlbnRlciwgcmFkaXVzKSB7XHJcbiAgICBsZXQgcG9seWxpbmVJbmRleCA9IDA7XHJcbiAgICBsZXQgcHJldiA9IHtcclxuICAgICAgbGF0OiAwLFxyXG4gICAgICBsbmc6IDAsXHJcbiAgICAgIGJyZzogMFxyXG4gICAgfTtcclxuICAgIGxldCBzdGVwO1xyXG5cclxuICAgIHRoaXMuX2xhdGxuZ3MgPSBbXTtcclxuICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcclxuXHJcbiAgICBsZXQgZGlyZWN0ID0gdGhpcy5fdmluY2VudHlfZGlyZWN0KEwubGF0TG5nKGNlbnRlciksIDAsIHJhZGl1cywgdGhpcy5vcHRpb25zXHJcbiAgICAgIC53cmFwKTtcclxuICAgIHByZXYgPSBMLmxhdExuZyhkaXJlY3QubGF0LCBkaXJlY3QubG5nKTtcclxuICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChwcmV2KTtcclxuICAgIGZvciAoc3RlcCA9IDE7IHN0ZXAgPD0gdGhpcy5vcHRpb25zLnN0ZXBzOykge1xyXG4gICAgICBkaXJlY3QgPSB0aGlzLl92aW5jZW50eV9kaXJlY3QoTC5sYXRMbmcoY2VudGVyKSwgMzYwIC8gdGhpcy5vcHRpb25zXHJcbiAgICAgICAgLnN0ZXBzICogc3RlcCwgcmFkaXVzLCB0aGlzLm9wdGlvbnMud3JhcCk7XHJcbiAgICAgIGxldCBncCA9IEwubGF0TG5nKGRpcmVjdC5sYXQsIGRpcmVjdC5sbmcpO1xyXG4gICAgICBpZiAoTWF0aC5hYnMoZ3AubG5nIC0gcHJldi5sbmcpID4gMTgwKSB7XHJcbiAgICAgICAgbGV0IGludmVyc2UgPSB0aGlzLl92aW5jZW50eV9pbnZlcnNlKHByZXYsIGdwKTtcclxuICAgICAgICBsZXQgc2VjID0gdGhpcy5faW50ZXJzZWN0aW9uKHByZXYsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIHtcclxuICAgICAgICAgIGxhdDogLTg5LFxyXG4gICAgICAgICAgbG5nOiAoKGdwLmxuZyAtIHByZXYubG5nKSA+IDApID8gLUlOVEVSU0VDVF9MTkcgOiBJTlRFUlNFQ1RfTE5HXHJcbiAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgaWYgKHNlYykge1xyXG4gICAgICAgICAgdGhpcy5fbGF0bG5nc1twb2x5bGluZUluZGV4XS5wdXNoKEwubGF0TG5nKHNlYy5sYXQsIHNlYy5sbmcpKTtcclxuICAgICAgICAgIHBvbHlsaW5lSW5kZXgrKztcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcclxuICAgICAgICAgIHByZXYgPSBMLmxhdExuZyhzZWMubGF0LCAtc2VjLmxuZyk7XHJcbiAgICAgICAgICB0aGlzLl9sYXRsbmdzW3BvbHlsaW5lSW5kZXhdLnB1c2gocHJldik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBvbHlsaW5lSW5kZXgrKztcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0gPSBbXTtcclxuICAgICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChncCk7XHJcbiAgICAgICAgICBwcmV2ID0gZ3A7XHJcbiAgICAgICAgICBzdGVwKys7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2xhdGxuZ3NbcG9seWxpbmVJbmRleF0ucHVzaChncCk7XHJcbiAgICAgICAgcHJldiA9IGdwO1xyXG4gICAgICAgIHN0ZXArKztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEwuUG9seWxpbmUucHJvdG90eXBlLnNldExhdExuZ3MuY2FsbCh0aGlzLCB0aGlzLl9sYXRsbmdzKTtcclxuICB9LFxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgZ2VvZGVzaWMgUG9seWxpbmUgZnJvbSBnaXZlbiBjb29yZGluYXRlc1xyXG4gICAqIE5vdGU6IGRhc2hlZCBsaW5lcyBhcmUgdW5kZXIgd29ya1xyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBsYXRsbmdzIC0gT25lIG9yIG1vcmUgcG9seWxpbmVzIGFzIGFuIGFycmF5LiBTZWUgTGVhZmxldCBkb2MgYWJvdXQgUG9seWxpbmVcclxuICAgKiBAcmV0dXJucyAoT2JqZWN0fSBBbiBhcnJheSBvZiBhcnJheXMgb2YgZ2VvZ3JhcGhpY2FsIHBvaW50cy5cclxuICAgKi9cclxuICBfZ2VuZXJhdGVfR2VvZGVzaWM6IGZ1bmN0aW9uKGxhdGxuZ3MpIHtcclxuICAgIGxldCBfZ2VvID0gW10sIF9nZW9jbnQgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IHBvbHkgPSAwOyBwb2x5IDwgbGF0bG5ncy5sZW5ndGg7IHBvbHkrKykge1xyXG4gICAgICBfZ2VvW19nZW9jbnRdID0gW107XHJcbiAgICAgIGxldCBwcmV2ID0gTC5sYXRMbmcobGF0bG5nc1twb2x5XVswXSk7XHJcbiAgICAgIGZvciAobGV0IHBvaW50cyA9IDA7IHBvaW50cyA8IChsYXRsbmdzW3BvbHldLmxlbmd0aCAtIDEpOyBwb2ludHMrKykge1xyXG4gICAgICAgIC8vIHVzZSBwcmV2LCBzbyB0aGF0IHdyYXBwaW5nIGJlaGF2ZXMgY29ycmVjdGx5XHJcbiAgICAgICAgbGV0IHBvaW50QSA9IHByZXY7XHJcbiAgICAgICAgbGV0IHBvaW50QiA9IEwubGF0TG5nKGxhdGxuZ3NbcG9seV1bcG9pbnRzICsgMV0pO1xyXG4gICAgICAgIGlmIChwb2ludEEuZXF1YWxzKHBvaW50QikpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaW52ZXJzZSA9IHRoaXMuX3ZpbmNlbnR5X2ludmVyc2UocG9pbnRBLCBwb2ludEIpO1xyXG4gICAgICAgIF9nZW9bX2dlb2NudF0ucHVzaChwcmV2KTtcclxuICAgICAgICBmb3IgKGxldCBzID0gMTsgcyA8PSB0aGlzLm9wdGlvbnMuc3RlcHM7KSB7XHJcbiAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBpbnZlcnNlLmRpc3RhbmNlIC8gdGhpcy5vcHRpb25zLnN0ZXBzO1xyXG4gICAgICAgICAgLy8gZGFzaGVkIGxpbmVzIGRvbid0IGdvIHRoZSBmdWxsIGRpc3RhbmNlIGJldHdlZW4gdGhlIHBvaW50c1xyXG4gICAgICAgICAgbGV0IGRpc3RfbXVsdCA9IHMgLSAxICsgdGhpcy5vcHRpb25zLmRhc2g7XHJcbiAgICAgICAgICBsZXQgZGlyZWN0ID0gdGhpcy5fdmluY2VudHlfZGlyZWN0KHBvaW50QSwgaW52ZXJzZS5pbml0aWFsQmVhcmluZywgZGlzdGFuY2UqZGlzdF9tdWx0LCB0aGlzLm9wdGlvbnMud3JhcCk7XHJcbiAgICAgICAgICBsZXQgZ3AgPSBMLmxhdExuZyhkaXJlY3QubGF0LCBkaXJlY3QubG5nKTtcclxuICAgICAgICAgIGlmIChNYXRoLmFicyhncC5sbmcgLSBwcmV2LmxuZykgPiAxODApIHtcclxuICAgICAgICAgICAgbGV0IHNlYyA9IHRoaXMuX2ludGVyc2VjdGlvbihwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIHtcclxuICAgICAgICAgICAgICBsYXQ6IC04OSxcclxuICAgICAgICAgICAgICBsbmc6ICgoZ3AubG5nIC0gcHJldi5sbmcpID4gMCkgPyAtSU5URVJTRUNUX0xORyA6IElOVEVSU0VDVF9MTkdcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICAgIGlmIChzZWMpIHtcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2goTC5sYXRMbmcoc2VjLmxhdCwgc2VjLmxuZykpO1xyXG4gICAgICAgICAgICAgIF9nZW9jbnQrKztcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdID0gW107XHJcbiAgICAgICAgICAgICAgcHJldiA9IEwubGF0TG5nKHNlYy5sYXQsIC1zZWMubG5nKTtcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2gocHJldik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgX2dlb2NudCsrO1xyXG4gICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0gPSBbXTtcclxuICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2goZ3ApO1xyXG4gICAgICAgICAgICAgIHByZXYgPSBncDtcclxuICAgICAgICAgICAgICBzKys7XHJcbiAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgX2dlb1tfZ2VvY250XS5wdXNoKGdwKTtcclxuICAgICAgICAgICAgLy8gRGFzaGVkIGxpbmVzIHN0YXJ0IGEgbmV3IGxpbmVcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kYXNoIDwgMSl7XHJcbiAgICAgICAgICAgICAgICBfZ2VvY250Kys7XHJcbiAgICAgICAgICAgICAgICAvLyBnbyBmdWxsIGRpc3RhbmNlIHRoaXMgdGltZSwgdG8gZ2V0IHN0YXJ0aW5nIHBvaW50IGZvciBuZXh0IGxpbmVcclxuICAgICAgICAgICAgICAgIGxldCBkaXJlY3RfZnVsbCA9IHRoaXMuX3ZpbmNlbnR5X2RpcmVjdChwb2ludEEsIGludmVyc2UuaW5pdGlhbEJlYXJpbmcsIGRpc3RhbmNlKnMsIHRoaXMub3B0aW9ucy53cmFwKTtcclxuICAgICAgICAgICAgICAgIF9nZW9bX2dlb2NudF0gPSBbXTtcclxuICAgICAgICAgICAgICAgIHByZXYgPSBMLmxhdExuZyhkaXJlY3RfZnVsbC5sYXQsIGRpcmVjdF9mdWxsLmxuZyk7XHJcbiAgICAgICAgICAgICAgICBfZ2VvW19nZW9jbnRdLnB1c2gocHJldik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBwcmV2ID0gZ3A7XHJcbiAgICAgICAgICAgIHMrKztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgX2dlb2NudCsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9nZW87XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogVmluY2VudHkgZGlyZWN0IGNhbGN1bGF0aW9uLlxyXG4gICAqIGJhc2VkIG9uIHRoZSB3b3JrIG9mIENocmlzIFZlbmVzcyAoaHR0cHM6Ly9naXRodWIuY29tL2NocmlzdmVuZXNzL2dlb2Rlc3kpXHJcbiAgICpcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbml0aWFsQmVhcmluZyAtIEluaXRpYWwgYmVhcmluZyBpbiBkZWdyZWVzIGZyb20gbm9ydGguXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRpc3RhbmNlIC0gRGlzdGFuY2UgYWxvbmcgYmVhcmluZyBpbiBtZXRyZXMuXHJcbiAgICogQHJldHVybnMgKE9iamVjdH0gT2JqZWN0IGluY2x1ZGluZyBwb2ludCAoZGVzdGluYXRpb24gcG9pbnQpLCBmaW5hbEJlYXJpbmcuXHJcbiAgICovXHJcblxyXG4gIF92aW5jZW50eV9kaXJlY3Q6IGZ1bmN0aW9uKHAxLCBpbml0aWFsQmVhcmluZywgZGlzdGFuY2UsIHdyYXApIHtcclxuICAgIHZhciDPhjEgPSBwMS5sYXQudG9SYWRpYW5zKCksXHJcbiAgICAgIM67MSA9IHAxLmxuZy50b1JhZGlhbnMoKTtcclxuICAgIHZhciDOsTEgPSBpbml0aWFsQmVhcmluZy50b1JhZGlhbnMoKTtcclxuICAgIHZhciBzID0gZGlzdGFuY2U7XHJcblxyXG4gICAgdmFyIGEgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5hLFxyXG4gICAgICBiID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuYixcclxuICAgICAgZiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmY7XHJcblxyXG4gICAgdmFyIHNpbs6xMSA9IE1hdGguc2luKM6xMSk7XHJcbiAgICB2YXIgY29zzrExID0gTWF0aC5jb3MozrExKTtcclxuXHJcbiAgICB2YXIgdGFuVTEgPSAoMSAtIGYpICogTWF0aC50YW4oz4YxKSxcclxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxyXG4gICAgICBzaW5VMSA9IHRhblUxICogY29zVTE7XHJcbiAgICB2YXIgz4MxID0gTWF0aC5hdGFuMih0YW5VMSwgY29zzrExKTtcclxuICAgIHZhciBzaW7OsSA9IGNvc1UxICogc2luzrExO1xyXG4gICAgdmFyIGNvc1NxzrEgPSAxIC0gc2luzrEgKiBzaW7OsTtcclxuICAgIHZhciB1U3EgPSBjb3NTcc6xICogKGEgKiBhIC0gYiAqIGIpIC8gKGIgKiBiKTtcclxuICAgIHZhciBBID0gMSArIHVTcSAvIDE2Mzg0ICogKDQwOTYgKyB1U3EgKiAoLTc2OCArIHVTcSAqICgzMjAgLSAxNzUgKlxyXG4gICAgICB1U3EpKSk7XHJcbiAgICB2YXIgQiA9IHVTcSAvIDEwMjQgKiAoMjU2ICsgdVNxICogKC0xMjggKyB1U3EgKiAoNzQgLSA0NyAqIHVTcSkpKTtcclxuXHJcbiAgICB2YXIgz4MgPSBzIC8gKGIgKiBBKSxcclxuICAgICAgz4PKuSwgaXRlcmF0aW9ucyA9IDA7XHJcbiAgICB2YXIgc2luz4MsIGNvc8+DO1xyXG4gICAgdmFyIGNvczLPg007XHJcbiAgICBkbyB7XHJcbiAgICAgIGNvczLPg00gPSBNYXRoLmNvcygyICogz4MxICsgz4MpO1xyXG4gICAgICBzaW7PgyA9IE1hdGguc2luKM+DKTtcclxuICAgICAgY29zz4MgPSBNYXRoLmNvcyjPgyk7XHJcbiAgICAgIHZhciDOlM+DID0gQiAqIHNpbs+DICogKGNvczLPg00gKyBCIC8gNCAqIChjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICpcclxuICAgICAgICAgIGNvczLPg00pIC1cclxuICAgICAgICBCIC8gNiAqIGNvczLPg00gKiAoLTMgKyA0ICogc2luz4MgKiBzaW7PgykgKiAoLTMgKyA0ICogY29zMs+DTSAqXHJcbiAgICAgICAgICBjb3Myz4NNKSkpO1xyXG4gICAgICDPg8q5ID0gz4M7XHJcbiAgICAgIM+DID0gcyAvIChiICogQSkgKyDOlM+DO1xyXG4gICAgfSB3aGlsZSAoTWF0aC5hYnMoz4MgLSDPg8q5KSA+IDFlLTEyICYmICsraXRlcmF0aW9ucyk7XHJcblxyXG4gICAgdmFyIHggPSBzaW5VMSAqIHNpbs+DIC0gY29zVTEgKiBjb3PPgyAqIGNvc86xMTtcclxuICAgIHZhciDPhjIgPSBNYXRoLmF0YW4yKHNpblUxICogY29zz4MgKyBjb3NVMSAqIHNpbs+DICogY29zzrExLCAoMSAtIGYpICpcclxuICAgICAgTWF0aC5zcXJ0KHNpbs6xICogc2luzrEgKyB4ICogeCkpO1xyXG4gICAgdmFyIM67ID0gTWF0aC5hdGFuMihzaW7PgyAqIHNpbs6xMSwgY29zVTEgKiBjb3PPgyAtIHNpblUxICogc2luz4MgKiBjb3POsTEpO1xyXG4gICAgdmFyIEMgPSBmIC8gMTYgKiBjb3NTcc6xICogKDQgKyBmICogKDQgLSAzICogY29zU3HOsSkpO1xyXG4gICAgdmFyIEwgPSDOuyAtICgxIC0gQykgKiBmICogc2luzrEgKlxyXG4gICAgICAoz4MgKyBDICogc2luz4MgKiAoY29zMs+DTSArIEMgKiBjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICogY29zMs+DTSkpKTtcclxuXHJcbiAgICB2YXIgzrsyO1xyXG4gICAgaWYgKHdyYXApIHtcclxuICAgICAgzrsyID0gKM67MSArIEwgKyAzICogTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gbm9ybWFsaXNlIHRvIC0xODAuLi4rMTgwXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICDOuzIgPSAozrsxICsgTCk7IC8vIGRvIG5vdCBub3JtYWxpemVcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcmV2QXogPSBNYXRoLmF0YW4yKHNpbs6xLCAteCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbGF0OiDPhjIudG9EZWdyZWVzKCksXHJcbiAgICAgIGxuZzogzrsyLnRvRGVncmVlcygpLFxyXG4gICAgICBmaW5hbEJlYXJpbmc6IHJldkF6LnRvRGVncmVlcygpXHJcbiAgICB9O1xyXG4gIH0sXHJcblxyXG4gIC8qKlxyXG4gICAqIFZpbmNlbnR5IGludmVyc2UgY2FsY3VsYXRpb24uXHJcbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHtMYXRMbmd9IHAxIC0gTGF0aXR1ZGUvbG9uZ2l0dWRlIG9mIHN0YXJ0IHBvaW50LlxyXG4gICAqIEBwYXJhbSB7TGF0TG5nfSBwMiAtIExhdGl0dWRlL2xvbmdpdHVkZSBvZiBkZXN0aW5hdGlvbiBwb2ludC5cclxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBPYmplY3QgaW5jbHVkaW5nIGRpc3RhbmNlLCBpbml0aWFsQmVhcmluZywgZmluYWxCZWFyaW5nLlxyXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBmb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZS5cclxuICAgKi9cclxuICBfdmluY2VudHlfaW52ZXJzZTogZnVuY3Rpb24ocDEsIHAyKSB7XHJcbiAgICB2YXIgz4YxID0gcDEubGF0LnRvUmFkaWFucygpLFxyXG4gICAgICDOuzEgPSBwMS5sbmcudG9SYWRpYW5zKCk7XHJcbiAgICB2YXIgz4YyID0gcDIubGF0LnRvUmFkaWFucygpLFxyXG4gICAgICDOuzIgPSBwMi5sbmcudG9SYWRpYW5zKCk7XHJcblxyXG4gICAgdmFyIGEgPSB0aGlzLmRhdHVtLmVsbGlwc29pZC5hLFxyXG4gICAgICBiID0gdGhpcy5kYXR1bS5lbGxpcHNvaWQuYixcclxuICAgICAgZiA9IHRoaXMuZGF0dW0uZWxsaXBzb2lkLmY7XHJcblxyXG4gICAgdmFyIEwgPSDOuzIgLSDOuzE7XHJcbiAgICB2YXIgdGFuVTEgPSAoMSAtIGYpICogTWF0aC50YW4oz4YxKSxcclxuICAgICAgY29zVTEgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTEgKiB0YW5VMSkpLFxyXG4gICAgICBzaW5VMSA9IHRhblUxICogY29zVTE7XHJcbiAgICB2YXIgdGFuVTIgPSAoMSAtIGYpICogTWF0aC50YW4oz4YyKSxcclxuICAgICAgY29zVTIgPSAxIC8gTWF0aC5zcXJ0KCgxICsgdGFuVTIgKiB0YW5VMikpLFxyXG4gICAgICBzaW5VMiA9IHRhblUyICogY29zVTI7XHJcblxyXG4gICAgdmFyIM67ID0gTCxcclxuICAgICAgzrvKuSwgaXRlcmF0aW9ucyA9IDA7XHJcbiAgICB2YXIgY29zU3HOsSwgc2luz4MsIGNvczLPg00sIGNvc8+DLCDPgywgc2luzrssIGNvc867O1xyXG4gICAgZG8ge1xyXG4gICAgICBzaW7OuyA9IE1hdGguc2luKM67KTtcclxuICAgICAgY29zzrsgPSBNYXRoLmNvcyjOuyk7XHJcbiAgICAgIHZhciBzaW5Tcc+DID0gKGNvc1UyICogc2luzrspICogKGNvc1UyICogc2luzrspICsgKGNvc1UxICogc2luVTIgLVxyXG4gICAgICAgIHNpblUxICogY29zVTIgKiBjb3POuykgKiAoY29zVTEgKiBzaW5VMiAtIHNpblUxICogY29zVTIgKiBjb3POuyk7XHJcbiAgICAgIHNpbs+DID0gTWF0aC5zcXJ0KHNpblNxz4MpO1xyXG4gICAgICBpZiAoc2luz4MgPT0gMCkgcmV0dXJuIDA7IC8vIGNvLWluY2lkZW50IHBvaW50c1xyXG4gICAgICBjb3PPgyA9IHNpblUxICogc2luVTIgKyBjb3NVMSAqIGNvc1UyICogY29zzrs7XHJcbiAgICAgIM+DID0gTWF0aC5hdGFuMihzaW7PgywgY29zz4MpO1xyXG4gICAgICB2YXIgc2luzrEgPSBjb3NVMSAqIGNvc1UyICogc2luzrsgLyBzaW7PgztcclxuICAgICAgY29zU3HOsSA9IDEgLSBzaW7OsSAqIHNpbs6xO1xyXG4gICAgICBjb3Myz4NNID0gY29zz4MgLSAyICogc2luVTEgKiBzaW5VMiAvIGNvc1NxzrE7XHJcbiAgICAgIGlmIChpc05hTihjb3Myz4NNKSkgY29zMs+DTSA9IDA7IC8vIGVxdWF0b3JpYWwgbGluZTogY29zU3HOsT0wICjCpzYpXHJcbiAgICAgIHZhciBDID0gZiAvIDE2ICogY29zU3HOsSAqICg0ICsgZiAqICg0IC0gMyAqIGNvc1NxzrEpKTtcclxuICAgICAgzrvKuSA9IM67O1xyXG4gICAgICDOuyA9IEwgKyAoMSAtIEMpICogZiAqIHNpbs6xICogKM+DICsgQyAqIHNpbs+DICogKGNvczLPg00gKyBDICogY29zz4MgKiAoLVxyXG4gICAgICAgIDEgKyAyICogY29zMs+DTSAqIGNvczLPg00pKSk7XHJcbiAgICB9IHdoaWxlIChNYXRoLmFicyjOuyAtIM67yrkpID4gMWUtMTIgJiYgKytpdGVyYXRpb25zIDwgMTAwKTtcclxuICAgIGlmIChpdGVyYXRpb25zID49IDEwMCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkZvcm11bGEgZmFpbGVkIHRvIGNvbnZlcmdlLiBBbHRlcmluZyB0YXJnZXQgcG9zaXRpb24uXCIpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdmluY2VudHlfaW52ZXJzZShwMSwge1xyXG4gICAgICAgICAgbGF0OiBwMi5sYXQsXHJcbiAgICAgICAgICBsbmc6IHAyLmxuZyAtIDAuMDFcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyAgdGhyb3cgbmV3IEVycm9yKCdGb3JtdWxhIGZhaWxlZCB0byBjb252ZXJnZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciB1U3EgPSBjb3NTcc6xICogKGEgKiBhIC0gYiAqIGIpIC8gKGIgKiBiKTtcclxuICAgIHZhciBBID0gMSArIHVTcSAvIDE2Mzg0ICogKDQwOTYgKyB1U3EgKiAoLTc2OCArIHVTcSAqICgzMjAgLSAxNzUgKlxyXG4gICAgICB1U3EpKSk7XHJcbiAgICB2YXIgQiA9IHVTcSAvIDEwMjQgKiAoMjU2ICsgdVNxICogKC0xMjggKyB1U3EgKiAoNzQgLSA0NyAqIHVTcSkpKTtcclxuICAgIHZhciDOlM+DID0gQiAqIHNpbs+DICogKGNvczLPg00gKyBCIC8gNCAqIChjb3PPgyAqICgtMSArIDIgKiBjb3Myz4NNICpcclxuICAgICAgICBjb3Myz4NNKSAtXHJcbiAgICAgIEIgLyA2ICogY29zMs+DTSAqICgtMyArIDQgKiBzaW7PgyAqIHNpbs+DKSAqICgtMyArIDQgKiBjb3Myz4NNICpcclxuICAgICAgICBjb3Myz4NNKSkpO1xyXG5cclxuICAgIHZhciBzID0gYiAqIEEgKiAoz4MgLSDOlM+DKTtcclxuXHJcbiAgICB2YXIgZndkQXogPSBNYXRoLmF0YW4yKGNvc1UyICogc2luzrssIGNvc1UxICogc2luVTIgLSBzaW5VMSAqIGNvc1UyICpcclxuICAgICAgY29zzrspO1xyXG4gICAgdmFyIHJldkF6ID0gTWF0aC5hdGFuMihjb3NVMSAqIHNpbs67LCAtc2luVTEgKiBjb3NVMiArIGNvc1UxICogc2luVTIgKlxyXG4gICAgICBjb3POuyk7XHJcblxyXG4gICAgcyA9IE51bWJlcihzLnRvRml4ZWQoMykpOyAvLyByb3VuZCB0byAxbW0gcHJlY2lzaW9uXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkaXN0YW5jZTogcyxcclxuICAgICAgaW5pdGlhbEJlYXJpbmc6IGZ3ZEF6LnRvRGVncmVlcygpLFxyXG4gICAgICBmaW5hbEJlYXJpbmc6IHJldkF6LnRvRGVncmVlcygpXHJcbiAgICB9O1xyXG4gIH0sXHJcblxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBwb2ludCBvZiBpbnRlcnNlY3Rpb24gb2YgdHdvIHBhdGhzIGRlZmluZWQgYnkgcG9pbnQgYW5kIGJlYXJpbmcuXHJcbiAgICogYmFzZWQgb24gdGhlIHdvcmsgb2YgQ2hyaXMgVmVuZXNzIChodHRwczovL2dpdGh1Yi5jb20vY2hyaXN2ZW5lc3MvZ2VvZGVzeSlcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7TGF0TG9ufSBwMSAtIEZpcnN0IHBvaW50LlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBicm5nMSAtIEluaXRpYWwgYmVhcmluZyBmcm9tIGZpcnN0IHBvaW50LlxyXG4gICAqIEBwYXJhbSB7TGF0TG9ufSBwMiAtIFNlY29uZCBwb2ludC5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gYnJuZzIgLSBJbml0aWFsIGJlYXJpbmcgZnJvbSBzZWNvbmQgcG9pbnQuXHJcbiAgICogQHJldHVybnMge09iamVjdH0gY29udGFpbmluZyBsYXQvbG5nIGluZm9ybWF0aW9uIG9mIGludGVyc2VjdGlvbi5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogdmFyIHAxID0gTGF0TG9uKDUxLjg4NTMsIDAuMjU0NSksIGJybmcxID0gMTA4LjU1O1xyXG4gICAqIHZhciBwMiA9IExhdExvbig0OS4wMDM0LCAyLjU3MzUpLCBicm5nMiA9IDMyLjQ0O1xyXG4gICAqIHZhciBwSW50ID0gTGF0TG9uLmludGVyc2VjdGlvbihwMSwgYnJuZzEsIHAyLCBicm5nMik7IC8vIHBJbnQudG9TdHJpbmcoKTogNTAuOTA3OMKwTiwgNC41MDg0wrBFXHJcbiAgICovXHJcbiAgX2ludGVyc2VjdGlvbjogZnVuY3Rpb24ocDEsIGJybmcxLCBwMiwgYnJuZzIpIHtcclxuICAgIC8vIHNlZSBodHRwOi8vd2lsbGlhbXMuYmVzdC52d2gubmV0L2F2Zm9ybS5odG0jSW50ZXJzZWN0aW9uXHJcblxyXG4gICAgdmFyIM+GMSA9IHAxLmxhdC50b1JhZGlhbnMoKSxcclxuICAgICAgzrsxID0gcDEubG5nLnRvUmFkaWFucygpO1xyXG4gICAgdmFyIM+GMiA9IHAyLmxhdC50b1JhZGlhbnMoKSxcclxuICAgICAgzrsyID0gcDIubG5nLnRvUmFkaWFucygpO1xyXG4gICAgdmFyIM64MTMgPSBOdW1iZXIoYnJuZzEpLnRvUmFkaWFucygpLFxyXG4gICAgICDOuDIzID0gTnVtYmVyKGJybmcyKS50b1JhZGlhbnMoKTtcclxuICAgIHZhciDOlM+GID0gz4YyIC0gz4YxLFxyXG4gICAgICDOlM67ID0gzrsyIC0gzrsxO1xyXG5cclxuICAgIHZhciDOtDEyID0gMiAqIE1hdGguYXNpbihNYXRoLnNxcnQoTWF0aC5zaW4ozpTPhiAvIDIpICogTWF0aC5zaW4ozpTPhiAvIDIpICtcclxuICAgICAgTWF0aC5jb3Moz4YxKSAqIE1hdGguY29zKM+GMikgKiBNYXRoLnNpbijOlM67IC8gMikgKiBNYXRoLnNpbijOlM67IC9cclxuICAgICAgICAyKSkpO1xyXG4gICAgaWYgKM60MTIgPT0gMCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gaW5pdGlhbC9maW5hbCBiZWFyaW5ncyBiZXR3ZWVuIHBvaW50c1xyXG4gICAgdmFyIM64MSA9IE1hdGguYWNvcygoTWF0aC5zaW4oz4YyKSAtIE1hdGguc2luKM+GMSkgKiBNYXRoLmNvcyjOtDEyKSkgL1xyXG4gICAgICAoTWF0aC5zaW4ozrQxMikgKiBNYXRoLmNvcyjPhjEpKSk7XHJcbiAgICBpZiAoaXNOYU4ozrgxKSkgzrgxID0gMDsgLy8gcHJvdGVjdCBhZ2FpbnN0IHJvdW5kaW5nXHJcbiAgICB2YXIgzrgyID0gTWF0aC5hY29zKChNYXRoLnNpbijPhjEpIC0gTWF0aC5zaW4oz4YyKSAqIE1hdGguY29zKM60MTIpKSAvXHJcbiAgICAgIChNYXRoLnNpbijOtDEyKSAqIE1hdGguY29zKM+GMikpKTtcclxuICAgIHZhciDOuDEyLCDOuDIxO1xyXG4gICAgaWYgKE1hdGguc2luKM67MiAtIM67MSkgPiAwKSB7XHJcbiAgICAgIM64MTIgPSDOuDE7XHJcbiAgICAgIM64MjEgPSAyICogTWF0aC5QSSAtIM64MjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIM64MTIgPSAyICogTWF0aC5QSSAtIM64MTtcclxuICAgICAgzrgyMSA9IM64MjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgzrExID0gKM64MTMgLSDOuDEyICsgTWF0aC5QSSkgJSAoMiAqIE1hdGguUEkpIC0gTWF0aC5QSTsgLy8gYW5nbGUgMi0xLTNcclxuICAgIHZhciDOsTIgPSAozrgyMSAtIM64MjMgKyBNYXRoLlBJKSAlICgyICogTWF0aC5QSSkgLSBNYXRoLlBJOyAvLyBhbmdsZSAxLTItM1xyXG5cclxuICAgIGlmIChNYXRoLnNpbijOsTEpID09IDAgJiYgTWF0aC5zaW4ozrEyKSA9PSAwKSByZXR1cm4gbnVsbDsgLy8gaW5maW5pdGUgaW50ZXJzZWN0aW9uc1xyXG4gICAgaWYgKE1hdGguc2luKM6xMSkgKiBNYXRoLnNpbijOsTIpIDwgMCkgcmV0dXJuIG51bGw7IC8vIGFtYmlndW91cyBpbnRlcnNlY3Rpb25cclxuXHJcbiAgICAvL86xMSA9IE1hdGguYWJzKM6xMSk7XHJcbiAgICAvL86xMiA9IE1hdGguYWJzKM6xMik7XHJcbiAgICAvLyAuLi4gRWQgV2lsbGlhbXMgdGFrZXMgYWJzIG9mIM6xMS/OsTIsIGJ1dCBzZWVtcyB0byBicmVhayBjYWxjdWxhdGlvbj9cclxuXHJcbiAgICB2YXIgzrEzID0gTWF0aC5hY29zKC1NYXRoLmNvcyjOsTEpICogTWF0aC5jb3MozrEyKSArXHJcbiAgICAgIE1hdGguc2luKM6xMSkgKiBNYXRoLnNpbijOsTIpICogTWF0aC5jb3MozrQxMikpO1xyXG4gICAgdmFyIM60MTMgPSBNYXRoLmF0YW4yKE1hdGguc2luKM60MTIpICogTWF0aC5zaW4ozrExKSAqIE1hdGguc2luKM6xMiksXHJcbiAgICAgIE1hdGguY29zKM6xMikgKyBNYXRoLmNvcyjOsTEpICogTWF0aC5jb3MozrEzKSk7XHJcbiAgICB2YXIgz4YzID0gTWF0aC5hc2luKE1hdGguc2luKM+GMSkgKiBNYXRoLmNvcyjOtDEzKSArXHJcbiAgICAgIE1hdGguY29zKM+GMSkgKiBNYXRoLnNpbijOtDEzKSAqIE1hdGguY29zKM64MTMpKTtcclxuICAgIHZhciDOlM67MTMgPSBNYXRoLmF0YW4yKE1hdGguc2luKM64MTMpICogTWF0aC5zaW4ozrQxMykgKiBNYXRoLmNvcyjPhjEpLFxyXG4gICAgICBNYXRoLmNvcyjOtDEzKSAtIE1hdGguc2luKM+GMSkgKiBNYXRoLnNpbijPhjMpKTtcclxuICAgIHZhciDOuzMgPSDOuzEgKyDOlM67MTM7XHJcbiAgICDOuzMgPSAozrszICsgMyAqIE1hdGguUEkpICUgKDIgKiBNYXRoLlBJKSAtIE1hdGguUEk7IC8vIG5vcm1hbGlzZSB0byAtMTgwLi4rMTgwwrpcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBsYXQ6IM+GMy50b0RlZ3JlZXMoKSxcclxuICAgICAgbG5nOiDOuzMudG9EZWdyZWVzKClcclxuICAgIH07XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogT3ZlcndyaXRlcyBvYmoxJ3MgdmFsdWVzIHdpdGggb2JqMidzIGFuZCBhZGRzIG9iajIncyBpZiBub24gZXhpc3RlbnQgaW4gb2JqMVxyXG4gICAqIEBwYXJhbSBvYmoxXHJcbiAgICogQHBhcmFtIG9iajJcclxuICAgKiBAcmV0dXJucyBvYmozIGEgbmV3IG9iamVjdCBiYXNlZCBvbiBvYmoxIGFuZCBvYmoyXHJcbiAgICovXHJcbiAgX21lcmdlX29wdGlvbnM6IGZ1bmN0aW9uKG9iajEsIG9iajIpIHtcclxuICAgIGxldCBvYmozID0ge307XHJcbiAgICBmb3IgKGxldCBhdHRybmFtZSBpbiBvYmoxKSB7XHJcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMVthdHRybmFtZV07XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBhdHRybmFtZSBpbiBvYmoyKSB7XHJcbiAgICAgIG9iajNbYXR0cm5hbWVdID0gb2JqMlthdHRybmFtZV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqMztcclxuICB9XHJcbn0pO1xyXG5cclxuTC5nZW9kZXNpYyA9IGZ1bmN0aW9uKGxhdGxuZ3MsIG9wdGlvbnMpIHtcclxuICByZXR1cm4gbmV3IEwuR2VvZGVzaWMobGF0bG5ncywgb3B0aW9ucyk7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL0xlYWZsZXQuR2VvZGVzaWMvTGVhZmxldC5HZW9kZXNpYy5qc1xuLy8gbW9kdWxlIGlkID0gLi9ub2RlX21vZHVsZXMvTGVhZmxldC5HZW9kZXNpYy9MZWFmbGV0Lkdlb2Rlc2ljLmpzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCAxIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\n");
/***/ }),
@@ -338,21 +338,21 @@ eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n
/***/ "./resources/js/bootstrap.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n * Bootstrap any Javascript libraries required\n */\n\nwindow.axios = __webpack_require__(\"./node_modules/axios/index.js\");\n\n/**\n * Container for phpVMS specific functions\n */\nwindow.phpvms = {};\n\n/**\n * Configure Axios with both the csrf token and the API key\n */\n\nvar base_url = document.head.querySelector('meta[name=\"base-url\"]');\nif (base_url) {\n window.axios.default.baseURL = base_url;\n}\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\nvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n /*window.jquery.ajaxSetup({\n 'X-CSRF-TOKEN': token.content\n })*/\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\nvar api_key = document.head.querySelector('meta[name=\"api-key\"]');\nif (api_key) {\n window.axios.defaults.headers.common['x-api-key'] = api_key.content;\n window.PHPVMS_USER_API_KEY = api_key.content;\n} else {\n window.PHPVMS_USER_API_KEY = false;\n console.error('API Key not found!');\n}\n\n__webpack_require__(\"./resources/js/common.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzBlNTgiXSwibmFtZXMiOlsid2luZG93IiwiYXhpb3MiLCJyZXF1aXJlIiwicGhwdm1zIiwiYmFzZV91cmwiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdCIsImJhc2VVUkwiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsImNvbnRlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhcGlfa2V5IiwiUEhQVk1TX1VTRVJfQVBJX0tFWSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQUEsT0FBT0MsS0FBUCxHQUFlLG1CQUFBQyxDQUFRLCtCQUFSLENBQWY7O0FBRUE7OztBQUdBRixPQUFPRyxNQUFQLEdBQWdCLEVBQWhCOztBQUVBOzs7O0FBSUEsSUFBTUMsV0FBV0MsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHVCQUE1QixDQUFqQjtBQUNBLElBQUdILFFBQUgsRUFBYTtBQUNYSixTQUFPQyxLQUFQLENBQWFPLE9BQWIsQ0FBcUJDLE9BQXJCLEdBQStCTCxRQUEvQjtBQUNEOztBQUVESixPQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxrQkFBckMsSUFBMkQsZ0JBQTNEO0FBQ0EsSUFBTUMsUUFBUVIsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHlCQUE1QixDQUFkOztBQUVBLElBQUlNLEtBQUosRUFBVztBQUNUYixTQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxjQUFyQyxJQUF1REMsTUFBTUMsT0FBN0Q7QUFDQTs7O0FBR0QsQ0FMRCxNQUtPO0FBQ0xDLFVBQVFDLEtBQVIsQ0FBYyx1RUFBZDtBQUNEOztBQUVELElBQU1DLFVBQVVaLFNBQVNDLElBQVQsQ0FBY0MsYUFBZCxDQUE0QixzQkFBNUIsQ0FBaEI7QUFDQSxJQUFJVSxPQUFKLEVBQWE7QUFDWGpCLFNBQU9DLEtBQVAsQ0FBYVMsUUFBYixDQUFzQkMsT0FBdEIsQ0FBOEJDLE1BQTlCLENBQXFDLFdBQXJDLElBQW9ESyxRQUFRSCxPQUE1RDtBQUNBZCxTQUFPa0IsbUJBQVAsR0FBNkJELFFBQVFILE9BQXJDO0FBQ0QsQ0FIRCxNQUdPO0FBQ0xkLFNBQU9rQixtQkFBUCxHQUE2QixLQUE3QjtBQUNBSCxVQUFRQyxLQUFSLENBQWMsb0JBQWQ7QUFDRDs7QUFFRCxtQkFBQWQsQ0FBUSwwQkFBUiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJvb3RzdHJhcCBhbnkgSmF2YXNjcmlwdCBsaWJyYXJpZXMgcmVxdWlyZWRcbiAqL1xuXG53aW5kb3cuYXhpb3MgPSByZXF1aXJlKCdheGlvcycpO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgcGhwVk1TIHNwZWNpZmljIGZ1bmN0aW9uc1xuICovXG53aW5kb3cucGhwdm1zID0ge307XG5cbi8qKlxuICogQ29uZmlndXJlIEF4aW9zIHdpdGggYm90aCB0aGUgY3NyZiB0b2tlbiBhbmQgdGhlIEFQSSBrZXlcbiAqL1xuXG5jb25zdCBiYXNlX3VybCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiYmFzZS11cmxcIl0nKTtcbmlmKGJhc2VfdXJsKSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0LmJhc2VVUkwgPSBiYXNlX3VybDtcbn1cblxud2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLVJlcXVlc3RlZC1XaXRoJ10gPSAnWE1MSHR0cFJlcXVlc3QnO1xuY29uc3QgdG9rZW4gPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcblxuaWYgKHRva2VuKSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSB0b2tlbi5jb250ZW50XG4gIC8qd2luZG93LmpxdWVyeS5hamF4U2V0dXAoe1xuICAgICdYLUNTUkYtVE9LRU4nOiB0b2tlbi5jb250ZW50XG4gIH0pKi9cbn0gZWxzZSB7XG4gIGNvbnNvbGUuZXJyb3IoJ0NTUkYgdG9rZW4gbm90IGZvdW5kOiBodHRwczovL2xhcmF2ZWwuY29tL2RvY3MvY3NyZiNjc3JmLXgtY3NyZi10b2tlbicpXG59XG5cbmNvbnN0IGFwaV9rZXkgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImFwaS1rZXlcIl0nKTtcbmlmIChhcGlfa2V5KSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsneC1hcGkta2V5J10gPSBhcGlfa2V5LmNvbnRlbnQ7XG4gIHdpbmRvdy5QSFBWTVNfVVNFUl9BUElfS0VZID0gYXBpX2tleS5jb250ZW50XG59IGVsc2Uge1xuICB3aW5kb3cuUEhQVk1TX1VTRVJfQVBJX0tFWSA9IGZhbHNlO1xuICBjb25zb2xlLmVycm9yKCdBUEkgS2V5IG5vdCBmb3VuZCEnKVxufVxuXG5yZXF1aXJlKCcuL2NvbW1vbicpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
+eval("/**\r\n * Bootstrap any Javascript libraries required\r\n */\n\nwindow.axios = __webpack_require__(\"./node_modules/axios/index.js\");\n\n/**\r\n * Container for phpVMS specific functions\r\n */\nwindow.phpvms = {};\n\n/**\r\n * Configure Axios with both the csrf token and the API key\r\n */\n\nvar base_url = document.head.querySelector('meta[name=\"base-url\"]');\nif (base_url) {\n window.axios.default.baseURL = base_url;\n}\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\nvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n /*window.jquery.ajaxSetup({\r\n 'X-CSRF-TOKEN': token.content\r\n })*/\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\nvar api_key = document.head.querySelector('meta[name=\"api-key\"]');\nif (api_key) {\n window.axios.defaults.headers.common['x-api-key'] = api_key.content;\n window.PHPVMS_USER_API_KEY = api_key.content;\n} else {\n window.PHPVMS_USER_API_KEY = false;\n console.error('API Key not found!');\n}\n\n__webpack_require__(\"./resources/js/common.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzBlNTgiXSwibmFtZXMiOlsid2luZG93IiwiYXhpb3MiLCJyZXF1aXJlIiwicGhwdm1zIiwiYmFzZV91cmwiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdCIsImJhc2VVUkwiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsImNvbnRlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhcGlfa2V5IiwiUEhQVk1TX1VTRVJfQVBJX0tFWSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQUEsT0FBT0MsS0FBUCxHQUFlLG1CQUFBQyxDQUFRLCtCQUFSLENBQWY7O0FBRUE7OztBQUdBRixPQUFPRyxNQUFQLEdBQWdCLEVBQWhCOztBQUVBOzs7O0FBSUEsSUFBTUMsV0FBV0MsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHVCQUE1QixDQUFqQjtBQUNBLElBQUdILFFBQUgsRUFBYTtBQUNYSixTQUFPQyxLQUFQLENBQWFPLE9BQWIsQ0FBcUJDLE9BQXJCLEdBQStCTCxRQUEvQjtBQUNEOztBQUVESixPQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxrQkFBckMsSUFBMkQsZ0JBQTNEO0FBQ0EsSUFBTUMsUUFBUVIsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHlCQUE1QixDQUFkOztBQUVBLElBQUlNLEtBQUosRUFBVztBQUNUYixTQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxjQUFyQyxJQUF1REMsTUFBTUMsT0FBN0Q7QUFDQTs7O0FBR0QsQ0FMRCxNQUtPO0FBQ0xDLFVBQVFDLEtBQVIsQ0FBYyx1RUFBZDtBQUNEOztBQUVELElBQU1DLFVBQVVaLFNBQVNDLElBQVQsQ0FBY0MsYUFBZCxDQUE0QixzQkFBNUIsQ0FBaEI7QUFDQSxJQUFJVSxPQUFKLEVBQWE7QUFDWGpCLFNBQU9DLEtBQVAsQ0FBYVMsUUFBYixDQUFzQkMsT0FBdEIsQ0FBOEJDLE1BQTlCLENBQXFDLFdBQXJDLElBQW9ESyxRQUFRSCxPQUE1RDtBQUNBZCxTQUFPa0IsbUJBQVAsR0FBNkJELFFBQVFILE9BQXJDO0FBQ0QsQ0FIRCxNQUdPO0FBQ0xkLFNBQU9rQixtQkFBUCxHQUE2QixLQUE3QjtBQUNBSCxVQUFRQyxLQUFSLENBQWMsb0JBQWQ7QUFDRDs7QUFFRCxtQkFBQWQsQ0FBUSwwQkFBUiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQm9vdHN0cmFwIGFueSBKYXZhc2NyaXB0IGxpYnJhcmllcyByZXF1aXJlZFxyXG4gKi9cclxuXHJcbndpbmRvdy5heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XHJcblxyXG4vKipcclxuICogQ29udGFpbmVyIGZvciBwaHBWTVMgc3BlY2lmaWMgZnVuY3Rpb25zXHJcbiAqL1xyXG53aW5kb3cucGhwdm1zID0ge307XHJcblxyXG4vKipcclxuICogQ29uZmlndXJlIEF4aW9zIHdpdGggYm90aCB0aGUgY3NyZiB0b2tlbiBhbmQgdGhlIEFQSSBrZXlcclxuICovXHJcblxyXG5jb25zdCBiYXNlX3VybCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiYmFzZS11cmxcIl0nKTtcclxuaWYoYmFzZV91cmwpIHtcclxuICB3aW5kb3cuYXhpb3MuZGVmYXVsdC5iYXNlVVJMID0gYmFzZV91cmw7XHJcbn1cclxuXHJcbndpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcclxuY29uc3QgdG9rZW4gPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcclxuXHJcbmlmICh0b2tlbikge1xyXG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSB0b2tlbi5jb250ZW50XHJcbiAgLyp3aW5kb3cuanF1ZXJ5LmFqYXhTZXR1cCh7XHJcbiAgICAnWC1DU1JGLVRPS0VOJzogdG9rZW4uY29udGVudFxyXG4gIH0pKi9cclxufSBlbHNlIHtcclxuICBjb25zb2xlLmVycm9yKCdDU1JGIHRva2VuIG5vdCBmb3VuZDogaHR0cHM6Ly9sYXJhdmVsLmNvbS9kb2NzL2NzcmYjY3NyZi14LWNzcmYtdG9rZW4nKVxyXG59XHJcblxyXG5jb25zdCBhcGlfa2V5ID0gZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9XCJhcGkta2V5XCJdJyk7XHJcbmlmIChhcGlfa2V5KSB7XHJcbiAgd2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWyd4LWFwaS1rZXknXSA9IGFwaV9rZXkuY29udGVudDtcclxuICB3aW5kb3cuUEhQVk1TX1VTRVJfQVBJX0tFWSA9IGFwaV9rZXkuY29udGVudFxyXG59IGVsc2Uge1xyXG4gIHdpbmRvdy5QSFBWTVNfVVNFUl9BUElfS0VZID0gZmFsc2U7XHJcbiAgY29uc29sZS5lcnJvcignQVBJIEtleSBub3QgZm91bmQhJylcclxufVxyXG5cclxucmVxdWlyZSgnLi9jb21tb24nKTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
/***/ }),
/***/ "./resources/js/common.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n *\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n/**\n * Generic formatter to prepend\n * @param value\n * @param prepend\n * @returns {*}\n */\nrivets.formatters.prepend = function (value, prepend) {\n return prepend + value;\n};\n\n/**\n * Format minutes into HHh MMm\n * @param value\n * @returns {string}\n */\nrivets.formatters.time_hm = function (value) {\n var hours = Math.floor(value / 60);\n var mins = value % 60;\n return hours + 'h ' + mins + 'm';\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.gt = function (value, len) {\n return value.length > len;\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.lt = function (value, len) {\n return value.length < len;\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.eq = function (value, len) {\n return value.length > len;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzPzVmZDUiXSwibmFtZXMiOlsicml2ZXRzIiwicmVxdWlyZSIsImZvcm1hdHRlcnMiLCJwcmVwZW5kIiwidmFsdWUiLCJ0aW1lX2htIiwiaG91cnMiLCJNYXRoIiwiZmxvb3IiLCJtaW5zIiwiZ3QiLCJsZW4iLCJsZW5ndGgiLCJsdCIsImVxIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQU1BLFNBQVMsbUJBQUFDLENBQVEsc0NBQVIsQ0FBZjs7QUFFQTs7Ozs7O0FBTUFELE9BQU9FLFVBQVAsQ0FBa0JDLE9BQWxCLEdBQTRCLFVBQVVDLEtBQVYsRUFBaUJELE9BQWpCLEVBQTBCO0FBQ2xELFNBQU9BLFVBQVVDLEtBQWpCO0FBQ0gsQ0FGRDs7QUFJQTs7Ozs7QUFLQUosT0FBT0UsVUFBUCxDQUFrQkcsT0FBbEIsR0FBNEIsVUFBU0QsS0FBVCxFQUFnQjtBQUN4QyxNQUFNRSxRQUFRQyxLQUFLQyxLQUFMLENBQVdKLFFBQVEsRUFBbkIsQ0FBZDtBQUNBLE1BQU1LLE9BQU9MLFFBQVEsRUFBckI7QUFDQSxTQUFPRSxRQUFRLElBQVIsR0FBZUcsSUFBZixHQUFzQixHQUE3QjtBQUNILENBSkQ7O0FBTUE7Ozs7OztBQU1BVCxPQUFPRSxVQUFQLENBQWtCUSxFQUFsQixHQUF1QixVQUFDTixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCVyxFQUFsQixHQUF1QixVQUFDVCxLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCWSxFQUFsQixHQUF1QixVQUFDVixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICovXG5cbmNvbnN0IHJpdmV0cyA9IHJlcXVpcmUoJ3JpdmV0cycpO1xuXG4vKipcbiAqIEdlbmVyaWMgZm9ybWF0dGVyIHRvIHByZXBlbmRcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIHByZXBlbmRcbiAqIEByZXR1cm5zIHsqfVxuICovXG5yaXZldHMuZm9ybWF0dGVycy5wcmVwZW5kID0gZnVuY3Rpb24gKHZhbHVlLCBwcmVwZW5kKSB7XG4gICAgcmV0dXJuIHByZXBlbmQgKyB2YWx1ZVxufTtcblxuLyoqXG4gKiBGb3JtYXQgbWludXRlcyBpbnRvIEhIaCBNTW1cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xucml2ZXRzLmZvcm1hdHRlcnMudGltZV9obSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHZhbHVlIC8gNjApO1xuICAgIGNvbnN0IG1pbnMgPSB2YWx1ZSAlIDYwO1xuICAgIHJldHVybiBob3VycyArICdoICcgKyBtaW5zICsgJ20nO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gbGVuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xucml2ZXRzLmZvcm1hdHRlcnMuZ3QgPSAodmFsdWUsIGxlbikgPT4ge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBsZW47XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBsZW5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5yaXZldHMuZm9ybWF0dGVycy5sdCA9ICh2YWx1ZSwgbGVuKSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA8IGxlbjtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIGxlblxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbnJpdmV0cy5mb3JtYXR0ZXJzLmVxID0gKHZhbHVlLCBsZW4pID0+IHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gbGVuO1xufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9jb21tb24uanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/common.js\n");
+eval("/**\r\n *\r\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n/**\r\n * Generic formatter to prepend\r\n * @param value\r\n * @param prepend\r\n * @returns {*}\r\n */\nrivets.formatters.prepend = function (value, prepend) {\n return prepend + value;\n};\n\n/**\r\n * Format minutes into HHh MMm\r\n * @param value\r\n * @returns {string}\r\n */\nrivets.formatters.time_hm = function (value) {\n var hours = Math.floor(value / 60);\n var mins = value % 60;\n return hours + 'h ' + mins + 'm';\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.gt = function (value, len) {\n return value.length > len;\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.lt = function (value, len) {\n return value.length < len;\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.eq = function (value, len) {\n return value.length > len;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzPzVmZDUiXSwibmFtZXMiOlsicml2ZXRzIiwicmVxdWlyZSIsImZvcm1hdHRlcnMiLCJwcmVwZW5kIiwidmFsdWUiLCJ0aW1lX2htIiwiaG91cnMiLCJNYXRoIiwiZmxvb3IiLCJtaW5zIiwiZ3QiLCJsZW4iLCJsZW5ndGgiLCJsdCIsImVxIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQU1BLFNBQVMsbUJBQUFDLENBQVEsc0NBQVIsQ0FBZjs7QUFFQTs7Ozs7O0FBTUFELE9BQU9FLFVBQVAsQ0FBa0JDLE9BQWxCLEdBQTRCLFVBQVVDLEtBQVYsRUFBaUJELE9BQWpCLEVBQTBCO0FBQ2xELFNBQU9BLFVBQVVDLEtBQWpCO0FBQ0gsQ0FGRDs7QUFJQTs7Ozs7QUFLQUosT0FBT0UsVUFBUCxDQUFrQkcsT0FBbEIsR0FBNEIsVUFBU0QsS0FBVCxFQUFnQjtBQUN4QyxNQUFNRSxRQUFRQyxLQUFLQyxLQUFMLENBQVdKLFFBQVEsRUFBbkIsQ0FBZDtBQUNBLE1BQU1LLE9BQU9MLFFBQVEsRUFBckI7QUFDQSxTQUFPRSxRQUFRLElBQVIsR0FBZUcsSUFBZixHQUFzQixHQUE3QjtBQUNILENBSkQ7O0FBTUE7Ozs7OztBQU1BVCxPQUFPRSxVQUFQLENBQWtCUSxFQUFsQixHQUF1QixVQUFDTixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCVyxFQUFsQixHQUF1QixVQUFDVCxLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCWSxFQUFsQixHQUF1QixVQUFDVixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqXHJcbiAqL1xyXG5cclxuY29uc3Qgcml2ZXRzID0gcmVxdWlyZSgncml2ZXRzJyk7XHJcblxyXG4vKipcclxuICogR2VuZXJpYyBmb3JtYXR0ZXIgdG8gcHJlcGVuZFxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHBhcmFtIHByZXBlbmRcclxuICogQHJldHVybnMgeyp9XHJcbiAqL1xyXG5yaXZldHMuZm9ybWF0dGVycy5wcmVwZW5kID0gZnVuY3Rpb24gKHZhbHVlLCBwcmVwZW5kKSB7XHJcbiAgICByZXR1cm4gcHJlcGVuZCArIHZhbHVlXHJcbn07XHJcblxyXG4vKipcclxuICogRm9ybWF0IG1pbnV0ZXMgaW50byBISGggTU1tXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gKi9cclxucml2ZXRzLmZvcm1hdHRlcnMudGltZV9obSA9IGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodmFsdWUgLyA2MCk7XHJcbiAgICBjb25zdCBtaW5zID0gdmFsdWUgJSA2MDtcclxuICAgIHJldHVybiBob3VycyArICdoICcgKyBtaW5zICsgJ20nO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKiBAcGFyYW0gbGVuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxucml2ZXRzLmZvcm1hdHRlcnMuZ3QgPSAodmFsdWUsIGxlbikgPT4ge1xyXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxlbjtcclxufTtcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHBhcmFtIGxlblxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbnJpdmV0cy5mb3JtYXR0ZXJzLmx0ID0gKHZhbHVlLCBsZW4pID0+IHtcclxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPCBsZW47XHJcbn07XHJcblxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHZhbHVlXHJcbiAqIEBwYXJhbSBsZW5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG5yaXZldHMuZm9ybWF0dGVycy5lcSA9ICh2YWx1ZSwgbGVuKSA9PiB7XHJcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gbGVuO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/common.js\n");
/***/ }),
/***/ "./resources/js/frontend/app.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("\n__webpack_require__(\"./resources/js/bootstrap.js\");\n\n// Import the mapping function\nwindow.phpvms.map = __webpack_require__(\"./resources/js/maps/index.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZnJvbnRlbmQvYXBwLmpzPzYwZTgiXSwibmFtZXMiOlsicmVxdWlyZSIsIndpbmRvdyIsInBocHZtcyIsIm1hcCJdLCJtYXBwaW5ncyI6IjtBQUNBLG1CQUFBQSxDQUFRLDZCQUFSOztBQUVBO0FBQ0FDLE9BQU9DLE1BQVAsQ0FBY0MsR0FBZCxHQUFvQixtQkFBQUgsQ0FBUSw4QkFBUixDQUFwQiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9mcm9udGVuZC9hcHAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbnJlcXVpcmUoJy4vLi4vYm9vdHN0cmFwJyk7XG5cbi8vIEltcG9ydCB0aGUgbWFwcGluZyBmdW5jdGlvblxud2luZG93LnBocHZtcy5tYXAgPSByZXF1aXJlKCcuLi9tYXBzL2luZGV4Jyk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvZnJvbnRlbmQvYXBwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/frontend/app.js\n");
+eval("\n__webpack_require__(\"./resources/js/bootstrap.js\");\n\n// Import the mapping function\nwindow.phpvms.map = __webpack_require__(\"./resources/js/maps/index.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvZnJvbnRlbmQvYXBwLmpzPzYwZTgiXSwibmFtZXMiOlsicmVxdWlyZSIsIndpbmRvdyIsInBocHZtcyIsIm1hcCJdLCJtYXBwaW5ncyI6IjtBQUNBLG1CQUFBQSxDQUFRLDZCQUFSOztBQUVBO0FBQ0FDLE9BQU9DLE1BQVAsQ0FBY0MsR0FBZCxHQUFvQixtQkFBQUgsQ0FBUSw4QkFBUixDQUFwQiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9mcm9udGVuZC9hcHAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxucmVxdWlyZSgnLi8uLi9ib290c3RyYXAnKTtcclxuXHJcbi8vIEltcG9ydCB0aGUgbWFwcGluZyBmdW5jdGlvblxyXG53aW5kb3cucGhwdm1zLm1hcCA9IHJlcXVpcmUoJy4uL21hcHMvaW5kZXgnKTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Zyb250ZW5kL2FwcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/frontend/app.js\n");
/***/ }),
@@ -360,7 +360,7 @@ eval("\n__webpack_require__(\"./resources/js/bootstrap.js\");\n\n// Import the m
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\n * Render a map with the airspace, etc around a given set of coords\n * e.g, the airport map\n * @param opts\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true,\n marker_popup: '',\n\n // Passed from the config/maps.php file\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup);\n }\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFya2VyX3BvcHVwIiwibWV0YXJfd21zIiwidXJsIiwicGFyYW1zIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iLCJiaW5kUG9wdXAiLCJhZGRXTVNMYXllciJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTtBQUN2QkEsU0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ25CQyxpQkFBYSxLQURNO0FBRW5CQyxrQkFBYyxFQUZLO0FBR25CQyxTQUFLLENBSGM7QUFJbkJDLFNBQUssQ0FKYztBQUtuQkMsVUFBTSxFQUxhO0FBTW5CQyxZQUFRLEVBTlc7QUFPbkJDLGdCQUFZLElBUE87QUFRbkJDLGtCQUFjLEVBUks7O0FBVW5CO0FBQ0FDLGVBQVc7QUFDUEMsV0FBSyxFQURFO0FBRVBDLGNBQVE7QUFGRDtBQVhRLEdBQWQsRUFlSmIsSUFmSSxDQUFQOztBQWlCQSxNQUFJYyxNQUFNLGtFQUFBQyxDQUFjZixJQUFkLENBQVY7QUFDQSxNQUFNZ0IsU0FBUyxDQUFDaEIsS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQmhCLEtBQUtPLElBQXpCO0FBQ0EsTUFBSVAsS0FBS1MsVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QlgsWUFBUXNCLE1BQVIsQ0FBZUosTUFBZixFQUF1QkssS0FBdkIsQ0FBNkJQLEdBQTdCLEVBQWtDUSxTQUFsQyxDQUE0Q3RCLEtBQUtVLFlBQWpEO0FBQ0Q7O0FBRUQsTUFBR1YsS0FBS1csU0FBTCxDQUFlQyxHQUFmLEtBQXVCLEVBQTFCLEVBQThCO0FBQzFCVyxJQUFBLHFFQUFBQSxDQUFZVCxHQUFaLEVBQWlCZCxLQUFLVyxTQUF0QjtBQUNIOztBQUVELFNBQU9HLEdBQVA7QUFDRCxDQWhDRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IGFkZFdNU0xheWVyIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBSZW5kZXIgYSBtYXAgd2l0aCB0aGUgYWlyc3BhY2UsIGV0YyBhcm91bmQgYSBnaXZlbiBzZXQgb2YgY29vcmRzXG4gKiBlLmcsIHRoZSBhaXJwb3J0IG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcbiAgICBvdmVybGF5X2VsZW06ICcnLFxuICAgIGxhdDogMCxcbiAgICBsb246IDAsXG4gICAgem9vbTogMTIsXG4gICAgbGF5ZXJzOiBbXSxcbiAgICBzZXRfbWFya2VyOiB0cnVlLFxuICAgIG1hcmtlcl9wb3B1cDogJycsXG5cbiAgICAvLyBQYXNzZWQgZnJvbSB0aGUgY29uZmlnL21hcHMucGhwIGZpbGVcbiAgICBtZXRhcl93bXM6IHtcbiAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgcGFyYW1zOiB7fVxuICAgIH0sXG4gIH0sIG9wdHMpO1xuXG4gIGxldCBtYXAgPSBkcmF3X2Jhc2VfbWFwKG9wdHMpO1xuICBjb25zdCBjb29yZHMgPSBbb3B0cy5sYXQsIG9wdHMubG9uXTtcbiAgY29uc29sZS5sb2coJ0FwcGx5aW5nIGNvb3JkcycsIGNvb3Jkcyk7XG5cbiAgbWFwLnNldFZpZXcoY29vcmRzLCBvcHRzLnpvb20pO1xuICBpZiAob3B0cy5zZXRfbWFya2VyID09PSB0cnVlKSB7XG4gICAgbGVhZmxldC5tYXJrZXIoY29vcmRzKS5hZGRUbyhtYXApLmJpbmRQb3B1cChvcHRzLm1hcmtlcl9wb3B1cCk7XG4gIH1cblxuICBpZihvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XG4gICAgICBhZGRXTVNMYXllcihtYXAsIG9wdHMubWV0YXJfd21zKTtcbiAgfVxuXG4gIHJldHVybiBtYXA7XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvYWlyc3BhY2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\r\n * Render a map with the airspace, etc around a given set of coords\r\n * e.g, the airport map\r\n * @param opts\r\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true,\n marker_popup: '',\n\n // Passed from the config/maps.php file\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup);\n }\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFya2VyX3BvcHVwIiwibWV0YXJfd21zIiwidXJsIiwicGFyYW1zIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iLCJiaW5kUG9wdXAiLCJhZGRXTVNMYXllciJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTtBQUN2QkEsU0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ25CQyxpQkFBYSxLQURNO0FBRW5CQyxrQkFBYyxFQUZLO0FBR25CQyxTQUFLLENBSGM7QUFJbkJDLFNBQUssQ0FKYztBQUtuQkMsVUFBTSxFQUxhO0FBTW5CQyxZQUFRLEVBTlc7QUFPbkJDLGdCQUFZLElBUE87QUFRbkJDLGtCQUFjLEVBUks7O0FBVW5CO0FBQ0FDLGVBQVc7QUFDUEMsV0FBSyxFQURFO0FBRVBDLGNBQVE7QUFGRDtBQVhRLEdBQWQsRUFlSmIsSUFmSSxDQUFQOztBQWlCQSxNQUFJYyxNQUFNLGtFQUFBQyxDQUFjZixJQUFkLENBQVY7QUFDQSxNQUFNZ0IsU0FBUyxDQUFDaEIsS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQmhCLEtBQUtPLElBQXpCO0FBQ0EsTUFBSVAsS0FBS1MsVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QlgsWUFBUXNCLE1BQVIsQ0FBZUosTUFBZixFQUF1QkssS0FBdkIsQ0FBNkJQLEdBQTdCLEVBQWtDUSxTQUFsQyxDQUE0Q3RCLEtBQUtVLFlBQWpEO0FBQ0Q7O0FBRUQsTUFBR1YsS0FBS1csU0FBTCxDQUFlQyxHQUFmLEtBQXVCLEVBQTFCLEVBQThCO0FBQzFCVyxJQUFBLHFFQUFBQSxDQUFZVCxHQUFaLEVBQWlCZCxLQUFLVyxTQUF0QjtBQUNIOztBQUVELFNBQU9HLEdBQVA7QUFDRCxDQWhDRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5cclxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcclxuaW1wb3J0IHsgYWRkV01TTGF5ZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5cclxuLyoqXHJcbiAqIFJlbmRlciBhIG1hcCB3aXRoIHRoZSBhaXJzcGFjZSwgZXRjIGFyb3VuZCBhIGdpdmVuIHNldCBvZiBjb29yZHNcclxuICogZS5nLCB0aGUgYWlycG9ydCBtYXBcclxuICogQHBhcmFtIG9wdHNcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XHJcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgcmVuZGVyX2VsZW06ICdtYXAnLFxyXG4gICAgb3ZlcmxheV9lbGVtOiAnJyxcclxuICAgIGxhdDogMCxcclxuICAgIGxvbjogMCxcclxuICAgIHpvb206IDEyLFxyXG4gICAgbGF5ZXJzOiBbXSxcclxuICAgIHNldF9tYXJrZXI6IHRydWUsXHJcbiAgICBtYXJrZXJfcG9wdXA6ICcnLFxyXG5cclxuICAgIC8vIFBhc3NlZCBmcm9tIHRoZSBjb25maWcvbWFwcy5waHAgZmlsZVxyXG4gICAgbWV0YXJfd21zOiB7XHJcbiAgICAgICAgdXJsOiAnJyxcclxuICAgICAgICBwYXJhbXM6IHt9XHJcbiAgICB9LFxyXG4gIH0sIG9wdHMpO1xyXG5cclxuICBsZXQgbWFwID0gZHJhd19iYXNlX21hcChvcHRzKTtcclxuICBjb25zdCBjb29yZHMgPSBbb3B0cy5sYXQsIG9wdHMubG9uXTtcclxuICBjb25zb2xlLmxvZygnQXBwbHlpbmcgY29vcmRzJywgY29vcmRzKTtcclxuXHJcbiAgbWFwLnNldFZpZXcoY29vcmRzLCBvcHRzLnpvb20pO1xyXG4gIGlmIChvcHRzLnNldF9tYXJrZXIgPT09IHRydWUpIHtcclxuICAgIGxlYWZsZXQubWFya2VyKGNvb3JkcykuYWRkVG8obWFwKS5iaW5kUG9wdXAob3B0cy5tYXJrZXJfcG9wdXApO1xyXG4gIH1cclxuXHJcbiAgaWYob3B0cy5tZXRhcl93bXMudXJsICE9PSAnJykge1xyXG4gICAgICBhZGRXTVNMYXllcihtYXAsIG9wdHMubWV0YXJfd21zKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBtYXA7XHJcbn07XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n");
/***/ }),
@@ -368,7 +368,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("//\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/leaflet-providers/leaflet-providers.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false,\n providers: ['Esri.WorldStreetMap'],\n tile_layers: []\n }, opts);\n\n /*\n let feature_groups = [];\n const openaip_airspace_labels = new leaflet.TileLayer.WMS(\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\n maxZoom: 14,\n minZoom: 12,\n layers: 'openaip_approved_airspaces_labels',\n tileSize: 1024,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n openaip_airspace_labels.addTo(map);*/\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\n maxZoom: 14,\n minZoom: 4,\n tms: true,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n feature_groups.push(openaip_cached_basemap);\n */\n\n var map = leaflet.map('map', {\n //layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n for (var i in opts.providers) {\n leaflet.tileLayer.provider(opts.providers[i]).addTo(map);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwicHJvdmlkZXJzIiwidGlsZV9sYXllcnMiLCJtYXAiLCJzY3JvbGxXaGVlbFpvb20iLCJpIiwidGlsZUxheWVyIiwicHJvdmlkZXIiLCJhZGRUbyJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjtBQUNBLG1CQUFBQSxDQUFRLHVEQUFSOztBQUVBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTs7QUFFckJBLFdBQU9DLE9BQU9DLE1BQVAsQ0FBYztBQUNqQkMscUJBQWEsS0FESTtBQUVqQkMsZ0JBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlM7QUFHakJDLGNBQU0sQ0FIVztBQUlqQkMsaUJBQVMsRUFKUTtBQUtqQkMsZ0JBQVEsRUFMUztBQU1qQkMsb0JBQVksS0FOSztBQU9qQkMsbUJBQVcsQ0FDUCxxQkFETyxDQVBNO0FBVWpCQyxxQkFBYTtBQVZJLEtBQWQsRUFXSlYsSUFYSSxDQUFQOztBQWFBOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7Ozs7Ozs7Ozs7OztBQWFBLFFBQUlXLE1BQU1iLFFBQVFhLEdBQVIsQ0FBWSxLQUFaLEVBQW1CO0FBQ3pCO0FBQ0FQLGdCQUFRSixLQUFLSSxNQUZZO0FBR3pCQyxjQUFNTCxLQUFLSyxJQUhjO0FBSXpCTyx5QkFBaUI7QUFKUSxLQUFuQixDQUFWOztBQU9BLFNBQUksSUFBTUMsQ0FBVixJQUFlYixLQUFLUyxTQUFwQixFQUErQjtBQUMzQlgsZ0JBQVFnQixTQUFSLENBQWtCQyxRQUFsQixDQUEyQmYsS0FBS1MsU0FBTCxDQUFlSSxDQUFmLENBQTNCLEVBQThDRyxLQUE5QyxDQUFvREwsR0FBcEQ7QUFDSDs7QUFFRCxXQUFPQSxHQUFQO0FBQ0gsQ0F4REQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG5cbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5yZXF1aXJlKCdsZWFmbGV0LXByb3ZpZGVycycpO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgICAgIGNlbnRlcjogWzI5Ljk4MTM5LCAtOTUuMzMzNzRdLFxuICAgICAgICB6b29tOiA1LFxuICAgICAgICBtYXhab29tOiAxMCxcbiAgICAgICAgbGF5ZXJzOiBbXSxcbiAgICAgICAgc2V0X21hcmtlcjogZmFsc2UsXG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgJ0VzcmkuV29ybGRTdHJlZXRNYXAnLFxuICAgICAgICBdLFxuICAgICAgICB0aWxlX2xheWVyczogW10sXG4gICAgfSwgb3B0cyk7XG5cbiAgICAvKlxuICAgIGxldCBmZWF0dXJlX2dyb3VwcyA9IFtdO1xuICAgIGNvbnN0IG9wZW5haXBfYWlyc3BhY2VfbGFiZWxzID0gbmV3IGxlYWZsZXQuVGlsZUxheWVyLldNUyhcbiAgICAgICAgXCJodHRwOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3dtc1wiLCB7XG4gICAgICAgICAgICBtYXhab29tOiAxNCxcbiAgICAgICAgICAgIG1pblpvb206IDEyLFxuICAgICAgICAgICAgbGF5ZXJzOiAnb3BlbmFpcF9hcHByb3ZlZF9haXJzcGFjZXNfbGFiZWxzJyxcbiAgICAgICAgICAgIHRpbGVTaXplOiAxMDI0LFxuICAgICAgICAgICAgZGV0ZWN0UmV0aW5hOiB0cnVlLFxuICAgICAgICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgIG9wZW5haXBfYWlyc3BhY2VfbGFiZWxzLmFkZFRvKG1hcCk7Ki9cblxuICAgIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xuICAgICAgICBtYXhab29tOiAxNCxcbiAgICAgICAgbWluWm9vbTogNCxcbiAgICAgICAgdG1zOiB0cnVlLFxuICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXG4gICAgICAgIHN1YmRvbWFpbnM6ICcxMicsXG4gICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXG4gICAgfSk7XG5cbiAgICBmZWF0dXJlX2dyb3Vwcy5wdXNoKG9wZW5haXBfY2FjaGVkX2Jhc2VtYXApO1xuICAgICovXG5cbiAgICBsZXQgbWFwID0gbGVhZmxldC5tYXAoJ21hcCcsIHtcbiAgICAgICAgLy9sYXllcnM6IFtvcGVuYWlwX2Jhc2VtYXBfcGh5c19vc21dLFxuICAgICAgICBjZW50ZXI6IG9wdHMuY2VudGVyLFxuICAgICAgICB6b29tOiBvcHRzLnpvb20sXG4gICAgICAgIHNjcm9sbFdoZWVsWm9vbTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBmb3IoY29uc3QgaSBpbiBvcHRzLnByb3ZpZGVycykge1xuICAgICAgICBsZWFmbGV0LnRpbGVMYXllci5wcm92aWRlcihvcHRzLnByb3ZpZGVyc1tpXSkuYWRkVG8obWFwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n");
+eval("//\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/leaflet-providers/leaflet-providers.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false,\n providers: ['Esri.WorldStreetMap'],\n tile_layers: []\n }, opts);\n\n /*\r\n let feature_groups = [];\r\n const openaip_airspace_labels = new leaflet.TileLayer.WMS(\r\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\r\n maxZoom: 14,\r\n minZoom: 12,\r\n layers: 'openaip_approved_airspaces_labels',\r\n tileSize: 1024,\r\n detectRetina: true,\r\n subdomains: '12',\r\n format: 'image/png',\r\n transparent: true\r\n });\r\n openaip_airspace_labels.addTo(map);*/\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\r\n maxZoom: 14,\r\n minZoom: 4,\r\n tms: true,\r\n detectRetina: true,\r\n subdomains: '12',\r\n format: 'image/png',\r\n transparent: true\r\n });\r\n feature_groups.push(openaip_cached_basemap);\r\n */\n\n var map = leaflet.map('map', {\n //layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n for (var i in opts.providers) {\n leaflet.tileLayer.provider(opts.providers[i]).addTo(map);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwicHJvdmlkZXJzIiwidGlsZV9sYXllcnMiLCJtYXAiLCJzY3JvbGxXaGVlbFpvb20iLCJpIiwidGlsZUxheWVyIiwicHJvdmlkZXIiLCJhZGRUbyJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjtBQUNBLG1CQUFBQSxDQUFRLHVEQUFSOztBQUVBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTs7QUFFckJBLFdBQU9DLE9BQU9DLE1BQVAsQ0FBYztBQUNqQkMscUJBQWEsS0FESTtBQUVqQkMsZ0JBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlM7QUFHakJDLGNBQU0sQ0FIVztBQUlqQkMsaUJBQVMsRUFKUTtBQUtqQkMsZ0JBQVEsRUFMUztBQU1qQkMsb0JBQVksS0FOSztBQU9qQkMsbUJBQVcsQ0FDUCxxQkFETyxDQVBNO0FBVWpCQyxxQkFBYTtBQVZJLEtBQWQsRUFXSlYsSUFYSSxDQUFQOztBQWFBOzs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7Ozs7Ozs7Ozs7OztBQWFBLFFBQUlXLE1BQU1iLFFBQVFhLEdBQVIsQ0FBWSxLQUFaLEVBQW1CO0FBQ3pCO0FBQ0FQLGdCQUFRSixLQUFLSSxNQUZZO0FBR3pCQyxjQUFNTCxLQUFLSyxJQUhjO0FBSXpCTyx5QkFBaUI7QUFKUSxLQUFuQixDQUFWOztBQU9BLFNBQUksSUFBTUMsQ0FBVixJQUFlYixLQUFLUyxTQUFwQixFQUErQjtBQUMzQlgsZ0JBQVFnQixTQUFSLENBQWtCQyxRQUFsQixDQUEyQmYsS0FBS1MsU0FBTCxDQUFlSSxDQUFmLENBQTNCLEVBQThDRyxLQUE5QyxDQUFvREwsR0FBcEQ7QUFDSDs7QUFFRCxXQUFPQSxHQUFQO0FBQ0gsQ0F4REQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXHJcblxyXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5yZXF1aXJlKCdsZWFmbGV0LXByb3ZpZGVycycpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcclxuXHJcbiAgICBvcHRzID0gT2JqZWN0LmFzc2lnbih7XHJcbiAgICAgICAgcmVuZGVyX2VsZW06ICdtYXAnLFxyXG4gICAgICAgIGNlbnRlcjogWzI5Ljk4MTM5LCAtOTUuMzMzNzRdLFxyXG4gICAgICAgIHpvb206IDUsXHJcbiAgICAgICAgbWF4Wm9vbTogMTAsXHJcbiAgICAgICAgbGF5ZXJzOiBbXSxcclxuICAgICAgICBzZXRfbWFya2VyOiBmYWxzZSxcclxuICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgJ0VzcmkuV29ybGRTdHJlZXRNYXAnLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgdGlsZV9sYXllcnM6IFtdLFxyXG4gICAgfSwgb3B0cyk7XHJcblxyXG4gICAgLypcclxuICAgIGxldCBmZWF0dXJlX2dyb3VwcyA9IFtdO1xyXG4gICAgY29uc3Qgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMgPSBuZXcgbGVhZmxldC5UaWxlTGF5ZXIuV01TKFxyXG4gICAgICAgIFwiaHR0cDovL3tzfS50aWxlLm1hcHMub3BlbmFpcC5uZXQvZ2Vvd2ViY2FjaGUvc2VydmljZS93bXNcIiwge1xyXG4gICAgICAgICAgICBtYXhab29tOiAxNCxcclxuICAgICAgICAgICAgbWluWm9vbTogMTIsXHJcbiAgICAgICAgICAgIGxheWVyczogJ29wZW5haXBfYXBwcm92ZWRfYWlyc3BhY2VzX2xhYmVscycsXHJcbiAgICAgICAgICAgIHRpbGVTaXplOiAxMDI0LFxyXG4gICAgICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXHJcbiAgICAgICAgICAgIHN1YmRvbWFpbnM6ICcxMicsXHJcbiAgICAgICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMuYWRkVG8obWFwKTsqL1xyXG5cclxuICAgIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xyXG4gICAgICAgIG1heFpvb206IDE0LFxyXG4gICAgICAgIG1pblpvb206IDQsXHJcbiAgICAgICAgdG1zOiB0cnVlLFxyXG4gICAgICAgIGRldGVjdFJldGluYTogdHJ1ZSxcclxuICAgICAgICBzdWJkb21haW5zOiAnMTInLFxyXG4gICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcclxuICAgIH0pO1xyXG5cclxuICAgIGZlYXR1cmVfZ3JvdXBzLnB1c2gob3BlbmFpcF9jYWNoZWRfYmFzZW1hcCk7XHJcbiAgICAqL1xyXG5cclxuICAgIGxldCBtYXAgPSBsZWFmbGV0Lm1hcCgnbWFwJywge1xyXG4gICAgICAgIC8vbGF5ZXJzOiBbb3BlbmFpcF9iYXNlbWFwX3BoeXNfb3NtXSxcclxuICAgICAgICBjZW50ZXI6IG9wdHMuY2VudGVyLFxyXG4gICAgICAgIHpvb206IG9wdHMuem9vbSxcclxuICAgICAgICBzY3JvbGxXaGVlbFpvb206IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZm9yKGNvbnN0IGkgaW4gb3B0cy5wcm92aWRlcnMpIHtcclxuICAgICAgICBsZWFmbGV0LnRpbGVMYXllci5wcm92aWRlcihvcHRzLnByb3ZpZGVyc1tpXSkuYWRkVG8obWFwKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWFwO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n");
/***/ }),
@@ -376,7 +376,7 @@ eval("//\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaf
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return PLAN_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ACTUAL_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CIRCLE_COLOR; });\nvar PLAN_ROUTE_COLOR = '#043758',\n ACTUAL_ROUTE_COLOR = '#067ec1',\n CIRCLE_COLOR = '#056093';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanM/NzdmNyJdLCJuYW1lcyI6WyJQTEFOX1JPVVRFX0NPTE9SIiwiQUNUVUFMX1JPVVRFX0NPTE9SIiwiQ0lSQ0xFX0NPTE9SIl0sIm1hcHBpbmdzIjoiOzs7QUFBTyxJQUNIQSxtQkFBbUIsU0FEaEI7QUFBQSxJQUVIQyxxQkFBcUIsU0FGbEI7QUFBQSxJQUdIQyxlQUFlLFNBSFoiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbGV0XG4gICAgUExBTl9ST1VURV9DT0xPUiA9ICcjMDQzNzU4JyxcbiAgICBBQ1RVQUxfUk9VVEVfQ09MT1IgPSAnIzA2N2VjMScsXG4gICAgQ0lSQ0xFX0NPTE9SID0gJyMwNTYwOTMnO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvY29uZmlnLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/config.js\n");
+eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return PLAN_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ACTUAL_ROUTE_COLOR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return CIRCLE_COLOR; });\nvar PLAN_ROUTE_COLOR = '#043758',\n ACTUAL_ROUTE_COLOR = '#067ec1',\n CIRCLE_COLOR = '#056093';//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanM/NzdmNyJdLCJuYW1lcyI6WyJQTEFOX1JPVVRFX0NPTE9SIiwiQUNUVUFMX1JPVVRFX0NPTE9SIiwiQ0lSQ0xFX0NPTE9SIl0sIm1hcHBpbmdzIjoiOzs7QUFBTyxJQUNIQSxtQkFBbUIsU0FEaEI7QUFBQSxJQUVIQyxxQkFBcUIsU0FGbEI7QUFBQSxJQUdIQyxlQUFlLFNBSFoiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbGV0XHJcbiAgICBQTEFOX1JPVVRFX0NPTE9SID0gJyMwNDM3NTgnLFxyXG4gICAgQUNUVUFMX1JPVVRFX0NPTE9SID0gJyMwNjdlYzEnLFxyXG4gICAgQ0lSQ0xFX0NPTE9SID0gJyMwNTYwOTMnO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9jb25maWcuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/config.js\n");
/***/ }),
@@ -384,7 +384,7 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__,
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;\n/* unused harmony export showFeaturePopup */\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/**\n * Add a WMS layer to a map. opts must be:\n * {\n * url: '',\n * params: {}\n * }\n * @param map\n * @param opts\n */\nfunction addWMSLayer(map, opts) {\n\n if (opts.url === '') {\n return;\n }\n\n opts.params = Object.assign({\n format: 'image/png',\n transparent: true,\n maxZoom: 14,\n minZoom: 4\n }, opts.params);\n\n var mlayer = leaflet.tileLayer.wms(opts.url, opts.params);\n\n mlayer.addTo(map);\n\n return mlayer;\n}\n\n/**\n * Show a popup\n * @param feature\n * @param layer\n */\nfunction showFeaturePopup(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzPzNjZDUiXSwibmFtZXMiOlsibGVhZmxldCIsInJlcXVpcmUiLCJhZGRXTVNMYXllciIsIm1hcCIsIm9wdHMiLCJ1cmwiLCJwYXJhbXMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXQiLCJ0cmFuc3BhcmVudCIsIm1heFpvb20iLCJtaW5ab29tIiwibWxheWVyIiwidGlsZUxheWVyIiwid21zIiwiYWRkVG8iLCJzaG93RmVhdHVyZVBvcHVwIiwiZmVhdHVyZSIsImxheWVyIiwicG9wdXBfaHRtbCIsInByb3BlcnRpZXMiLCJwb3B1cCIsImJpbmRQb3B1cCJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7Ozs7Ozs7O0FBU08sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDOztBQUVuQyxRQUFHQSxLQUFLQyxHQUFMLEtBQWEsRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFREQsU0FBS0UsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQWM7QUFDeEJDLGdCQUFRLFdBRGdCO0FBRXhCQyxxQkFBYSxJQUZXO0FBR3hCQyxpQkFBUyxFQUhlO0FBSXhCQyxpQkFBUztBQUplLEtBQWQsRUFLWFIsS0FBS0UsTUFMTSxDQUFkOztBQU9BLFFBQU1PLFNBQVNiLFFBQVFjLFNBQVIsQ0FBa0JDLEdBQWxCLENBQ1hYLEtBQUtDLEdBRE0sRUFDREQsS0FBS0UsTUFESixDQUFmOztBQUlBTyxXQUFPRyxLQUFQLENBQWFiLEdBQWI7O0FBRUEsV0FBT1UsTUFBUDtBQUNIOztBQUVEOzs7OztBQUtPLFNBQVNJLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDN0MsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5cbi8qKlxuICogQWRkIGEgV01TIGxheWVyIHRvIGEgbWFwLiBvcHRzIG11c3QgYmU6XG4gKiB7XG4gKiAgdXJsOiAnJyxcbiAqICBwYXJhbXM6IHt9XG4gKiAgfVxuICogQHBhcmFtIG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdNU0xheWVyKG1hcCwgb3B0cykge1xuXG4gICAgaWYob3B0cy51cmwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvcHRzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgIG1pblpvb206IDQsXG4gICAgfSwgb3B0cy5wYXJhbXMpO1xuXG4gICAgY29uc3QgbWxheWVyID0gbGVhZmxldC50aWxlTGF5ZXIud21zKFxuICAgICAgICBvcHRzLnVybCwgb3B0cy5wYXJhbXNcbiAgICApO1xuXG4gICAgbWxheWVyLmFkZFRvKG1hcCk7XG5cbiAgICByZXR1cm4gbWxheWVyO1xufVxuXG4vKipcbiAqIFNob3cgYSBwb3B1cFxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0ZlYXR1cmVQb3B1cChmZWF0dXJlLCBsYXllcikge1xuICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgICB9XG5cbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/helpers.js\n");
+eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;\n/* unused harmony export showFeaturePopup */\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/**\r\n * Add a WMS layer to a map. opts must be:\r\n * {\r\n * url: '',\r\n * params: {}\r\n * }\r\n * @param map\r\n * @param opts\r\n */\nfunction addWMSLayer(map, opts) {\n\n if (opts.url === '') {\n return;\n }\n\n opts.params = Object.assign({\n format: 'image/png',\n transparent: true,\n maxZoom: 14,\n minZoom: 4\n }, opts.params);\n\n var mlayer = leaflet.tileLayer.wms(opts.url, opts.params);\n\n mlayer.addTo(map);\n\n return mlayer;\n}\n\n/**\r\n * Show a popup\r\n * @param feature\r\n * @param layer\r\n */\nfunction showFeaturePopup(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzPzNjZDUiXSwibmFtZXMiOlsibGVhZmxldCIsInJlcXVpcmUiLCJhZGRXTVNMYXllciIsIm1hcCIsIm9wdHMiLCJ1cmwiLCJwYXJhbXMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXQiLCJ0cmFuc3BhcmVudCIsIm1heFpvb20iLCJtaW5ab29tIiwibWxheWVyIiwidGlsZUxheWVyIiwid21zIiwiYWRkVG8iLCJzaG93RmVhdHVyZVBvcHVwIiwiZmVhdHVyZSIsImxheWVyIiwicG9wdXBfaHRtbCIsInByb3BlcnRpZXMiLCJwb3B1cCIsImJpbmRQb3B1cCJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7Ozs7Ozs7O0FBU08sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDOztBQUVuQyxRQUFHQSxLQUFLQyxHQUFMLEtBQWEsRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFREQsU0FBS0UsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQWM7QUFDeEJDLGdCQUFRLFdBRGdCO0FBRXhCQyxxQkFBYSxJQUZXO0FBR3hCQyxpQkFBUyxFQUhlO0FBSXhCQyxpQkFBUztBQUplLEtBQWQsRUFLWFIsS0FBS0UsTUFMTSxDQUFkOztBQU9BLFFBQU1PLFNBQVNiLFFBQVFjLFNBQVIsQ0FBa0JDLEdBQWxCLENBQ1hYLEtBQUtDLEdBRE0sRUFDREQsS0FBS0UsTUFESixDQUFmOztBQUlBTyxXQUFPRyxLQUFQLENBQWFiLEdBQWI7O0FBRUEsV0FBT1UsTUFBUDtBQUNIOztBQUVEOzs7OztBQUtPLFNBQVNJLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDN0MsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcclxuXHJcbi8qKlxyXG4gKiBBZGQgYSBXTVMgbGF5ZXIgdG8gYSBtYXAuIG9wdHMgbXVzdCBiZTpcclxuICoge1xyXG4gKiAgdXJsOiAnJyxcclxuICogIHBhcmFtczoge31cclxuICogIH1cclxuICogQHBhcmFtIG1hcFxyXG4gKiBAcGFyYW0gb3B0c1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFdNU0xheWVyKG1hcCwgb3B0cykge1xyXG5cclxuICAgIGlmKG9wdHMudXJsID09PSAnJykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBvcHRzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsXHJcbiAgICAgICAgbWF4Wm9vbTogMTQsXHJcbiAgICAgICAgbWluWm9vbTogNCxcclxuICAgIH0sIG9wdHMucGFyYW1zKTtcclxuXHJcbiAgICBjb25zdCBtbGF5ZXIgPSBsZWFmbGV0LnRpbGVMYXllci53bXMoXHJcbiAgICAgICAgb3B0cy51cmwsIG9wdHMucGFyYW1zXHJcbiAgICApO1xyXG5cclxuICAgIG1sYXllci5hZGRUbyhtYXApO1xyXG5cclxuICAgIHJldHVybiBtbGF5ZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTaG93IGEgcG9wdXBcclxuICogQHBhcmFtIGZlYXR1cmVcclxuICogQHBhcmFtIGxheWVyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2hvd0ZlYXR1cmVQb3B1cChmZWF0dXJlLCBsYXllcikge1xyXG4gICAgbGV0IHBvcHVwX2h0bWwgPSAnJztcclxuICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwKSB7XHJcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcclxuICAgIH1cclxuXHJcbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcclxufVxyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/helpers.js\n");
/***/ }),
@@ -392,7 +392,7 @@ eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__airspace_map__ = __webpack_require__(\"./resources/js/maps/airspace_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__live_map__ = __webpack_require__(\"./resources/js/maps/live_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__route_map__ = __webpack_require__(\"./resources/js/maps/route_map.js\");\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_airspace_map\", function() { return __WEBPACK_IMPORTED_MODULE_0__airspace_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_live_map\", function() { return __WEBPACK_IMPORTED_MODULE_1__live_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_route_map\", function() { return __WEBPACK_IMPORTED_MODULE_2__route_map__[\"a\"]; });\n/**\n * All of the functionality required for maps\n */\n\nwindow.L = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\");\n__webpack_require__(\"./node_modules/leaflet-rotatedmarker/leaflet.rotatedMarker.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcz85MmYwIl0sIm5hbWVzIjpbIndpbmRvdyIsIkwiLCJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUFBOzs7O0FBSUFBLE9BQU9DLENBQVAsR0FBVyxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFYO0FBQ0EsbUJBQUFBLENBQVEscURBQVI7QUFDQSxtQkFBQUEsQ0FBUSwrREFBUjs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWxsIG9mIHRoZSBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGZvciBtYXBzXG4gKi9cblxud2luZG93LkwgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5yZXF1aXJlKCdMZWFmbGV0Lkdlb2Rlc2ljJyk7XG5yZXF1aXJlKCdsZWFmbGV0LXJvdGF0ZWRtYXJrZXInKTtcblxuaW1wb3J0IHJlbmRlcl9haXJzcGFjZV9tYXAgZnJvbSAnLi9haXJzcGFjZV9tYXAnXG5pbXBvcnQgcmVuZGVyX2xpdmVfbWFwIGZyb20gJy4vbGl2ZV9tYXAnXG5pbXBvcnQgcmVuZGVyX3JvdXRlX21hcCBmcm9tICcuL3JvdXRlX21hcCdcblxuZXhwb3J0IHtcbiAgcmVuZGVyX2FpcnNwYWNlX21hcCxcbiAgcmVuZGVyX2xpdmVfbWFwLFxuICByZW5kZXJfcm91dGVfbWFwLFxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/index.js\n");
+eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__airspace_map__ = __webpack_require__(\"./resources/js/maps/airspace_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__live_map__ = __webpack_require__(\"./resources/js/maps/live_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__route_map__ = __webpack_require__(\"./resources/js/maps/route_map.js\");\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_airspace_map\", function() { return __WEBPACK_IMPORTED_MODULE_0__airspace_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_live_map\", function() { return __WEBPACK_IMPORTED_MODULE_1__live_map__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"render_route_map\", function() { return __WEBPACK_IMPORTED_MODULE_2__route_map__[\"a\"]; });\n/**\r\n * All of the functionality required for maps\r\n */\n\nwindow.L = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n__webpack_require__(\"./node_modules/Leaflet.Geodesic/Leaflet.Geodesic.js\");\n__webpack_require__(\"./node_modules/leaflet-rotatedmarker/leaflet.rotatedMarker.js\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcz85MmYwIl0sIm5hbWVzIjpbIndpbmRvdyIsIkwiLCJyZXF1aXJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUFBOzs7O0FBSUFBLE9BQU9DLENBQVAsR0FBVyxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFYO0FBQ0EsbUJBQUFBLENBQVEscURBQVI7QUFDQSxtQkFBQUEsQ0FBUSwrREFBUjs7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9pbmRleC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBbGwgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgZm9yIG1hcHNcclxuICovXHJcblxyXG53aW5kb3cuTCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcclxucmVxdWlyZSgnTGVhZmxldC5HZW9kZXNpYycpO1xyXG5yZXF1aXJlKCdsZWFmbGV0LXJvdGF0ZWRtYXJrZXInKTtcclxuXHJcbmltcG9ydCByZW5kZXJfYWlyc3BhY2VfbWFwIGZyb20gJy4vYWlyc3BhY2VfbWFwJ1xyXG5pbXBvcnQgcmVuZGVyX2xpdmVfbWFwIGZyb20gJy4vbGl2ZV9tYXAnXHJcbmltcG9ydCByZW5kZXJfcm91dGVfbWFwIGZyb20gJy4vcm91dGVfbWFwJ1xyXG5cclxuZXhwb3J0IHtcclxuICByZW5kZXJfYWlyc3BhY2VfbWFwLFxyXG4gIHJlbmRlcl9saXZlX21hcCxcclxuICByZW5kZXJfcm91dGVfbWFwLFxyXG59XHJcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2luZGV4LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/index.js\n");
/***/ }),
@@ -400,7 +400,7 @@ eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true }
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n//\n\nvar geolib = __webpack_require__(\"./node_modules/geolib/dist/geolib.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n\n\n\n/**\n * Render the live map\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n center: [29.98139, -95.33374],\n zoom: 5,\n update_uri: '/api/acars',\n pirep_uri: '/api/pireps/{id}',\n pirep_link_uri: '/pireps/{id}',\n positions: null,\n render_elem: 'map',\n aircraft_icon: '/assets/img/acars/aircraft.png',\n units: 'nmi'\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n /**\n * Hold the markers\n * @type {{}}\n */\n var markers_list = {};\n\n var pannedToCenter = false;\n\n var layerFlights = null;\n var layerSelFlight = null;\n var layerSelFlightFeature = null;\n var layerSelFlightLayer = null;\n var layerSelArr = null;\n var layerSelDep = null;\n\n /**\n * Controller for two-way bindings\n * @type {{focusMarker: focusMarker}}\n */\n var mapController = {\n /**\n * Focus on a specific marker\n * @param e\n * @param model\n */\n focusMarker: function focusMarker(e, model) {\n if (!(model.pirep.id in markers_list)) {\n console.log('marker not found in list');\n return;\n }\n\n var marker = markers_list[model.pirep.id];\n onFlightClick(marker[0], marker[1]);\n }\n };\n\n var r_map_view = rivets.bind($('#map-info-box'), { pirep: {}, controller: mapController });\n var r_table_view = rivets.bind($('#live_flights'), { pireps: [], controller: mapController });\n\n /**\n * When a flight is clicked on, show the path, etc for that flight\n * @param feature\n * @param layer\n */\n var onFlightClick = function onFlightClick(feature, layer) {\n\n var pirep_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id);\n var geojson_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id) + \"/acars/geojson\";\n\n var pirep_info = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flight_route = $.ajax({\n url: geojson_uri,\n dataType: 'json',\n error: console.log\n });\n\n // Load up the PIREP info\n $.when(flight_route).done(function (rte) {\n if (layerSelFlight !== null) {\n map.removeLayer(layerSelFlight);\n //map.removeLayer(layerSelArr);\n //map.removeLayer(layerSelDep);\n }\n\n layerSelFlight = leaflet.geodesic([], {\n weight: 5,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n wrap: false\n }).addTo(map);\n\n layerSelFlight.geoJson(rte.line);\n layerSelFlightFeature = feature;\n layerSelFlightLayer = layer;\n\n /*const dptIcon = leaflet.divIcon({\n html: '' + rte.airports.d.icao + '
'\n });\n layerSelDep = leaflet.marker([rte.airports.d.lat, rte.airports.d.lon], {icon:dptIcon}).addTo(map);\n */\n\n // Center on it, but only do it once, in case the map is moved\n if (!pannedToCenter) {\n // find center\n var c = geolib.getCenter([{ latitude: rte.airports.a.lat, longitude: rte.airports.a.lon }, { latitude: rte.airports.d.lat, longitude: rte.airports.d.lon }]);\n\n //map.panTo({lat: c.latitude, lng: c.longitude});\n map.panTo({ lat: rte.position.lat, lng: rte.position.lon });\n pannedToCenter = true;\n }\n });\n\n //\n // When the PIREP info is done loading, show the bottom bar\n //\n $.when(pirep_info).done(function (pirep) {\n r_map_view.update({ pirep: pirep.data });\n $('#map-info-box').show();\n });\n };\n\n var updateMap = function updateMap() {\n\n console.log('reloading flights from acars...');\n\n /**\n * AJAX UPDATE\n */\n var pirep_uri = opts.pirep_uri.replace('{id}', '');\n var pireps = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flights = $.ajax({\n url: opts.update_uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(flights).done(function (flightGeoJson) {\n\n if (layerFlights !== null) {\n layerFlights.clearLayers();\n }\n\n layerFlights = leaflet.geoJSON(flightGeoJson, {\n onEachFeature: function onEachFeature(feature, layer) {\n layer.on({\n click: function click(e) {\n pannedToCenter = false;\n onFlightClick(feature, layer);\n }\n });\n\n var popup_html = '';\n if (feature.properties && feature.properties.popup !== '' && feature.properties.popup !== undefined) {\n popup_html += feature.properties.popup;\n layer.bindPopup(popup_html);\n }\n\n // add to the list\n markers_list[feature.properties.pirep_id] = [feature, layer];\n },\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerFlights.addTo(map);\n\n // Reload the clicked-flight information\n if (layerSelFlight !== null) {\n onFlightClick(layerSelFlightFeature, layerSelFlightLayer);\n }\n });\n\n $.when(pireps).done(function (pireps) {\n r_table_view.update({\n pireps: pireps.data,\n has_data: pireps.data.length > 0\n });\n });\n };\n\n updateMap();\n setInterval(updateMap, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9saXZlX21hcC5qcz9lN2Y2Il0sIm5hbWVzIjpbImdlb2xpYiIsInJlcXVpcmUiLCJsZWFmbGV0Iiwicml2ZXRzIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImNlbnRlciIsInpvb20iLCJ1cGRhdGVfdXJpIiwicGlyZXBfdXJpIiwicGlyZXBfbGlua191cmkiLCJwb3NpdGlvbnMiLCJyZW5kZXJfZWxlbSIsImFpcmNyYWZ0X2ljb24iLCJ1bml0cyIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcmtlcnNfbGlzdCIsInBhbm5lZFRvQ2VudGVyIiwibGF5ZXJGbGlnaHRzIiwibGF5ZXJTZWxGbGlnaHQiLCJsYXllclNlbEZsaWdodEZlYXR1cmUiLCJsYXllclNlbEZsaWdodExheWVyIiwibGF5ZXJTZWxBcnIiLCJsYXllclNlbERlcCIsIm1hcENvbnRyb2xsZXIiLCJmb2N1c01hcmtlciIsImUiLCJtb2RlbCIsInBpcmVwIiwiaWQiLCJjb25zb2xlIiwibG9nIiwibWFya2VyIiwib25GbGlnaHRDbGljayIsInJfbWFwX3ZpZXciLCJiaW5kIiwiJCIsImNvbnRyb2xsZXIiLCJyX3RhYmxlX3ZpZXciLCJwaXJlcHMiLCJmZWF0dXJlIiwibGF5ZXIiLCJyZXBsYWNlIiwicHJvcGVydGllcyIsInBpcmVwX2lkIiwiZ2VvanNvbl91cmkiLCJwaXJlcF9pbmZvIiwiYWpheCIsInVybCIsImRhdGFUeXBlIiwiZXJyb3IiLCJmbGlnaHRfcm91dGUiLCJ3aGVuIiwiZG9uZSIsInJ0ZSIsInJlbW92ZUxheWVyIiwiZ2VvZGVzaWMiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiY29sb3IiLCJ3cmFwIiwiYWRkVG8iLCJnZW9Kc29uIiwibGluZSIsImMiLCJnZXRDZW50ZXIiLCJsYXRpdHVkZSIsImFpcnBvcnRzIiwiYSIsImxhdCIsImxvbmdpdHVkZSIsImxvbiIsImQiLCJwYW5UbyIsInBvc2l0aW9uIiwibG5nIiwidXBkYXRlIiwiZGF0YSIsInNob3ciLCJ1cGRhdGVNYXAiLCJmbGlnaHRzIiwiY2xlYXJMYXllcnMiLCJnZW9KU09OIiwiZmxpZ2h0R2VvSnNvbiIsIm9uRWFjaEZlYXR1cmUiLCJvbiIsImNsaWNrIiwicG9wdXBfaHRtbCIsInBvcHVwIiwidW5kZWZpbmVkIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG9uIiwicm90YXRpb25BbmdsZSIsImhlYWRpbmciLCJoYXNfZGF0YSIsImxlbmd0aCIsInNldEludGVydmFsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTs7QUFFQSxJQUFNQSxTQUFTLG1CQUFBQyxDQUFRLHNDQUFSLENBQWY7QUFDQSxJQUFNQyxVQUFVLG1CQUFBRCxDQUFRLDRDQUFSLENBQWhCO0FBQ0EsSUFBTUUsU0FBUyxtQkFBQUYsQ0FBUSxzQ0FBUixDQUFmOztBQUVBO0FBQ0E7O0FBRUE7Ozs7O0FBS0EseURBQWUsVUFBQ0csSUFBRCxFQUFVOztBQUVyQkEsV0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ2pCQyxnQkFBUSxDQUFDLFFBQUQsRUFBVyxDQUFDLFFBQVosQ0FEUztBQUVqQkMsY0FBTSxDQUZXO0FBR2pCQyxvQkFBWSxZQUhLO0FBSWpCQyxtQkFBVyxrQkFKTTtBQUtqQkMsd0JBQWdCLGNBTEM7QUFNakJDLG1CQUFXLElBTk07QUFPakJDLHFCQUFhLEtBUEk7QUFRakJDLHVCQUFlLGdDQVJFO0FBU2pCQyxlQUFPO0FBVFUsS0FBZCxFQVVKWCxJQVZJLENBQVA7O0FBWUEsUUFBTVksTUFBTSxrRUFBQUMsQ0FBY2IsSUFBZCxDQUFaO0FBQ0EsUUFBTWMsZUFBZWhCLFFBQVFpQixJQUFSLENBQWE7QUFDOUJDLGlCQUFTaEIsS0FBS1UsYUFEZ0I7QUFFOUJPLGtCQUFVLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FGb0I7QUFHOUJDLG9CQUFZLENBQUMsRUFBRCxFQUFLLEVBQUw7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LENBQW9CLGtCQUFVO0FBQzFCZix5QkFBYXNDLE1BQWIsQ0FBb0I7QUFDaEJyQyx3QkFBUUEsT0FBT3NDLElBREM7QUFFaEJrQiwwQkFBV3hELE9BQU9zQyxJQUFQLENBQVltQixNQUFaLEdBQXFCO0FBRmhCLGFBQXBCO0FBSUgsU0FMRDtBQU1ILEtBbEVEOztBQW9FQWpCO0FBQ0FrQixnQkFBWWxCLFNBQVosRUFBdUIsS0FBdkI7QUFDSCxDQXpNRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2xpdmVfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cblxuY29uc3QgZ2VvbGliID0gcmVxdWlyZSgnZ2VvbGliJyk7XG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuY29uc3Qgcml2ZXRzID0gcmVxdWlyZSgncml2ZXRzJyk7XG5cbmltcG9ydCBkcmF3X2Jhc2VfbWFwIGZyb20gJy4vYmFzZV9tYXAnXG5pbXBvcnQgeyBBQ1RVQUxfUk9VVEVfQ09MT1IgfSBmcm9tICcuL2NvbmZpZydcblxuLyoqXG4gKiBSZW5kZXIgdGhlIGxpdmUgbWFwXG4gKiBAcGFyYW0gb3B0c1xuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcblxuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY2VudGVyOiBbMjkuOTgxMzksIC05NS4zMzM3NF0sXG4gICAgICAgIHpvb206IDUsXG4gICAgICAgIHVwZGF0ZV91cmk6ICcvYXBpL2FjYXJzJyxcbiAgICAgICAgcGlyZXBfdXJpOiAnL2FwaS9waXJlcHMve2lkfScsXG4gICAgICAgIHBpcmVwX2xpbmtfdXJpOiAnL3BpcmVwcy97aWR9JyxcbiAgICAgICAgcG9zaXRpb25zOiBudWxsLFxuICAgICAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgICAgIGFpcmNyYWZ0X2ljb246ICcvYXNzZXRzL2ltZy9hY2Fycy9haXJjcmFmdC5wbmcnLFxuICAgICAgICB1bml0czogJ25taScsXG4gICAgfSwgb3B0cyk7XG5cbiAgICBjb25zdCBtYXAgPSBkcmF3X2Jhc2VfbWFwKG9wdHMpO1xuICAgIGNvbnN0IGFpcmNyYWZ0SWNvbiA9IGxlYWZsZXQuaWNvbih7XG4gICAgICAgIGljb25Vcmw6IG9wdHMuYWlyY3JhZnRfaWNvbixcbiAgICAgICAgaWNvblNpemU6IFs0MiwgNDJdLFxuICAgICAgICBpY29uQW5jaG9yOiBbMjEsIDIxXSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEhvbGQgdGhlIG1hcmtlcnNcbiAgICAgKiBAdHlwZSB7e319XG4gICAgICovXG4gICAgbGV0IG1hcmtlcnNfbGlzdCA9IHt9O1xuXG4gICAgbGV0IHBhbm5lZFRvQ2VudGVyID0gZmFsc2U7XG5cbiAgICBsZXQgbGF5ZXJGbGlnaHRzID0gbnVsbDtcbiAgICBsZXQgbGF5ZXJTZWxGbGlnaHQgPSBudWxsO1xuICAgIGxldCBsYXllclNlbEZsaWdodEZlYXR1cmUgPSBudWxsO1xuICAgIGxldCBsYXllclNlbEZsaWdodExheWVyID0gbnVsbDtcbiAgICBsZXQgbGF5ZXJTZWxBcnIgPSBudWxsO1xuICAgIGxldCBsYXllclNlbERlcCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9sbGVyIGZvciB0d28td2F5IGJpbmRpbmdzXG4gICAgICogQHR5cGUge3tmb2N1c01hcmtlcjogZm9jdXNNYXJrZXJ9fVxuICAgICAqL1xuICAgIGNvbnN0IG1hcENvbnRyb2xsZXIgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb2N1cyBvbiBhIHNwZWNpZmljIG1hcmtlclxuICAgICAgICAgKiBAcGFyYW0gZVxuICAgICAgICAgKiBAcGFyYW0gbW9kZWxcbiAgICAgICAgICovXG4gICAgICAgIGZvY3VzTWFya2VyOiAoZSwgbW9kZWwpID0+IHtcbiAgICAgICAgICAgIGlmKCEobW9kZWwucGlyZXAuaWQgaW4gbWFya2Vyc19saXN0KSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXJrZXIgbm90IGZvdW5kIGluIGxpc3QnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG1hcmtlcnNfbGlzdFttb2RlbC5waXJlcC5pZF07XG4gICAgICAgICAgICBvbkZsaWdodENsaWNrKG1hcmtlclswXSwgbWFya2VyWzFdKTtcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3Qgcl9tYXBfdmlldyA9IHJpdmV0cy5iaW5kKCQoJyNtYXAtaW5mby1ib3gnKSwge3BpcmVwOiB7fSwgY29udHJvbGxlcjogbWFwQ29udHJvbGxlcn0pO1xuICAgIGNvbnN0IHJfdGFibGVfdmlldyA9IHJpdmV0cy5iaW5kKCQoJyNsaXZlX2ZsaWdodHMnKSwge3BpcmVwczogW10sIGNvbnRyb2xsZXI6IG1hcENvbnRyb2xsZXJ9KTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gYSBmbGlnaHQgaXMgY2xpY2tlZCBvbiwgc2hvdyB0aGUgcGF0aCwgZXRjIGZvciB0aGF0IGZsaWdodFxuICAgICAqIEBwYXJhbSBmZWF0dXJlXG4gICAgICogQHBhcmFtIGxheWVyXG4gICAgICovXG4gICAgY29uc3Qgb25GbGlnaHRDbGljayA9IChmZWF0dXJlLCBsYXllcikgPT4ge1xuXG4gICAgICAgIGNvbnN0IHBpcmVwX3VyaSA9IG9wdHMucGlyZXBfdXJpLnJlcGxhY2UoJ3tpZH0nLCBmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWQpO1xuICAgICAgICBjb25zdCBnZW9qc29uX3VyaSA9IG9wdHMucGlyZXBfdXJpLnJlcGxhY2UoJ3tpZH0nLCBmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWQpICsgXCIvYWNhcnMvZ2VvanNvblwiO1xuXG4gICAgICAgIGNvbnN0IHBpcmVwX2luZm8gPSAkLmFqYXgoe1xuICAgICAgICAgICAgdXJsOiBwaXJlcF91cmksXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUubG9nXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGZsaWdodF9yb3V0ZSA9ICQuYWpheCh7XG4gICAgICAgICAgICB1cmw6IGdlb2pzb25fdXJpLFxuICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2FkIHVwIHRoZSBQSVJFUCBpbmZvXG4gICAgICAgICQud2hlbihmbGlnaHRfcm91dGUpLmRvbmUoKHJ0ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGxheWVyU2VsRmxpZ2h0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsRmxpZ2h0KTtcbiAgICAgICAgICAgICAgICAvL21hcC5yZW1vdmVMYXllcihsYXllclNlbEFycik7XG4gICAgICAgICAgICAgICAgLy9tYXAucmVtb3ZlTGF5ZXIobGF5ZXJTZWxEZXApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYXllclNlbEZsaWdodCA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IDUsXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC45LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXG4gICAgICAgICAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgICAgICAgICB9KS5hZGRUbyhtYXApO1xuXG4gICAgICAgICAgICBsYXllclNlbEZsaWdodC5nZW9Kc29uKHJ0ZS5saW5lKTtcbiAgICAgICAgICAgIGxheWVyU2VsRmxpZ2h0RmVhdHVyZSA9IGZlYXR1cmU7XG4gICAgICAgICAgICBsYXllclNlbEZsaWdodExheWVyID0gbGF5ZXI7XG5cbiAgICAgICAgICAgIC8qY29uc3QgZHB0SWNvbiA9IGxlYWZsZXQuZGl2SWNvbih7XG4gICAgICAgICAgICAgICAgaHRtbDogJzxkaXYgY2xhc3M9XCJtYXAtaW5mby1sYWJlbFwiPjxoNT4nICsgcnRlLmFpcnBvcnRzLmQuaWNhbyArICc8L2g1PjwvZGl2PidcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsYXllclNlbERlcCA9IGxlYWZsZXQubWFya2VyKFtydGUuYWlycG9ydHMuZC5sYXQsIHJ0ZS5haXJwb3J0cy5kLmxvbl0sIHtpY29uOmRwdEljb259KS5hZGRUbyhtYXApO1xuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgLy8gQ2VudGVyIG9uIGl0LCBidXQgb25seSBkbyBpdCBvbmNlLCBpbiBjYXNlIHRoZSBtYXAgaXMgbW92ZWRcbiAgICAgICAgICAgIGlmKCFwYW5uZWRUb0NlbnRlcikge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgY2VudGVyXG4gICAgICAgICAgICAgICAgY29uc3QgYyA9IGdlb2xpYi5nZXRDZW50ZXIoW1xuICAgICAgICAgICAgICAgICAgICB7bGF0aXR1ZGU6IHJ0ZS5haXJwb3J0cy5hLmxhdCwgbG9uZ2l0dWRlOiBydGUuYWlycG9ydHMuYS5sb259LFxuICAgICAgICAgICAgICAgICAgICB7bGF0aXR1ZGU6IHJ0ZS5haXJwb3J0cy5kLmxhdCwgbG9uZ2l0dWRlOiBydGUuYWlycG9ydHMuZC5sb259LFxuICAgICAgICAgICAgICAgIF0pO1xuXG4gICAgICAgICAgICAgICAgLy9tYXAucGFuVG8oe2xhdDogYy5sYXRpdHVkZSwgbG5nOiBjLmxvbmdpdHVkZX0pO1xuICAgICAgICAgICAgICAgIG1hcC5wYW5Ubyh7bGF0OiBydGUucG9zaXRpb24ubGF0LCBsbmc6IHJ0ZS5wb3NpdGlvbi5sb259KTtcbiAgICAgICAgICAgICAgICBwYW5uZWRUb0NlbnRlciA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFdoZW4gdGhlIFBJUkVQIGluZm8gaXMgZG9uZSBsb2FkaW5nLCBzaG93IHRoZSBib3R0b20gYmFyXG4gICAgICAgIC8vXG4gICAgICAgICQud2hlbihwaXJlcF9pbmZvKS5kb25lKHBpcmVwID0+IHtcbiAgICAgICAgICAgIHJfbWFwX3ZpZXcudXBkYXRlKHtwaXJlcDpwaXJlcC5kYXRhfSk7XG4gICAgICAgICAgICAkKCcjbWFwLWluZm8tYm94Jykuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlTWFwID0gKCkgPT4ge1xuXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWxvYWRpbmcgZmxpZ2h0cyBmcm9tIGFjYXJzLi4uJyk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFKQVggVVBEQVRFXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBwaXJlcF91cmkgPSBvcHRzLnBpcmVwX3VyaS5yZXBsYWNlKCd7aWR9JywgJycpO1xuICAgICAgICBsZXQgcGlyZXBzID0gJC5hamF4KHtcbiAgICAgICAgICAgIHVybDogcGlyZXBfdXJpLFxuICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgZmxpZ2h0cyA9ICQuYWpheCh7XG4gICAgICAgICAgICB1cmw6IG9wdHMudXBkYXRlX3VyaSxcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXG4gICAgICAgICAgICBlcnJvcjogY29uc29sZS5sb2dcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJC53aGVuKGZsaWdodHMpLmRvbmUoZmxpZ2h0R2VvSnNvbiA9PiB7XG5cbiAgICAgICAgICAgIGlmIChsYXllckZsaWdodHMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsYXllckZsaWdodHMuY2xlYXJMYXllcnMoKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYXllckZsaWdodHMgPSBsZWFmbGV0Lmdlb0pTT04oZmxpZ2h0R2VvSnNvbiwge1xuICAgICAgICAgICAgICAgIG9uRWFjaEZlYXR1cmU6IChmZWF0dXJlLCBsYXllcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsYXllci5vbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5uZWRUb0NlbnRlciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2soZmVhdHVyZSwgbGF5ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgKGZlYXR1cmUucHJvcGVydGllcy5wb3B1cCAhPT0gJycgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cF9odG1sICs9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLmJpbmRQb3B1cChwb3B1cF9odG1sKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0byB0aGUgbGlzdFxuICAgICAgICAgICAgICAgICAgICBtYXJrZXJzX2xpc3RbZmVhdHVyZS5wcm9wZXJ0aWVzLnBpcmVwX2lkXSA9IFtmZWF0dXJlLCBsYXllcl07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlYWZsZXQubWFya2VyKGxhdGxvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYWlyY3JhZnRJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGF5ZXJGbGlnaHRzLmFkZFRvKG1hcCk7XG5cbiAgICAgICAgICAgIC8vIFJlbG9hZCB0aGUgY2xpY2tlZC1mbGlnaHQgaW5mb3JtYXRpb25cbiAgICAgICAgICAgIGlmIChsYXllclNlbEZsaWdodCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2sobGF5ZXJTZWxGbGlnaHRGZWF0dXJlLCBsYXllclNlbEZsaWdodExheWVyKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAkLndoZW4ocGlyZXBzKS5kb25lKHBpcmVwcyA9PiB7XG4gICAgICAgICAgICByX3RhYmxlX3ZpZXcudXBkYXRlKHtcbiAgICAgICAgICAgICAgICBwaXJlcHM6IHBpcmVwcy5kYXRhLFxuICAgICAgICAgICAgICAgIGhhc19kYXRhOiAocGlyZXBzLmRhdGEubGVuZ3RoID4gMCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHVwZGF0ZU1hcCgpO1xuICAgIHNldEludGVydmFsKHVwZGF0ZU1hcCwgMTAwMDApXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvbGl2ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/live_map.js\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n//\n\nvar geolib = __webpack_require__(\"./node_modules/geolib/dist/geolib.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n\n\n\n/**\r\n * Render the live map\r\n * @param opts\r\n * @private\r\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n center: [29.98139, -95.33374],\n zoom: 5,\n update_uri: '/api/acars',\n pirep_uri: '/api/pireps/{id}',\n pirep_link_uri: '/pireps/{id}',\n positions: null,\n render_elem: 'map',\n aircraft_icon: '/assets/img/acars/aircraft.png',\n units: 'nmi'\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n /**\r\n * Hold the markers\r\n * @type {{}}\r\n */\n var markers_list = {};\n\n var pannedToCenter = false;\n\n var layerFlights = null;\n var layerSelFlight = null;\n var layerSelFlightFeature = null;\n var layerSelFlightLayer = null;\n var layerSelArr = null;\n var layerSelDep = null;\n\n /**\r\n * Controller for two-way bindings\r\n * @type {{focusMarker: focusMarker}}\r\n */\n var mapController = {\n /**\r\n * Focus on a specific marker\r\n * @param e\r\n * @param model\r\n */\n focusMarker: function focusMarker(e, model) {\n if (!(model.pirep.id in markers_list)) {\n console.log('marker not found in list');\n return;\n }\n\n var marker = markers_list[model.pirep.id];\n onFlightClick(marker[0], marker[1]);\n }\n };\n\n var r_map_view = rivets.bind($('#map-info-box'), { pirep: {}, controller: mapController });\n var r_table_view = rivets.bind($('#live_flights'), { pireps: [], controller: mapController });\n\n /**\r\n * When a flight is clicked on, show the path, etc for that flight\r\n * @param feature\r\n * @param layer\r\n */\n var onFlightClick = function onFlightClick(feature, layer) {\n\n var pirep_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id);\n var geojson_uri = opts.pirep_uri.replace('{id}', feature.properties.pirep_id) + \"/acars/geojson\";\n\n var pirep_info = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flight_route = $.ajax({\n url: geojson_uri,\n dataType: 'json',\n error: console.log\n });\n\n // Load up the PIREP info\n $.when(flight_route).done(function (rte) {\n if (layerSelFlight !== null) {\n map.removeLayer(layerSelFlight);\n //map.removeLayer(layerSelArr);\n //map.removeLayer(layerSelDep);\n }\n\n layerSelFlight = leaflet.geodesic([], {\n weight: 5,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n wrap: false\n }).addTo(map);\n\n layerSelFlight.geoJson(rte.line);\n layerSelFlightFeature = feature;\n layerSelFlightLayer = layer;\n\n /*const dptIcon = leaflet.divIcon({\r\n html: '' + rte.airports.d.icao + '
'\r\n });\r\n layerSelDep = leaflet.marker([rte.airports.d.lat, rte.airports.d.lon], {icon:dptIcon}).addTo(map);\r\n */\n\n // Center on it, but only do it once, in case the map is moved\n if (!pannedToCenter) {\n // find center\n var c = geolib.getCenter([{ latitude: rte.airports.a.lat, longitude: rte.airports.a.lon }, { latitude: rte.airports.d.lat, longitude: rte.airports.d.lon }]);\n\n //map.panTo({lat: c.latitude, lng: c.longitude});\n map.panTo({ lat: rte.position.lat, lng: rte.position.lon });\n pannedToCenter = true;\n }\n });\n\n //\n // When the PIREP info is done loading, show the bottom bar\n //\n $.when(pirep_info).done(function (pirep) {\n r_map_view.update({ pirep: pirep.data });\n $('#map-info-box').show();\n });\n };\n\n var updateMap = function updateMap() {\n\n console.log('reloading flights from acars...');\n\n /**\r\n * AJAX UPDATE\r\n */\n var pirep_uri = opts.pirep_uri.replace('{id}', '');\n var pireps = $.ajax({\n url: pirep_uri,\n dataType: 'json',\n error: console.log\n });\n\n var flights = $.ajax({\n url: opts.update_uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(flights).done(function (flightGeoJson) {\n\n if (layerFlights !== null) {\n layerFlights.clearLayers();\n }\n\n layerFlights = leaflet.geoJSON(flightGeoJson, {\n onEachFeature: function onEachFeature(feature, layer) {\n layer.on({\n click: function click(e) {\n pannedToCenter = false;\n onFlightClick(feature, layer);\n }\n });\n\n var popup_html = '';\n if (feature.properties && feature.properties.popup !== '' && feature.properties.popup !== undefined) {\n popup_html += feature.properties.popup;\n layer.bindPopup(popup_html);\n }\n\n // add to the list\n markers_list[feature.properties.pirep_id] = [feature, layer];\n },\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerFlights.addTo(map);\n\n // Reload the clicked-flight information\n if (layerSelFlight !== null) {\n onFlightClick(layerSelFlightFeature, layerSelFlightLayer);\n }\n });\n\n $.when(pireps).done(function (pireps) {\n r_table_view.update({\n pireps: pireps.data,\n has_data: pireps.data.length > 0\n });\n });\n };\n\n updateMap();\n setInterval(updateMap, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9saXZlX21hcC5qcz9lN2Y2Il0sIm5hbWVzIjpbImdlb2xpYiIsInJlcXVpcmUiLCJsZWFmbGV0Iiwicml2ZXRzIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsImNlbnRlciIsInpvb20iLCJ1cGRhdGVfdXJpIiwicGlyZXBfdXJpIiwicGlyZXBfbGlua191cmkiLCJwb3NpdGlvbnMiLCJyZW5kZXJfZWxlbSIsImFpcmNyYWZ0X2ljb24iLCJ1bml0cyIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcmtlcnNfbGlzdCIsInBhbm5lZFRvQ2VudGVyIiwibGF5ZXJGbGlnaHRzIiwibGF5ZXJTZWxGbGlnaHQiLCJsYXllclNlbEZsaWdodEZlYXR1cmUiLCJsYXllclNlbEZsaWdodExheWVyIiwibGF5ZXJTZWxBcnIiLCJsYXllclNlbERlcCIsIm1hcENvbnRyb2xsZXIiLCJmb2N1c01hcmtlciIsImUiLCJtb2RlbCIsInBpcmVwIiwiaWQiLCJjb25zb2xlIiwibG9nIiwibWFya2VyIiwib25GbGlnaHRDbGljayIsInJfbWFwX3ZpZXciLCJiaW5kIiwiJCIsImNvbnRyb2xsZXIiLCJyX3RhYmxlX3ZpZXciLCJwaXJlcHMiLCJmZWF0dXJlIiwibGF5ZXIiLCJyZXBsYWNlIiwicHJvcGVydGllcyIsInBpcmVwX2lkIiwiZ2VvanNvbl91cmkiLCJwaXJlcF9pbmZvIiwiYWpheCIsInVybCIsImRhdGFUeXBlIiwiZXJyb3IiLCJmbGlnaHRfcm91dGUiLCJ3aGVuIiwiZG9uZSIsInJ0ZSIsInJlbW92ZUxheWVyIiwiZ2VvZGVzaWMiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiY29sb3IiLCJ3cmFwIiwiYWRkVG8iLCJnZW9Kc29uIiwibGluZSIsImMiLCJnZXRDZW50ZXIiLCJsYXRpdHVkZSIsImFpcnBvcnRzIiwiYSIsImxhdCIsImxvbmdpdHVkZSIsImxvbiIsImQiLCJwYW5UbyIsInBvc2l0aW9uIiwibG5nIiwidXBkYXRlIiwiZGF0YSIsInNob3ciLCJ1cGRhdGVNYXAiLCJmbGlnaHRzIiwiY2xlYXJMYXllcnMiLCJnZW9KU09OIiwiZmxpZ2h0R2VvSnNvbiIsIm9uRWFjaEZlYXR1cmUiLCJvbiIsImNsaWNrIiwicG9wdXBfaHRtbCIsInBvcHVwIiwidW5kZWZpbmVkIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG9uIiwicm90YXRpb25BbmdsZSIsImhlYWRpbmciLCJoYXNfZGF0YSIsImxlbmd0aCIsInNldEludGVydmFsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTs7QUFFQSxJQUFNQSxTQUFTLG1CQUFBQyxDQUFRLHNDQUFSLENBQWY7QUFDQSxJQUFNQyxVQUFVLG1CQUFBRCxDQUFRLDRDQUFSLENBQWhCO0FBQ0EsSUFBTUUsU0FBUyxtQkFBQUYsQ0FBUSxzQ0FBUixDQUFmOztBQUVBO0FBQ0E7O0FBRUE7Ozs7O0FBS0EseURBQWUsVUFBQ0csSUFBRCxFQUFVOztBQUVyQkEsV0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ2pCQyxnQkFBUSxDQUFDLFFBQUQsRUFBVyxDQUFDLFFBQVosQ0FEUztBQUVqQkMsY0FBTSxDQUZXO0FBR2pCQyxvQkFBWSxZQUhLO0FBSWpCQyxtQkFBVyxrQkFKTTtBQUtqQkMsd0JBQWdCLGNBTEM7QUFNakJDLG1CQUFXLElBTk07QUFPakJDLHFCQUFhLEtBUEk7QUFRakJDLHVCQUFlLGdDQVJFO0FBU2pCQyxlQUFPO0FBVFUsS0FBZCxFQVVKWCxJQVZJLENBQVA7O0FBWUEsUUFBTVksTUFBTSxrRUFBQUMsQ0FBY2IsSUFBZCxDQUFaO0FBQ0EsUUFBTWMsZUFBZWhCLFFBQVFpQixJQUFSLENBQWE7QUFDOUJDLGlCQUFTaEIsS0FBS1UsYUFEZ0I7QUFFOUJPLGtCQUFVLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FGb0I7QUFHOUJDLG9CQUFZLENBQUMsRUFBRCxFQUFLLEVBQUw7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LENBQW9CLGtCQUFVO0FBQzFCZix5QkFBYXNDLE1BQWIsQ0FBb0I7QUFDaEJyQyx3QkFBUUEsT0FBT3NDLElBREM7QUFFaEJrQiwwQkFBV3hELE9BQU9zQyxJQUFQLENBQVltQixNQUFaLEdBQXFCO0FBRmhCLGFBQXBCO0FBSUgsU0FMRDtBQU1ILEtBbEVEOztBQW9FQWpCO0FBQ0FrQixnQkFBWWxCLFNBQVosRUFBdUIsS0FBdkI7QUFDSCxDQXpNRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2xpdmVfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cclxuXHJcbmNvbnN0IGdlb2xpYiA9IHJlcXVpcmUoJ2dlb2xpYicpO1xyXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5jb25zdCByaXZldHMgPSByZXF1aXJlKCdyaXZldHMnKTtcclxuXHJcbmltcG9ydCBkcmF3X2Jhc2VfbWFwIGZyb20gJy4vYmFzZV9tYXAnXHJcbmltcG9ydCB7IEFDVFVBTF9ST1VURV9DT0xPUiB9IGZyb20gJy4vY29uZmlnJ1xyXG5cclxuLyoqXHJcbiAqIFJlbmRlciB0aGUgbGl2ZSBtYXBcclxuICogQHBhcmFtIG9wdHNcclxuICogQHByaXZhdGVcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XHJcblxyXG4gICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgIGNlbnRlcjogWzI5Ljk4MTM5LCAtOTUuMzMzNzRdLFxyXG4gICAgICAgIHpvb206IDUsXHJcbiAgICAgICAgdXBkYXRlX3VyaTogJy9hcGkvYWNhcnMnLFxyXG4gICAgICAgIHBpcmVwX3VyaTogJy9hcGkvcGlyZXBzL3tpZH0nLFxyXG4gICAgICAgIHBpcmVwX2xpbmtfdXJpOiAnL3BpcmVwcy97aWR9JyxcclxuICAgICAgICBwb3NpdGlvbnM6IG51bGwsXHJcbiAgICAgICAgcmVuZGVyX2VsZW06ICdtYXAnLFxyXG4gICAgICAgIGFpcmNyYWZ0X2ljb246ICcvYXNzZXRzL2ltZy9hY2Fycy9haXJjcmFmdC5wbmcnLFxyXG4gICAgICAgIHVuaXRzOiAnbm1pJyxcclxuICAgIH0sIG9wdHMpO1xyXG5cclxuICAgIGNvbnN0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XHJcbiAgICBjb25zdCBhaXJjcmFmdEljb24gPSBsZWFmbGV0Lmljb24oe1xyXG4gICAgICAgIGljb25Vcmw6IG9wdHMuYWlyY3JhZnRfaWNvbixcclxuICAgICAgICBpY29uU2l6ZTogWzQyLCA0Ml0sXHJcbiAgICAgICAgaWNvbkFuY2hvcjogWzIxLCAyMV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvbGQgdGhlIG1hcmtlcnNcclxuICAgICAqIEB0eXBlIHt7fX1cclxuICAgICAqL1xyXG4gICAgbGV0IG1hcmtlcnNfbGlzdCA9IHt9O1xyXG5cclxuICAgIGxldCBwYW5uZWRUb0NlbnRlciA9IGZhbHNlO1xyXG5cclxuICAgIGxldCBsYXllckZsaWdodHMgPSBudWxsO1xyXG4gICAgbGV0IGxheWVyU2VsRmxpZ2h0ID0gbnVsbDtcclxuICAgIGxldCBsYXllclNlbEZsaWdodEZlYXR1cmUgPSBudWxsO1xyXG4gICAgbGV0IGxheWVyU2VsRmxpZ2h0TGF5ZXIgPSBudWxsO1xyXG4gICAgbGV0IGxheWVyU2VsQXJyID0gbnVsbDtcclxuICAgIGxldCBsYXllclNlbERlcCA9IG51bGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sbGVyIGZvciB0d28td2F5IGJpbmRpbmdzXHJcbiAgICAgKiBAdHlwZSB7e2ZvY3VzTWFya2VyOiBmb2N1c01hcmtlcn19XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IG1hcENvbnRyb2xsZXIgPSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogRm9jdXMgb24gYSBzcGVjaWZpYyBtYXJrZXJcclxuICAgICAgICAgKiBAcGFyYW0gZVxyXG4gICAgICAgICAqIEBwYXJhbSBtb2RlbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGZvY3VzTWFya2VyOiAoZSwgbW9kZWwpID0+IHtcclxuICAgICAgICAgICAgaWYoIShtb2RlbC5waXJlcC5pZCBpbiBtYXJrZXJzX2xpc3QpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbWFya2VyIG5vdCBmb3VuZCBpbiBsaXN0Jyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG1hcmtlcnNfbGlzdFttb2RlbC5waXJlcC5pZF07XHJcbiAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2sobWFya2VyWzBdLCBtYXJrZXJbMV0pO1xyXG4gICAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJfbWFwX3ZpZXcgPSByaXZldHMuYmluZCgkKCcjbWFwLWluZm8tYm94JyksIHtwaXJlcDoge30sIGNvbnRyb2xsZXI6IG1hcENvbnRyb2xsZXJ9KTtcclxuICAgIGNvbnN0IHJfdGFibGVfdmlldyA9IHJpdmV0cy5iaW5kKCQoJyNsaXZlX2ZsaWdodHMnKSwge3BpcmVwczogW10sIGNvbnRyb2xsZXI6IG1hcENvbnRyb2xsZXJ9KTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZW4gYSBmbGlnaHQgaXMgY2xpY2tlZCBvbiwgc2hvdyB0aGUgcGF0aCwgZXRjIGZvciB0aGF0IGZsaWdodFxyXG4gICAgICogQHBhcmFtIGZlYXR1cmVcclxuICAgICAqIEBwYXJhbSBsYXllclxyXG4gICAgICovXHJcbiAgICBjb25zdCBvbkZsaWdodENsaWNrID0gKGZlYXR1cmUsIGxheWVyKSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnN0IHBpcmVwX3VyaSA9IG9wdHMucGlyZXBfdXJpLnJlcGxhY2UoJ3tpZH0nLCBmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWQpO1xyXG4gICAgICAgIGNvbnN0IGdlb2pzb25fdXJpID0gb3B0cy5waXJlcF91cmkucmVwbGFjZSgne2lkfScsIGZlYXR1cmUucHJvcGVydGllcy5waXJlcF9pZCkgKyBcIi9hY2Fycy9nZW9qc29uXCI7XHJcblxyXG4gICAgICAgIGNvbnN0IHBpcmVwX2luZm8gPSAkLmFqYXgoe1xyXG4gICAgICAgICAgICB1cmw6IHBpcmVwX3VyaSxcclxuICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUubG9nXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGZsaWdodF9yb3V0ZSA9ICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogZ2VvanNvbl91cmksXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBMb2FkIHVwIHRoZSBQSVJFUCBpbmZvXHJcbiAgICAgICAgJC53aGVuKGZsaWdodF9yb3V0ZSkuZG9uZSgocnRlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsYXllclNlbEZsaWdodCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsRmxpZ2h0KTtcclxuICAgICAgICAgICAgICAgIC8vbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsQXJyKTtcclxuICAgICAgICAgICAgICAgIC8vbWFwLnJlbW92ZUxheWVyKGxheWVyU2VsRGVwKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGF5ZXJTZWxGbGlnaHQgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XHJcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6IDUsXHJcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjksXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogQUNUVUFMX1JPVVRFX0NPTE9SLFxyXG4gICAgICAgICAgICAgICAgd3JhcDogZmFsc2UsXHJcbiAgICAgICAgICAgIH0pLmFkZFRvKG1hcCk7XHJcblxyXG4gICAgICAgICAgICBsYXllclNlbEZsaWdodC5nZW9Kc29uKHJ0ZS5saW5lKTtcclxuICAgICAgICAgICAgbGF5ZXJTZWxGbGlnaHRGZWF0dXJlID0gZmVhdHVyZTtcclxuICAgICAgICAgICAgbGF5ZXJTZWxGbGlnaHRMYXllciA9IGxheWVyO1xyXG5cclxuICAgICAgICAgICAgLypjb25zdCBkcHRJY29uID0gbGVhZmxldC5kaXZJY29uKHtcclxuICAgICAgICAgICAgICAgIGh0bWw6ICc8ZGl2IGNsYXNzPVwibWFwLWluZm8tbGFiZWxcIj48aDU+JyArIHJ0ZS5haXJwb3J0cy5kLmljYW8gKyAnPC9oNT48L2Rpdj4nXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgbGF5ZXJTZWxEZXAgPSBsZWFmbGV0Lm1hcmtlcihbcnRlLmFpcnBvcnRzLmQubGF0LCBydGUuYWlycG9ydHMuZC5sb25dLCB7aWNvbjpkcHRJY29ufSkuYWRkVG8obWFwKTtcclxuICAgICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgICAgIC8vIENlbnRlciBvbiBpdCwgYnV0IG9ubHkgZG8gaXQgb25jZSwgaW4gY2FzZSB0aGUgbWFwIGlzIG1vdmVkXHJcbiAgICAgICAgICAgIGlmKCFwYW5uZWRUb0NlbnRlcikge1xyXG4gICAgICAgICAgICAgICAgLy8gZmluZCBjZW50ZXJcclxuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBnZW9saWIuZ2V0Q2VudGVyKFtcclxuICAgICAgICAgICAgICAgICAgICB7bGF0aXR1ZGU6IHJ0ZS5haXJwb3J0cy5hLmxhdCwgbG9uZ2l0dWRlOiBydGUuYWlycG9ydHMuYS5sb259LFxyXG4gICAgICAgICAgICAgICAgICAgIHtsYXRpdHVkZTogcnRlLmFpcnBvcnRzLmQubGF0LCBsb25naXR1ZGU6IHJ0ZS5haXJwb3J0cy5kLmxvbn0sXHJcbiAgICAgICAgICAgICAgICBdKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvL21hcC5wYW5Ubyh7bGF0OiBjLmxhdGl0dWRlLCBsbmc6IGMubG9uZ2l0dWRlfSk7XHJcbiAgICAgICAgICAgICAgICBtYXAucGFuVG8oe2xhdDogcnRlLnBvc2l0aW9uLmxhdCwgbG5nOiBydGUucG9zaXRpb24ubG9ufSk7XHJcbiAgICAgICAgICAgICAgICBwYW5uZWRUb0NlbnRlciA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy9cclxuICAgICAgICAvLyBXaGVuIHRoZSBQSVJFUCBpbmZvIGlzIGRvbmUgbG9hZGluZywgc2hvdyB0aGUgYm90dG9tIGJhclxyXG4gICAgICAgIC8vXHJcbiAgICAgICAgJC53aGVuKHBpcmVwX2luZm8pLmRvbmUocGlyZXAgPT4ge1xyXG4gICAgICAgICAgICByX21hcF92aWV3LnVwZGF0ZSh7cGlyZXA6cGlyZXAuZGF0YX0pO1xyXG4gICAgICAgICAgICAkKCcjbWFwLWluZm8tYm94Jykuc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVNYXAgPSAoKSA9PiB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdyZWxvYWRpbmcgZmxpZ2h0cyBmcm9tIGFjYXJzLi4uJyk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFKQVggVVBEQVRFXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3QgcGlyZXBfdXJpID0gb3B0cy5waXJlcF91cmkucmVwbGFjZSgne2lkfScsICcnKTtcclxuICAgICAgICBsZXQgcGlyZXBzID0gJC5hamF4KHtcclxuICAgICAgICAgICAgdXJsOiBwaXJlcF91cmksXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgICAgIGVycm9yOiBjb25zb2xlLmxvZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgZmxpZ2h0cyA9ICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogb3B0cy51cGRhdGVfdXJpLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICBlcnJvcjogY29uc29sZS5sb2dcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJC53aGVuKGZsaWdodHMpLmRvbmUoZmxpZ2h0R2VvSnNvbiA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAobGF5ZXJGbGlnaHRzICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBsYXllckZsaWdodHMuY2xlYXJMYXllcnMoKVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsYXllckZsaWdodHMgPSBsZWFmbGV0Lmdlb0pTT04oZmxpZ2h0R2VvSnNvbiwge1xyXG4gICAgICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogKGZlYXR1cmUsIGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIub24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbm5lZFRvQ2VudGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZsaWdodENsaWNrKGZlYXR1cmUsIGxheWVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3B1cF9odG1sID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiAoZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwICE9PSAnJyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXAgIT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLmJpbmRQb3B1cChwb3B1cF9odG1sKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0byB0aGUgbGlzdFxyXG4gICAgICAgICAgICAgICAgICAgIG1hcmtlcnNfbGlzdFtmZWF0dXJlLnByb3BlcnRpZXMucGlyZXBfaWRdID0gW2ZlYXR1cmUsIGxheWVyXTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVhZmxldC5tYXJrZXIobGF0bG9uLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGFpcmNyYWZ0SWNvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxheWVyRmxpZ2h0cy5hZGRUbyhtYXApO1xyXG5cclxuICAgICAgICAgICAgLy8gUmVsb2FkIHRoZSBjbGlja2VkLWZsaWdodCBpbmZvcm1hdGlvblxyXG4gICAgICAgICAgICBpZiAobGF5ZXJTZWxGbGlnaHQgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIG9uRmxpZ2h0Q2xpY2sobGF5ZXJTZWxGbGlnaHRGZWF0dXJlLCBsYXllclNlbEZsaWdodExheWVyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICQud2hlbihwaXJlcHMpLmRvbmUocGlyZXBzID0+IHtcclxuICAgICAgICAgICAgcl90YWJsZV92aWV3LnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwaXJlcHM6IHBpcmVwcy5kYXRhLFxyXG4gICAgICAgICAgICAgICAgaGFzX2RhdGE6IChwaXJlcHMuZGF0YS5sZW5ndGggPiAwKSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHVwZGF0ZU1hcCgpO1xyXG4gICAgc2V0SW50ZXJ2YWwodXBkYXRlTWFwLCAxMDAwMClcclxufTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvbGl2ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/live_map.js\n");
/***/ }),
@@ -408,7 +408,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n\n\n/**\n * Show some popup text when a feature is clicked on\n * @param feature\n * @param layer\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\n * Show each point as a marker\n * @param feature\n * @param latlng\n * @returns {*}\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 5,\n fillColor: __WEBPACK_IMPORTED_MODULE_2__config__[\"b\" /* CIRCLE_COLOR */],\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\n *\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map',\n live_map: false,\n aircraft_icon: '/assets/img/acars/aircraft.png',\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var layerLiveFlight = void 0;\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 4,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\n * draw the actual route\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 3,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n\n /**\n *\n */\n var liveFlight = function liveFlight() {\n var uri = opts.pirep_uri;\n var live_route = $.ajax({\n url: uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(live_route).done(function (routeJson) {\n layerLiveFlight = leaflet.geoJSON(routeJson, {\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerLiveFlight.addTo(map);\n });\n };\n\n setInterval(liveFlight, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJsaXZlX21hcCIsImFpcmNyYWZ0X2ljb24iLCJtZXRhcl93bXMiLCJ1cmwiLCJwYXJhbXMiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJsYXllckxpdmVGbGlnaHQiLCJhZGRXTVNMYXllciIsImdlb2Rlc2ljTGF5ZXIiLCJnZW9kZXNpYyIsInN0ZXBzIiwid3JhcCIsImFkZFRvIiwiZ2VvSnNvbiIsImZpdEJvdW5kcyIsImdldEJvdW5kcyIsImUiLCJjb25zb2xlIiwibG9nIiwiZ2VvSlNPTiIsIm9uRWFjaEZlYXR1cmUiLCJzdHlsZSIsImZlYXR1cmVzIiwibGVuZ3RoIiwibGl2ZUZsaWdodCIsInVyaSIsInBpcmVwX3VyaSIsImxpdmVfcm91dGUiLCIkIiwiYWpheCIsImRhdGFUeXBlIiwiZXJyb3IiLCJ3aGVuIiwiZG9uZSIsInJvdXRlSnNvbiIsImxhdGxvbiIsIm1hcmtlciIsInJvdGF0aW9uQW5nbGUiLCJoZWFkaW5nIiwic2V0SW50ZXJ2YWwiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUFBLElBQU1BLFVBQVUsbUJBQUFDLENBQVEsNENBQVIsQ0FBaEI7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7Ozs7QUFLTyxJQUFNQyxzQkFBc0IsU0FBdEJBLG1CQUFzQixDQUFDQyxPQUFELEVBQVVDLEtBQVYsRUFBb0I7QUFDbkQsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCxDQVBNOztBQVNQOzs7Ozs7QUFNTyxJQUFNSSxlQUFlLFNBQWZBLFlBQWUsQ0FBQ04sT0FBRCxFQUFVTyxNQUFWLEVBQXFCO0FBQzdDLFdBQU9WLFFBQVFXLFlBQVIsQ0FBcUJELE1BQXJCLEVBQTZCO0FBQ2hDRSxnQkFBUSxDQUR3QjtBQUVoQ0MsbUJBQVcsNkRBRnFCO0FBR2hDQyxlQUFPLE1BSHlCO0FBSWhDQyxnQkFBUSxDQUp3QjtBQUtoQ0MsaUJBQVMsQ0FMdUI7QUFNaENDLHFCQUFhO0FBTm1CLEtBQTdCLENBQVA7QUFRSCxDQVRNOztBQVdQOzs7Ozt5REFLZSxVQUFDQyxJQUFELEVBQVU7O0FBRXJCQSxXQUFPQyxPQUFPQyxNQUFQLENBQWM7O0FBRWpCQyxzQkFBYyxJQUZHO0FBR2pCQyw0QkFBb0IsSUFISDtBQUlqQkMsNkJBQXFCLElBSko7QUFLakJDLDJCQUFtQixJQUxGO0FBTWpCQyxxQkFBYSxLQU5JO0FBT2pCQyxrQkFBVSxLQVBPO0FBUWpCQyx1QkFBZSxnQ0FSRTtBQVNqQkMsbUJBQVc7QUFDUEMsaUJBQUssRUFERTtBQUVQQyxvQkFBUTtBQUZEO0FBVE0sS0FBZCxFQWFKWixJQWJJLENBQVA7O0FBZUEsUUFBTWEsZUFBZS9CLFFBQVFnQyxJQUFSLENBQWE7QUFDOUJDLGlCQUFTZixLQUFLUyxhQURnQjtBQUU5Qk8sa0JBQVUsQ0FBQyxFQUFELEVBQUssRUFBTCxDQUZvQjtBQUc5QkMsb0JBQVksQ0FBQyxFQUFELEVBQUssRUFBTDtBQUhrQixLQUFiLENBQXJCOztBQU1BLFFBQUlDLE1BQU0sa0VBQUFDLENBQWNuQixJQUFkLENBQVY7QUFDQSxRQUFJb0Isd0JBQUo7O0FBRUEsUUFBSXBCLEtBQUtVLFNBQUwsQ0FBZUMsR0FBZixLQUF1QixFQUEzQixFQUErQjtBQUMzQlUsUUFBQSxxRUFBQUEsQ0FBWUgsR0FBWixFQUFpQmxCLEtBQUtVLFNBQXRCO0FBQ0g7O0FBRUQsUUFBSVksZ0JBQWdCeEMsUUFBUXlDLFFBQVIsQ0FBaUIsRUFBakIsRUFBcUI7QUFDckMxQixnQkFBUSxDQUQ2QjtBQUVyQ0MsaUJBQVMsR0FGNEI7QUFHckNGLGVBQU8saUVBSDhCO0FBSXJDNEIsZUFBTyxFQUo4QjtBQUtyQ0MsY0FBTTtBQUwrQixLQUFyQixFQU1qQkMsS0FOaUIsQ0FNWFIsR0FOVyxDQUFwQjs7QUFRQUksa0JBQWNLLE9BQWQsQ0FBc0IzQixLQUFLSSxrQkFBM0I7O0FBRUEsUUFBSTtBQUNBYyxZQUFJVSxTQUFKLENBQWNOLGNBQWNPLFNBQWQsRUFBZDtBQUNILEtBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7QUFDUkMsZ0JBQVFDLEdBQVIsQ0FBWUYsQ0FBWjtBQUNIOztBQUVEO0FBQ0EsUUFBSTlCLEtBQUtHLFlBQUwsS0FBc0IsSUFBMUIsRUFBZ0M7QUFDNUIsWUFBSUEsZUFBZXJCLFFBQVFtRCxPQUFSLENBQWdCakMsS0FBS0csWUFBckIsRUFBbUM7QUFDbEQrQiwyQkFBZWxELG1CQURtQztBQUVsRE8sMEJBQWNBLFlBRm9DO0FBR2xENEMsbUJBQU87QUFDSCx5QkFBUyxpRUFETjtBQUVILDBCQUFVLENBRlA7QUFHSCwyQkFBVztBQUhSO0FBSDJDLFNBQW5DLENBQW5COztBQVVBaEMscUJBQWF1QixLQUFiLENBQW1CUixHQUFuQjtBQUNIOztBQUVEOzs7O0FBSUEsUUFBSWxCLEtBQUtNLGlCQUFMLEtBQTJCLElBQTNCLElBQW1DTixLQUFLTSxpQkFBTCxDQUF1QjhCLFFBQXZCLENBQWdDQyxNQUFoQyxHQUF5QyxDQUFoRixFQUFtRjtBQUMvRSxZQUFJZixpQkFBZ0J4QyxRQUFReUMsUUFBUixDQUFpQixFQUFqQixFQUFxQjtBQUNyQzFCLG9CQUFRLENBRDZCO0FBRXJDQyxxQkFBUyxHQUY0QjtBQUdyQ0YsbUJBQU8sbUVBSDhCO0FBSXJDNEIsbUJBQU8sRUFKOEI7QUFLckNDLGtCQUFNO0FBTCtCLFNBQXJCLEVBTWpCQyxLQU5pQixDQU1YUixHQU5XLENBQXBCOztBQVFBSSx1QkFBY0ssT0FBZCxDQUFzQjNCLEtBQUtNLGlCQUEzQjs7QUFFQSxZQUFJO0FBQ0FZLGdCQUFJVSxTQUFKLENBQWNOLGVBQWNPLFNBQWQsRUFBZDtBQUNILFNBRkQsQ0FFRSxPQUFPQyxDQUFQLEVBQVU7QUFDUkMsb0JBQVFDLEdBQVIsQ0FBWUYsQ0FBWjtBQUNIO0FBQ0o7O0FBRUQsUUFBSTlCLEtBQUtLLG1CQUFMLEtBQTZCLElBQTdCLElBQXFDTCxLQUFLSyxtQkFBTCxDQUF5QitCLFFBQXpCLENBQWtDQyxNQUFsQyxHQUEyQyxDQUFwRixFQUF1RjtBQUNuRixZQUFJbEMsZ0JBQWVyQixRQUFRbUQsT0FBUixDQUFnQmpDLEtBQUtLLG1CQUFyQixFQUEwQztBQUN6RDZCLDJCQUFlbEQsbUJBRDBDO0FBRXpETywwQkFBY0EsWUFGMkM7QUFHekQ0QyxtQkFBTztBQUNILHlCQUFTLG1FQUROO0FBRUgsMEJBQVUsQ0FGUDtBQUdILDJCQUFXO0FBSFI7QUFIa0QsU0FBMUMsQ0FBbkI7O0FBVUFoQyxzQkFBYXVCLEtBQWIsQ0FBbUJSLEdBQW5CO0FBQ0g7O0FBRUQ7OztBQUdBLFFBQU1vQixhQUFhLFNBQWJBLFVBQWEsR0FBTTtBQUNyQixZQUFNQyxNQUFNdkMsS0FBS3dDLFNBQWpCO0FBQ0EsWUFBTUMsYUFBYUMsRUFBRUMsSUFBRixDQUFPO0FBQ3RCaEMsaUJBQUs0QixHQURpQjtBQUV0Qkssc0JBQVUsTUFGWTtBQUd0QkMsbUJBQU9kLFFBQVFDO0FBSE8sU0FBUCxDQUFuQjs7QUFNQVUsVUFBRUksSUFBRixDQUFPTCxVQUFQLEVBQW1CTSxJQUFuQixDQUF3QixVQUFDQyxTQUFELEVBQWU7QUFDbkM1Qiw4QkFBa0J0QyxRQUFRbUQsT0FBUixDQUFnQmUsU0FBaEIsRUFBMkI7QUFDekN6RCw4QkFBYyxzQkFBVU4sT0FBVixFQUFtQmdFLE1BQW5CLEVBQTJCO0FBQ3JDLDJCQUFPbkUsUUFBUW9FLE1BQVIsQ0FBZUQsTUFBZixFQUF1QjtBQUMxQm5DLDhCQUFNRCxZQURvQjtBQUUxQnNDLHVDQUFlbEUsUUFBUUcsVUFBUixDQUFtQmdFO0FBRlIscUJBQXZCLENBQVA7QUFJSDtBQU53QyxhQUEzQixDQUFsQjs7QUFTQWhDLDRCQUFnQk0sS0FBaEIsQ0FBc0JSLEdBQXRCO0FBQ0gsU0FYRDtBQVlILEtBcEJEOztBQXNCQW1DLGdCQUFZZixVQUFaLEVBQXdCLEtBQXhCO0FBQ0gsQ0EzSEQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuXG5pbXBvcnQgZHJhd19iYXNlX21hcCBmcm9tICcuL2Jhc2VfbWFwJ1xuaW1wb3J0IHthZGRXTVNMYXllcn0gZnJvbSAnLi9oZWxwZXJzJztcblxuaW1wb3J0IHtBQ1RVQUxfUk9VVEVfQ09MT1IsIENJUkNMRV9DT0xPUiwgUExBTl9ST1VURV9DT0xPUn0gZnJvbSAnLi9jb25maWcnXG5cbi8qKlxuICogU2hvdyBzb21lIHBvcHVwIHRleHQgd2hlbiBhIGZlYXR1cmUgaXMgY2xpY2tlZCBvblxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXllclxuICovXG5leHBvcnQgY29uc3Qgb25GZWF0dXJlUG9pbnRDbGljayA9IChmZWF0dXJlLCBsYXllcikgPT4ge1xuICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgICB9XG5cbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcbn07XG5cbi8qKlxuICogU2hvdyBlYWNoIHBvaW50IGFzIGEgbWFya2VyXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHBhcmFtIGxhdGxuZ1xuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBjb25zdCBwb2ludFRvTGF5ZXIgPSAoZmVhdHVyZSwgbGF0bG5nKSA9PiB7XG4gICAgcmV0dXJuIGxlYWZsZXQuY2lyY2xlTWFya2VyKGxhdGxuZywge1xuICAgICAgICByYWRpdXM6IDUsXG4gICAgICAgIGZpbGxDb2xvcjogQ0lSQ0xFX0NPTE9SLFxuICAgICAgICBjb2xvcjogJyMwMDAnLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLjhcbiAgICB9KVxufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gb3B0c1xuICogQHByaXZhdGVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcblxuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcblxuICAgICAgICByb3V0ZV9wb2ludHM6IG51bGwsXG4gICAgICAgIHBsYW5uZWRfcm91dGVfbGluZTogbnVsbCxcbiAgICAgICAgYWN0dWFsX3JvdXRlX3BvaW50czogbnVsbCxcbiAgICAgICAgYWN0dWFsX3JvdXRlX2xpbmU6IG51bGwsXG4gICAgICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcbiAgICAgICAgbGl2ZV9tYXA6IGZhbHNlLFxuICAgICAgICBhaXJjcmFmdF9pY29uOiAnL2Fzc2V0cy9pbWcvYWNhcnMvYWlyY3JhZnQucG5nJyxcbiAgICAgICAgbWV0YXJfd21zOiB7XG4gICAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICAgICAgcGFyYW1zOiB7fVxuICAgICAgICB9LFxuICAgIH0sIG9wdHMpO1xuXG4gICAgY29uc3QgYWlyY3JhZnRJY29uID0gbGVhZmxldC5pY29uKHtcbiAgICAgICAgaWNvblVybDogb3B0cy5haXJjcmFmdF9pY29uLFxuICAgICAgICBpY29uU2l6ZTogWzQyLCA0Ml0sXG4gICAgICAgIGljb25BbmNob3I6IFsyMSwgMjFdLFxuICAgIH0pO1xuXG4gICAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XG4gICAgbGV0IGxheWVyTGl2ZUZsaWdodDtcblxuICAgIGlmIChvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XG4gICAgICAgIGFkZFdNU0xheWVyKG1hcCwgb3B0cy5tZXRhcl93bXMpO1xuICAgIH1cblxuICAgIGxldCBnZW9kZXNpY0xheWVyID0gbGVhZmxldC5nZW9kZXNpYyhbXSwge1xuICAgICAgICB3ZWlnaHQ6IDQsXG4gICAgICAgIG9wYWNpdHk6IDAuOSxcbiAgICAgICAgY29sb3I6IFBMQU5fUk9VVEVfQ09MT1IsXG4gICAgICAgIHN0ZXBzOiA1MCxcbiAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgfSkuYWRkVG8obWFwKTtcblxuICAgIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLnBsYW5uZWRfcm91dGVfbGluZSk7XG5cbiAgICB0cnkge1xuICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cblxuICAgIC8vIERyYXcgdGhlIHJvdXRlIHBvaW50cyBhZnRlclxuICAgIGlmIChvcHRzLnJvdXRlX3BvaW50cyAhPT0gbnVsbCkge1xuICAgICAgICBsZXQgcm91dGVfcG9pbnRzID0gbGVhZmxldC5nZW9KU09OKG9wdHMucm91dGVfcG9pbnRzLCB7XG4gICAgICAgICAgICBvbkVhY2hGZWF0dXJlOiBvbkZlYXR1cmVQb2ludENsaWNrLFxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICdjb2xvcic6IFBMQU5fUk9VVEVfQ09MT1IsXG4gICAgICAgICAgICAgICAgJ3dlaWdodCc6IDMsXG4gICAgICAgICAgICAgICAgJ29wYWNpdHknOiAwLjY1LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcm91dGVfcG9pbnRzLmFkZFRvKG1hcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZHJhdyB0aGUgYWN0dWFsIHJvdXRlXG4gICAgICovXG5cbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfbGluZSAhPT0gbnVsbCAmJiBvcHRzLmFjdHVhbF9yb3V0ZV9saW5lLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGdlb2Rlc2ljTGF5ZXIgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XG4gICAgICAgICAgICB3ZWlnaHQ6IDMsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjksXG4gICAgICAgICAgICBjb2xvcjogQUNUVUFMX1JPVVRFX0NPTE9SLFxuICAgICAgICAgICAgc3RlcHM6IDUwLFxuICAgICAgICAgICAgd3JhcDogZmFsc2UsXG4gICAgICAgIH0pLmFkZFRvKG1hcCk7XG5cbiAgICAgICAgZ2VvZGVzaWNMYXllci5nZW9Kc29uKG9wdHMuYWN0dWFsX3JvdXRlX2xpbmUpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCByb3V0ZV9wb2ludHMgPSBsZWFmbGV0Lmdlb0pTT04ob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzLCB7XG4gICAgICAgICAgICBvbkVhY2hGZWF0dXJlOiBvbkZlYXR1cmVQb2ludENsaWNrLFxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICdjb2xvcic6IEFDVFVBTF9ST1VURV9DT0xPUixcbiAgICAgICAgICAgICAgICAnd2VpZ2h0JzogMyxcbiAgICAgICAgICAgICAgICAnb3BhY2l0eSc6IDAuNjUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByb3V0ZV9wb2ludHMuYWRkVG8obWFwKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICovXG4gICAgY29uc3QgbGl2ZUZsaWdodCA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJpID0gb3B0cy5waXJlcF91cmk7XG4gICAgICAgIGNvbnN0IGxpdmVfcm91dGUgPSAkLmFqYXgoe1xuICAgICAgICAgICAgdXJsOiB1cmksXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgZXJyb3I6IGNvbnNvbGUubG9nXG4gICAgICAgIH0pO1xuXG4gICAgICAgICQud2hlbihsaXZlX3JvdXRlKS5kb25lKChyb3V0ZUpzb24pID0+IHtcbiAgICAgICAgICAgIGxheWVyTGl2ZUZsaWdodCA9IGxlYWZsZXQuZ2VvSlNPTihyb3V0ZUpzb24sIHtcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlYWZsZXQubWFya2VyKGxhdGxvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYWlyY3JhZnRJY29uLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGF5ZXJMaXZlRmxpZ2h0LmFkZFRvKG1hcClcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHNldEludGVydmFsKGxpdmVGbGlnaHQsIDEwMDAwKTtcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n");
+eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n\n\n/**\r\n * Show some popup text when a feature is clicked on\r\n * @param feature\r\n * @param layer\r\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\r\n * Show each point as a marker\r\n * @param feature\r\n * @param latlng\r\n * @returns {*}\r\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 5,\n fillColor: __WEBPACK_IMPORTED_MODULE_2__config__[\"b\" /* CIRCLE_COLOR */],\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\r\n *\r\n * @param opts\r\n * @private\r\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map',\n live_map: false,\n aircraft_icon: '/assets/img/acars/aircraft.png',\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var aircraftIcon = leaflet.icon({\n iconUrl: opts.aircraft_icon,\n iconSize: [42, 42],\n iconAnchor: [21, 21]\n });\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var layerLiveFlight = void 0;\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 4,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"c\" /* PLAN_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\r\n * draw the actual route\r\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 3,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_2__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 3,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n\n /**\r\n *\r\n */\n var liveFlight = function liveFlight() {\n var uri = opts.pirep_uri;\n var live_route = $.ajax({\n url: uri,\n dataType: 'json',\n error: console.log\n });\n\n $.when(live_route).done(function (routeJson) {\n layerLiveFlight = leaflet.geoJSON(routeJson, {\n pointToLayer: function pointToLayer(feature, latlon) {\n return leaflet.marker(latlon, {\n icon: aircraftIcon,\n rotationAngle: feature.properties.heading\n });\n }\n });\n\n layerLiveFlight.addTo(map);\n });\n };\n\n setInterval(liveFlight, 10000);\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJsaXZlX21hcCIsImFpcmNyYWZ0X2ljb24iLCJtZXRhcl93bXMiLCJ1cmwiLCJwYXJhbXMiLCJhaXJjcmFmdEljb24iLCJpY29uIiwiaWNvblVybCIsImljb25TaXplIiwiaWNvbkFuY2hvciIsIm1hcCIsImRyYXdfYmFzZV9tYXAiLCJsYXllckxpdmVGbGlnaHQiLCJhZGRXTVNMYXllciIsImdlb2Rlc2ljTGF5ZXIiLCJnZW9kZXNpYyIsInN0ZXBzIiwid3JhcCIsImFkZFRvIiwiZ2VvSnNvbiIsImZpdEJvdW5kcyIsImdldEJvdW5kcyIsImUiLCJjb25zb2xlIiwibG9nIiwiZ2VvSlNPTiIsIm9uRWFjaEZlYXR1cmUiLCJzdHlsZSIsImZlYXR1cmVzIiwibGVuZ3RoIiwibGl2ZUZsaWdodCIsInVyaSIsInBpcmVwX3VyaSIsImxpdmVfcm91dGUiLCIkIiwiYWpheCIsImRhdGFUeXBlIiwiZXJyb3IiLCJ3aGVuIiwiZG9uZSIsInJvdXRlSnNvbiIsImxhdGxvbiIsIm1hcmtlciIsInJvdGF0aW9uQW5nbGUiLCJoZWFkaW5nIiwic2V0SW50ZXJ2YWwiXSwibWFwcGluZ3Mi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QVUsVUFBRUksSUFBRixDQUFPTCxVQUFQLEVBQW1CTSxJQUFuQixDQUF3QixVQUFDQyxTQUFELEVBQWU7QUFDbkM1Qiw4QkFBa0J0QyxRQUFRbUQsT0FBUixDQUFnQmUsU0FBaEIsRUFBMkI7QUFDekN6RCw4QkFBYyxzQkFBVU4sT0FBVixFQUFtQmdFLE1BQW5CLEVBQTJCO0FBQ3JDLDJCQUFPbkUsUUFBUW9FLE1BQVIsQ0FBZUQsTUFBZixFQUF1QjtBQUMxQm5DLDhCQUFNRCxZQURvQjtBQUUxQnNDLHVDQUFlbEUsUUFBUUcsVUFBUixDQUFtQmdFO0FBRlIscUJBQXZCLENBQVA7QUFJSDtBQU53QyxhQUEzQixDQUFsQjs7QUFTQWhDLDRCQUFnQk0sS0FBaEIsQ0FBc0JSLEdBQXRCO0FBQ0gsU0FYRDtBQVlILEtBcEJEOztBQXNCQW1DLGdCQUFZZixVQUFaLEVBQXdCLEtBQXhCO0FBQ0gsQ0EzSEQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xyXG5cclxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcclxuaW1wb3J0IHthZGRXTVNMYXllcn0gZnJvbSAnLi9oZWxwZXJzJztcclxuXHJcbmltcG9ydCB7QUNUVUFMX1JPVVRFX0NPTE9SLCBDSVJDTEVfQ09MT1IsIFBMQU5fUk9VVEVfQ09MT1J9IGZyb20gJy4vY29uZmlnJ1xyXG5cclxuLyoqXHJcbiAqIFNob3cgc29tZSBwb3B1cCB0ZXh0IHdoZW4gYSBmZWF0dXJlIGlzIGNsaWNrZWQgb25cclxuICogQHBhcmFtIGZlYXR1cmVcclxuICogQHBhcmFtIGxheWVyXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb25GZWF0dXJlUG9pbnRDbGljayA9IChmZWF0dXJlLCBsYXllcikgPT4ge1xyXG4gICAgbGV0IHBvcHVwX2h0bWwgPSAnJztcclxuICAgIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwKSB7XHJcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcclxuICAgIH1cclxuXHJcbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcclxufTtcclxuXHJcbi8qKlxyXG4gKiBTaG93IGVhY2ggcG9pbnQgYXMgYSBtYXJrZXJcclxuICogQHBhcmFtIGZlYXR1cmVcclxuICogQHBhcmFtIGxhdGxuZ1xyXG4gKiBAcmV0dXJucyB7Kn1cclxuICovXHJcbmV4cG9ydCBjb25zdCBwb2ludFRvTGF5ZXIgPSAoZmVhdHVyZSwgbGF0bG5nKSA9PiB7XHJcbiAgICByZXR1cm4gbGVhZmxldC5jaXJjbGVNYXJrZXIobGF0bG5nLCB7XHJcbiAgICAgICAgcmFkaXVzOiA1LFxyXG4gICAgICAgIGZpbGxDb2xvcjogQ0lSQ0xFX0NPTE9SLFxyXG4gICAgICAgIGNvbG9yOiAnIzAwMCcsXHJcbiAgICAgICAgd2VpZ2h0OiAxLFxyXG4gICAgICAgIG9wYWNpdHk6IDEsXHJcbiAgICAgICAgZmlsbE9wYWNpdHk6IDAuOFxyXG4gICAgfSlcclxufVxyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBvcHRzXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xyXG5cclxuICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcclxuXHJcbiAgICAgICAgcm91dGVfcG9pbnRzOiBudWxsLFxyXG4gICAgICAgIHBsYW5uZWRfcm91dGVfbGluZTogbnVsbCxcclxuICAgICAgICBhY3R1YWxfcm91dGVfcG9pbnRzOiBudWxsLFxyXG4gICAgICAgIGFjdHVhbF9yb3V0ZV9saW5lOiBudWxsLFxyXG4gICAgICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcclxuICAgICAgICBsaXZlX21hcDogZmFsc2UsXHJcbiAgICAgICAgYWlyY3JhZnRfaWNvbjogJy9hc3NldHMvaW1nL2FjYXJzL2FpcmNyYWZ0LnBuZycsXHJcbiAgICAgICAgbWV0YXJfd21zOiB7XHJcbiAgICAgICAgICAgIHVybDogJycsXHJcbiAgICAgICAgICAgIHBhcmFtczoge31cclxuICAgICAgICB9LFxyXG4gICAgfSwgb3B0cyk7XHJcblxyXG4gICAgY29uc3QgYWlyY3JhZnRJY29uID0gbGVhZmxldC5pY29uKHtcclxuICAgICAgICBpY29uVXJsOiBvcHRzLmFpcmNyYWZ0X2ljb24sXHJcbiAgICAgICAgaWNvblNpemU6IFs0MiwgNDJdLFxyXG4gICAgICAgIGljb25BbmNob3I6IFsyMSwgMjFdLFxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XHJcbiAgICBsZXQgbGF5ZXJMaXZlRmxpZ2h0O1xyXG5cclxuICAgIGlmIChvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XHJcbiAgICAgICAgYWRkV01TTGF5ZXIobWFwLCBvcHRzLm1ldGFyX3dtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGdlb2Rlc2ljTGF5ZXIgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XHJcbiAgICAgICAgd2VpZ2h0OiA0LFxyXG4gICAgICAgIG9wYWNpdHk6IDAuOSxcclxuICAgICAgICBjb2xvcjogUExBTl9ST1VURV9DT0xPUixcclxuICAgICAgICBzdGVwczogNTAsXHJcbiAgICAgICAgd3JhcDogZmFsc2UsXHJcbiAgICB9KS5hZGRUbyhtYXApO1xyXG5cclxuICAgIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLnBsYW5uZWRfcm91dGVfbGluZSk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZSlcclxuICAgIH1cclxuXHJcbiAgICAvLyBEcmF3IHRoZSByb3V0ZSBwb2ludHMgYWZ0ZXJcclxuICAgIGlmIChvcHRzLnJvdXRlX3BvaW50cyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCByb3V0ZV9wb2ludHMgPSBsZWFmbGV0Lmdlb0pTT04ob3B0cy5yb3V0ZV9wb2ludHMsIHtcclxuICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcclxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAnY29sb3InOiBQTEFOX1JPVVRFX0NPTE9SLFxyXG4gICAgICAgICAgICAgICAgJ3dlaWdodCc6IDMsXHJcbiAgICAgICAgICAgICAgICAnb3BhY2l0eSc6IDAuNjUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJvdXRlX3BvaW50cy5hZGRUbyhtYXApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZHJhdyB0aGUgYWN0dWFsIHJvdXRlXHJcbiAgICAgKi9cclxuXHJcbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfbGluZSAhPT0gbnVsbCAmJiBvcHRzLmFjdHVhbF9yb3V0ZV9saW5lLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgZ2VvZGVzaWNMYXllciA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcclxuICAgICAgICAgICAgd2VpZ2h0OiAzLFxyXG4gICAgICAgICAgICBvcGFjaXR5OiAwLjksXHJcbiAgICAgICAgICAgIGNvbG9yOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXHJcbiAgICAgICAgICAgIHN0ZXBzOiA1MCxcclxuICAgICAgICAgICAgd3JhcDogZmFsc2UsXHJcbiAgICAgICAgfSkuYWRkVG8obWFwKTtcclxuXHJcbiAgICAgICAgZ2VvZGVzaWNMYXllci5nZW9Kc29uKG9wdHMuYWN0dWFsX3JvdXRlX2xpbmUpO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbGV0IHJvdXRlX3BvaW50cyA9IGxlYWZsZXQuZ2VvSlNPTihvcHRzLmFjdHVhbF9yb3V0ZV9wb2ludHMsIHtcclxuICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcclxuICAgICAgICAgICAgcG9pbnRUb0xheWVyOiBwb2ludFRvTGF5ZXIsXHJcbiAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAnY29sb3InOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXHJcbiAgICAgICAgICAgICAgICAnd2VpZ2h0JzogMyxcclxuICAgICAgICAgICAgICAgICdvcGFjaXR5JzogMC42NSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcm91dGVfcG9pbnRzLmFkZFRvKG1hcClcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IGxpdmVGbGlnaHQgPSAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXJpID0gb3B0cy5waXJlcF91cmk7XHJcbiAgICAgICAgY29uc3QgbGl2ZV9yb3V0ZSA9ICQuYWpheCh7XHJcbiAgICAgICAgICAgIHVybDogdXJpLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgICBlcnJvcjogY29uc29sZS5sb2dcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgJC53aGVuKGxpdmVfcm91dGUpLmRvbmUoKHJvdXRlSnNvbikgPT4ge1xyXG4gICAgICAgICAgICBsYXllckxpdmVGbGlnaHQgPSBsZWFmbGV0Lmdlb0pTT04ocm91dGVKc29uLCB7XHJcbiAgICAgICAgICAgICAgICBwb2ludFRvTGF5ZXI6IGZ1bmN0aW9uIChmZWF0dXJlLCBsYXRsb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVhZmxldC5tYXJrZXIobGF0bG9uLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGFpcmNyYWZ0SWNvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb25BbmdsZTogZmVhdHVyZS5wcm9wZXJ0aWVzLmhlYWRpbmdcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGxheWVyTGl2ZUZsaWdodC5hZGRUbyhtYXApXHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHNldEludGVydmFsKGxpdmVGbGlnaHQsIDEwMDAwKTtcclxufTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvcm91dGVfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n");
/***/ }),
diff --git a/public/assets/installer/css/vendor.css b/public/assets/installer/css/vendor.css
index 73fcd597..4afe71a9 100644
--- a/public/assets/installer/css/vendor.css
+++ b/public/assets/installer/css/vendor.css
@@ -6799,31 +6799,31 @@ button.close {
}
/*# sourceMappingURL=bootstrap.css.map */
-/*!
-
- =========================================================
- * Now-ui-kit - v1.0.0
- =========================================================
-
- * Product Page: http://www.creative-tim.com/product/now-ui-kit
- * Copyright 2017 Creative Tim (http://www.creative-tim.com)
- * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md)
-
- * Designed by www.invisionapp.com Coded by www.creative-tim.com
-
- =========================================================
-
- * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
+/*!
+
+ =========================================================
+ * Now-ui-kit - v1.0.0
+ =========================================================
+
+ * Product Page: http://www.creative-tim.com/product/now-ui-kit
+ * Copyright 2017 Creative Tim (http://www.creative-tim.com)
+ * Licensed under MIT (https://github.com/creativetimofficial/now-ui-kit/blob/master/LICENSE.md)
+
+ * Designed by www.invisionapp.com Coded by www.creative-tim.com
+
+ =========================================================
+
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
*/
/* brand Colors */
/* light colors */
-/* ========================================================================
- * bootstrap-switch - v3.3.2
- * http://www.bootstrap-switch.org
- * ========================================================================
- * Copyright 2012-2013 Mattia Larentis
- * http://www.apache.org/licenses/LICENSE-2.0
+/* ========================================================================
+ * bootstrap-switch - v3.3.2
+ * http://www.bootstrap-switch.org
+ * ========================================================================
+ * Copyright 2012-2013 Mattia Larentis
+ * http://www.apache.org/licenses/LICENSE-2.0
*/
.bootstrap-switch {
display: inline-block;
@@ -7094,9 +7094,9 @@ button.close {
}
/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */
-/* Functional styling;
- * These styles are required for noUiSlider to function.
- * You don't need to change these rules to apply your design.
+/* Functional styling;
+ * These styles are required for noUiSlider to function.
+ * You don't need to change these rules to apply your design.
*/
.noUi-target,
.noUi-target * {
@@ -7154,8 +7154,8 @@ button.close {
cursor: inherit !important;
}
-/* Painting and performance;
- * Browsers can paint handles in their own layer.
+/* Painting and performance;
+ * Browsers can paint handles in their own layer.
*/
.noUi-base,
.noUi-handle {
@@ -7163,7 +7163,7 @@ button.close {
transform: translate3d(0, 0, 0);
}
-/* Slider size and handle placement;
+/* Slider size and handle placement;
*/
.noUi-horizontal {
height: 1px;
@@ -7192,7 +7192,7 @@ button.close {
top: -17px;
}
-/* Styling;
+/* Styling;
*/
.noUi-target {
background-color: rgba(182, 182, 182, 0.3);
@@ -7206,7 +7206,7 @@ button.close {
transition: background 450ms;
}
-/* Handles and cursors;
+/* Handles and cursors;
*/
.noUi-draggable {
cursor: ew-resize;
@@ -7220,8 +7220,8 @@ button.close {
border-radius: 3px;
background: #FFF;
cursor: default;
- -webkit-box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;
- box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB;
+ -webkit-box-shadow: inset 0 0 1px #FFF,
inset 0 1px 7px #EBEBEB,
0 3px 6px -3px #BBB;
+ box-shadow: inset 0 0 1px #FFF,
inset 0 1px 7px #EBEBEB,
0 3px 6px -3px #BBB;
-webkit-transition: 300ms ease 0s;
-moz-transition: 300ms ease 0s;
-ms-transition: 300ms ease 0s;
@@ -7234,7 +7234,7 @@ button.close {
transform: scale3d(1.5, 1.5, 1);
}
-/* Disabled state;
+/* Disabled state;
*/
[disabled] .noUi-connect {
background: #B8B8B8;
@@ -7246,8 +7246,8 @@ button.close {
cursor: not-allowed;
}
-/* Base;
- *
+/* Base;
+ *
*/
.noUi-pips,
.noUi-pips * {
@@ -7260,8 +7260,8 @@ button.close {
color: #999;
}
-/* Values;
- *
+/* Values;
+ *
*/
.noUi-value {
position: absolute;
@@ -7273,8 +7273,8 @@ button.close {
font-size: 10px;
}
-/* Markings;
- *
+/* Markings;
+ *
*/
.noUi-marker {
position: absolute;
@@ -7289,8 +7289,8 @@ button.close {
background: #AAA;
}
-/* Horizontal layout;
- *
+/* Horizontal layout;
+ *
*/
.noUi-pips-horizontal {
padding: 10px 0;
@@ -7319,8 +7319,8 @@ button.close {
height: 15px;
}
-/* Vertical layout;
- *
+/* Vertical layout;
+ *
*/
.noUi-pips-vertical {
padding: 0 10px;
@@ -7446,10 +7446,10 @@ button.close {
background-color: #FF3636;
}
-/*!
- * Datepicker for Bootstrap v1.7.0-dev (https://github.com/uxsolutions/bootstrap-datepicker)
- *
- * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
+/*!
+ * Datepicker for Bootstrap v1.7.0-dev (https://github.com/uxsolutions/bootstrap-datepicker)
+ *
+ * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/
.datepicker {
padding: 8px 6px;
@@ -8997,17 +8997,17 @@ fieldset[disabled]
background-color: #E3E3E3;
}
-/*.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
- border-right: 0 none;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child) {
- border-left: 0 none;
+/*.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-right: 0 none;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+ border-left: 0 none;
}*/
.form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control {
background-color: #E3E3E3;
@@ -10554,12 +10554,12 @@ img {
box-shadow: 0px 5px 25px 0px rgba(0, 0, 0, 0.2);
}
-/* --------------------------------
-
-Nucleo Outline Web Font - nucleoapp.com/
-License - nucleoapp.com/license/
-Created using IcoMoon - icomoon.io
-
+/* --------------------------------
+
+Nucleo Outline Web Font - nucleoapp.com/
+License - nucleoapp.com/license/
+Created using IcoMoon - icomoon.io
+
-------------------------------- */
@font-face {
font-family: 'Nucleo Outline';
@@ -10569,8 +10569,8 @@ Created using IcoMoon - icomoon.io
font-style: normal;
}
-/*------------------------
- base class definition
+/*------------------------
+ base class definition
-------------------------*/
.now-ui-icons {
display: inline-block;
@@ -10583,11 +10583,11 @@ Created using IcoMoon - icomoon.io
-moz-osx-font-smoothing: grayscale;
}
-/*------------------------
- change icon size
+/*------------------------
+ change icon size
-------------------------*/
-/*----------------------------------
- add a square/circle background
+/*----------------------------------
+ add a square/circle background
-----------------------------------*/
.now-ui-icons.circle {
padding: 0.33333333em;
@@ -10599,8 +10599,8 @@ Created using IcoMoon - icomoon.io
border-radius: 50%;
}
-/*------------------------
- list icons
+/*------------------------
+ list icons
-------------------------*/
.nc-icon-ul {
padding-left: 0;
@@ -10624,8 +10624,8 @@ Created using IcoMoon - icomoon.io
left: -1.9047619em;
}
-/*------------------------
- spinning icons
+/*------------------------
+ spinning icons
-------------------------*/
.now-ui-icons.spin {
-webkit-animation: nc-icon-spin 2s infinite linear;
@@ -10652,11 +10652,11 @@ Created using IcoMoon - icomoon.io
}
}
-/*------------------------
- rotated/flipped icons
+/*------------------------
+ rotated/flipped icons
-------------------------*/
-/*------------------------
- font icons
+/*------------------------
+ font icons
-------------------------*/
.now-ui-icons.ui-1_check:before {
content: "\EA22";
@@ -12467,21 +12467,21 @@ Created using IcoMoon - icomoon.io
}
}
-/*.separator{
- content: "Separator";
- color: #FFFFFF;
- display: block;
- width: 100%;
- padding: 20px;
-}
-.separator-line{
- background-color: #EEE;
- height: 1px;
- width: 100%;
- display: block;
-}
-.separator.separator-gray{
- background-color: #EEEEEE;
+/*.separator{
+ content: "Separator";
+ color: #FFFFFF;
+ display: block;
+ width: 100%;
+ padding: 20px;
+}
+.separator-line{
+ background-color: #EEE;
+ height: 1px;
+ width: 100%;
+ display: block;
+}
+.separator.separator-gray{
+ background-color: #EEEEEE;
}*/
.social-buttons-demo .btn {
margin-right: 5px;
diff --git a/public/assets/installer/js/app.js b/public/assets/installer/js/app.js
index 45ee171a..e87261eb 100644
--- a/public/assets/installer/js/app.js
+++ b/public/assets/installer/js/app.js
@@ -302,21 +302,21 @@ eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n
/***/ "./resources/js/bootstrap.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n * Bootstrap any Javascript libraries required\n */\n\nwindow.axios = __webpack_require__(\"./node_modules/axios/index.js\");\n\n/**\n * Container for phpVMS specific functions\n */\nwindow.phpvms = {};\n\n/**\n * Configure Axios with both the csrf token and the API key\n */\n\nvar base_url = document.head.querySelector('meta[name=\"base-url\"]');\nif (base_url) {\n window.axios.default.baseURL = base_url;\n}\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\nvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n /*window.jquery.ajaxSetup({\n 'X-CSRF-TOKEN': token.content\n })*/\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\nvar api_key = document.head.querySelector('meta[name=\"api-key\"]');\nif (api_key) {\n window.axios.defaults.headers.common['x-api-key'] = api_key.content;\n window.PHPVMS_USER_API_KEY = api_key.content;\n} else {\n window.PHPVMS_USER_API_KEY = false;\n console.error('API Key not found!');\n}\n\n__webpack_require__(\"./resources/js/common.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzBlNTgiXSwibmFtZXMiOlsid2luZG93IiwiYXhpb3MiLCJyZXF1aXJlIiwicGhwdm1zIiwiYmFzZV91cmwiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdCIsImJhc2VVUkwiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsImNvbnRlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhcGlfa2V5IiwiUEhQVk1TX1VTRVJfQVBJX0tFWSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQUEsT0FBT0MsS0FBUCxHQUFlLG1CQUFBQyxDQUFRLCtCQUFSLENBQWY7O0FBRUE7OztBQUdBRixPQUFPRyxNQUFQLEdBQWdCLEVBQWhCOztBQUVBOzs7O0FBSUEsSUFBTUMsV0FBV0MsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHVCQUE1QixDQUFqQjtBQUNBLElBQUdILFFBQUgsRUFBYTtBQUNYSixTQUFPQyxLQUFQLENBQWFPLE9BQWIsQ0FBcUJDLE9BQXJCLEdBQStCTCxRQUEvQjtBQUNEOztBQUVESixPQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxrQkFBckMsSUFBMkQsZ0JBQTNEO0FBQ0EsSUFBTUMsUUFBUVIsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHlCQUE1QixDQUFkOztBQUVBLElBQUlNLEtBQUosRUFBVztBQUNUYixTQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxjQUFyQyxJQUF1REMsTUFBTUMsT0FBN0Q7QUFDQTs7O0FBR0QsQ0FMRCxNQUtPO0FBQ0xDLFVBQVFDLEtBQVIsQ0FBYyx1RUFBZDtBQUNEOztBQUVELElBQU1DLFVBQVVaLFNBQVNDLElBQVQsQ0FBY0MsYUFBZCxDQUE0QixzQkFBNUIsQ0FBaEI7QUFDQSxJQUFJVSxPQUFKLEVBQWE7QUFDWGpCLFNBQU9DLEtBQVAsQ0FBYVMsUUFBYixDQUFzQkMsT0FBdEIsQ0FBOEJDLE1BQTlCLENBQXFDLFdBQXJDLElBQW9ESyxRQUFRSCxPQUE1RDtBQUNBZCxTQUFPa0IsbUJBQVAsR0FBNkJELFFBQVFILE9BQXJDO0FBQ0QsQ0FIRCxNQUdPO0FBQ0xkLFNBQU9rQixtQkFBUCxHQUE2QixLQUE3QjtBQUNBSCxVQUFRQyxLQUFSLENBQWMsb0JBQWQ7QUFDRDs7QUFFRCxtQkFBQWQsQ0FBUSwwQkFBUiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJvb3RzdHJhcCBhbnkgSmF2YXNjcmlwdCBsaWJyYXJpZXMgcmVxdWlyZWRcbiAqL1xuXG53aW5kb3cuYXhpb3MgPSByZXF1aXJlKCdheGlvcycpO1xuXG4vKipcbiAqIENvbnRhaW5lciBmb3IgcGhwVk1TIHNwZWNpZmljIGZ1bmN0aW9uc1xuICovXG53aW5kb3cucGhwdm1zID0ge307XG5cbi8qKlxuICogQ29uZmlndXJlIEF4aW9zIHdpdGggYm90aCB0aGUgY3NyZiB0b2tlbiBhbmQgdGhlIEFQSSBrZXlcbiAqL1xuXG5jb25zdCBiYXNlX3VybCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiYmFzZS11cmxcIl0nKTtcbmlmKGJhc2VfdXJsKSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0LmJhc2VVUkwgPSBiYXNlX3VybDtcbn1cblxud2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWydYLVJlcXVlc3RlZC1XaXRoJ10gPSAnWE1MSHR0cFJlcXVlc3QnO1xuY29uc3QgdG9rZW4gPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcblxuaWYgKHRva2VuKSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSB0b2tlbi5jb250ZW50XG4gIC8qd2luZG93LmpxdWVyeS5hamF4U2V0dXAoe1xuICAgICdYLUNTUkYtVE9LRU4nOiB0b2tlbi5jb250ZW50XG4gIH0pKi9cbn0gZWxzZSB7XG4gIGNvbnNvbGUuZXJyb3IoJ0NTUkYgdG9rZW4gbm90IGZvdW5kOiBodHRwczovL2xhcmF2ZWwuY29tL2RvY3MvY3NyZiNjc3JmLXgtY3NyZi10b2tlbicpXG59XG5cbmNvbnN0IGFwaV9rZXkgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImFwaS1rZXlcIl0nKTtcbmlmIChhcGlfa2V5KSB7XG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsneC1hcGkta2V5J10gPSBhcGlfa2V5LmNvbnRlbnQ7XG4gIHdpbmRvdy5QSFBWTVNfVVNFUl9BUElfS0VZID0gYXBpX2tleS5jb250ZW50XG59IGVsc2Uge1xuICB3aW5kb3cuUEhQVk1TX1VTRVJfQVBJX0tFWSA9IGZhbHNlO1xuICBjb25zb2xlLmVycm9yKCdBUEkgS2V5IG5vdCBmb3VuZCEnKVxufVxuXG5yZXF1aXJlKCcuL2NvbW1vbicpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
+eval("/**\r\n * Bootstrap any Javascript libraries required\r\n */\n\nwindow.axios = __webpack_require__(\"./node_modules/axios/index.js\");\n\n/**\r\n * Container for phpVMS specific functions\r\n */\nwindow.phpvms = {};\n\n/**\r\n * Configure Axios with both the csrf token and the API key\r\n */\n\nvar base_url = document.head.querySelector('meta[name=\"base-url\"]');\nif (base_url) {\n window.axios.default.baseURL = base_url;\n}\n\nwindow.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\nvar token = document.head.querySelector('meta[name=\"csrf-token\"]');\n\nif (token) {\n window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;\n /*window.jquery.ajaxSetup({\r\n 'X-CSRF-TOKEN': token.content\r\n })*/\n} else {\n console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');\n}\n\nvar api_key = document.head.querySelector('meta[name=\"api-key\"]');\nif (api_key) {\n window.axios.defaults.headers.common['x-api-key'] = api_key.content;\n window.PHPVMS_USER_API_KEY = api_key.content;\n} else {\n window.PHPVMS_USER_API_KEY = false;\n console.error('API Key not found!');\n}\n\n__webpack_require__(\"./resources/js/common.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvYm9vdHN0cmFwLmpzPzBlNTgiXSwibmFtZXMiOlsid2luZG93IiwiYXhpb3MiLCJyZXF1aXJlIiwicGhwdm1zIiwiYmFzZV91cmwiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwiZGVmYXVsdCIsImJhc2VVUkwiLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsImNvbnRlbnQiLCJjb25zb2xlIiwiZXJyb3IiLCJhcGlfa2V5IiwiUEhQVk1TX1VTRVJfQVBJX0tFWSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQUEsT0FBT0MsS0FBUCxHQUFlLG1CQUFBQyxDQUFRLCtCQUFSLENBQWY7O0FBRUE7OztBQUdBRixPQUFPRyxNQUFQLEdBQWdCLEVBQWhCOztBQUVBOzs7O0FBSUEsSUFBTUMsV0FBV0MsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHVCQUE1QixDQUFqQjtBQUNBLElBQUdILFFBQUgsRUFBYTtBQUNYSixTQUFPQyxLQUFQLENBQWFPLE9BQWIsQ0FBcUJDLE9BQXJCLEdBQStCTCxRQUEvQjtBQUNEOztBQUVESixPQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxrQkFBckMsSUFBMkQsZ0JBQTNEO0FBQ0EsSUFBTUMsUUFBUVIsU0FBU0MsSUFBVCxDQUFjQyxhQUFkLENBQTRCLHlCQUE1QixDQUFkOztBQUVBLElBQUlNLEtBQUosRUFBVztBQUNUYixTQUFPQyxLQUFQLENBQWFTLFFBQWIsQ0FBc0JDLE9BQXRCLENBQThCQyxNQUE5QixDQUFxQyxjQUFyQyxJQUF1REMsTUFBTUMsT0FBN0Q7QUFDQTs7O0FBR0QsQ0FMRCxNQUtPO0FBQ0xDLFVBQVFDLEtBQVIsQ0FBYyx1RUFBZDtBQUNEOztBQUVELElBQU1DLFVBQVVaLFNBQVNDLElBQVQsQ0FBY0MsYUFBZCxDQUE0QixzQkFBNUIsQ0FBaEI7QUFDQSxJQUFJVSxPQUFKLEVBQWE7QUFDWGpCLFNBQU9DLEtBQVAsQ0FBYVMsUUFBYixDQUFzQkMsT0FBdEIsQ0FBOEJDLE1BQTlCLENBQXFDLFdBQXJDLElBQW9ESyxRQUFRSCxPQUE1RDtBQUNBZCxTQUFPa0IsbUJBQVAsR0FBNkJELFFBQVFILE9BQXJDO0FBQ0QsQ0FIRCxNQUdPO0FBQ0xkLFNBQU9rQixtQkFBUCxHQUE2QixLQUE3QjtBQUNBSCxVQUFRQyxLQUFSLENBQWMsb0JBQWQ7QUFDRDs7QUFFRCxtQkFBQWQsQ0FBUSwwQkFBUiIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9ib290c3RyYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQm9vdHN0cmFwIGFueSBKYXZhc2NyaXB0IGxpYnJhcmllcyByZXF1aXJlZFxyXG4gKi9cclxuXHJcbndpbmRvdy5heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XHJcblxyXG4vKipcclxuICogQ29udGFpbmVyIGZvciBwaHBWTVMgc3BlY2lmaWMgZnVuY3Rpb25zXHJcbiAqL1xyXG53aW5kb3cucGhwdm1zID0ge307XHJcblxyXG4vKipcclxuICogQ29uZmlndXJlIEF4aW9zIHdpdGggYm90aCB0aGUgY3NyZiB0b2tlbiBhbmQgdGhlIEFQSSBrZXlcclxuICovXHJcblxyXG5jb25zdCBiYXNlX3VybCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignbWV0YVtuYW1lPVwiYmFzZS11cmxcIl0nKTtcclxuaWYoYmFzZV91cmwpIHtcclxuICB3aW5kb3cuYXhpb3MuZGVmYXVsdC5iYXNlVVJMID0gYmFzZV91cmw7XHJcbn1cclxuXHJcbndpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1SZXF1ZXN0ZWQtV2l0aCddID0gJ1hNTEh0dHBSZXF1ZXN0JztcclxuY29uc3QgdG9rZW4gPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cImNzcmYtdG9rZW5cIl0nKTtcclxuXHJcbmlmICh0b2tlbikge1xyXG4gIHdpbmRvdy5heGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnWC1DU1JGLVRPS0VOJ10gPSB0b2tlbi5jb250ZW50XHJcbiAgLyp3aW5kb3cuanF1ZXJ5LmFqYXhTZXR1cCh7XHJcbiAgICAnWC1DU1JGLVRPS0VOJzogdG9rZW4uY29udGVudFxyXG4gIH0pKi9cclxufSBlbHNlIHtcclxuICBjb25zb2xlLmVycm9yKCdDU1JGIHRva2VuIG5vdCBmb3VuZDogaHR0cHM6Ly9sYXJhdmVsLmNvbS9kb2NzL2NzcmYjY3NyZi14LWNzcmYtdG9rZW4nKVxyXG59XHJcblxyXG5jb25zdCBhcGlfa2V5ID0gZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCdtZXRhW25hbWU9XCJhcGkta2V5XCJdJyk7XHJcbmlmIChhcGlfa2V5KSB7XHJcbiAgd2luZG93LmF4aW9zLmRlZmF1bHRzLmhlYWRlcnMuY29tbW9uWyd4LWFwaS1rZXknXSA9IGFwaV9rZXkuY29udGVudDtcclxuICB3aW5kb3cuUEhQVk1TX1VTRVJfQVBJX0tFWSA9IGFwaV9rZXkuY29udGVudFxyXG59IGVsc2Uge1xyXG4gIHdpbmRvdy5QSFBWTVNfVVNFUl9BUElfS0VZID0gZmFsc2U7XHJcbiAgY29uc29sZS5lcnJvcignQVBJIEtleSBub3QgZm91bmQhJylcclxufVxyXG5cclxucmVxdWlyZSgnLi9jb21tb24nKTtcclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL2Jvb3RzdHJhcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/bootstrap.js\n");
/***/ }),
/***/ "./resources/js/common.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n *\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n/**\n * Generic formatter to prepend\n * @param value\n * @param prepend\n * @returns {*}\n */\nrivets.formatters.prepend = function (value, prepend) {\n return prepend + value;\n};\n\n/**\n * Format minutes into HHh MMm\n * @param value\n * @returns {string}\n */\nrivets.formatters.time_hm = function (value) {\n var hours = Math.floor(value / 60);\n var mins = value % 60;\n return hours + 'h ' + mins + 'm';\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.gt = function (value, len) {\n return value.length > len;\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.lt = function (value, len) {\n return value.length < len;\n};\n\n/**\n *\n * @param value\n * @param len\n * @returns {boolean}\n */\nrivets.formatters.eq = function (value, len) {\n return value.length > len;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzPzVmZDUiXSwibmFtZXMiOlsicml2ZXRzIiwicmVxdWlyZSIsImZvcm1hdHRlcnMiLCJwcmVwZW5kIiwidmFsdWUiLCJ0aW1lX2htIiwiaG91cnMiLCJNYXRoIiwiZmxvb3IiLCJtaW5zIiwiZ3QiLCJsZW4iLCJsZW5ndGgiLCJsdCIsImVxIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQU1BLFNBQVMsbUJBQUFDLENBQVEsc0NBQVIsQ0FBZjs7QUFFQTs7Ozs7O0FBTUFELE9BQU9FLFVBQVAsQ0FBa0JDLE9BQWxCLEdBQTRCLFVBQVVDLEtBQVYsRUFBaUJELE9BQWpCLEVBQTBCO0FBQ2xELFNBQU9BLFVBQVVDLEtBQWpCO0FBQ0gsQ0FGRDs7QUFJQTs7Ozs7QUFLQUosT0FBT0UsVUFBUCxDQUFrQkcsT0FBbEIsR0FBNEIsVUFBU0QsS0FBVCxFQUFnQjtBQUN4QyxNQUFNRSxRQUFRQyxLQUFLQyxLQUFMLENBQVdKLFFBQVEsRUFBbkIsQ0FBZDtBQUNBLE1BQU1LLE9BQU9MLFFBQVEsRUFBckI7QUFDQSxTQUFPRSxRQUFRLElBQVIsR0FBZUcsSUFBZixHQUFzQixHQUE3QjtBQUNILENBSkQ7O0FBTUE7Ozs7OztBQU1BVCxPQUFPRSxVQUFQLENBQWtCUSxFQUFsQixHQUF1QixVQUFDTixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCVyxFQUFsQixHQUF1QixVQUFDVCxLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCWSxFQUFsQixHQUF1QixVQUFDVixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICovXG5cbmNvbnN0IHJpdmV0cyA9IHJlcXVpcmUoJ3JpdmV0cycpO1xuXG4vKipcbiAqIEdlbmVyaWMgZm9ybWF0dGVyIHRvIHByZXBlbmRcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIHByZXBlbmRcbiAqIEByZXR1cm5zIHsqfVxuICovXG5yaXZldHMuZm9ybWF0dGVycy5wcmVwZW5kID0gZnVuY3Rpb24gKHZhbHVlLCBwcmVwZW5kKSB7XG4gICAgcmV0dXJuIHByZXBlbmQgKyB2YWx1ZVxufTtcblxuLyoqXG4gKiBGb3JtYXQgbWludXRlcyBpbnRvIEhIaCBNTW1cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xucml2ZXRzLmZvcm1hdHRlcnMudGltZV9obSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHZhbHVlIC8gNjApO1xuICAgIGNvbnN0IG1pbnMgPSB2YWx1ZSAlIDYwO1xuICAgIHJldHVybiBob3VycyArICdoICcgKyBtaW5zICsgJ20nO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gbGVuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xucml2ZXRzLmZvcm1hdHRlcnMuZ3QgPSAodmFsdWUsIGxlbikgPT4ge1xuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBsZW47XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBsZW5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5yaXZldHMuZm9ybWF0dGVycy5sdCA9ICh2YWx1ZSwgbGVuKSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA8IGxlbjtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIGxlblxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbnJpdmV0cy5mb3JtYXR0ZXJzLmVxID0gKHZhbHVlLCBsZW4pID0+IHtcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gbGVuO1xufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9jb21tb24uanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/common.js\n");
+eval("/**\r\n *\r\n */\n\nvar rivets = __webpack_require__(\"./node_modules/rivets/dist/rivets.js\");\n\n/**\r\n * Generic formatter to prepend\r\n * @param value\r\n * @param prepend\r\n * @returns {*}\r\n */\nrivets.formatters.prepend = function (value, prepend) {\n return prepend + value;\n};\n\n/**\r\n * Format minutes into HHh MMm\r\n * @param value\r\n * @returns {string}\r\n */\nrivets.formatters.time_hm = function (value) {\n var hours = Math.floor(value / 60);\n var mins = value % 60;\n return hours + 'h ' + mins + 'm';\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.gt = function (value, len) {\n return value.length > len;\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.lt = function (value, len) {\n return value.length < len;\n};\n\n/**\r\n *\r\n * @param value\r\n * @param len\r\n * @returns {boolean}\r\n */\nrivets.formatters.eq = function (value, len) {\n return value.length > len;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzPzVmZDUiXSwibmFtZXMiOlsicml2ZXRzIiwicmVxdWlyZSIsImZvcm1hdHRlcnMiLCJwcmVwZW5kIiwidmFsdWUiLCJ0aW1lX2htIiwiaG91cnMiLCJNYXRoIiwiZmxvb3IiLCJtaW5zIiwiZ3QiLCJsZW4iLCJsZW5ndGgiLCJsdCIsImVxIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLElBQU1BLFNBQVMsbUJBQUFDLENBQVEsc0NBQVIsQ0FBZjs7QUFFQTs7Ozs7O0FBTUFELE9BQU9FLFVBQVAsQ0FBa0JDLE9BQWxCLEdBQTRCLFVBQVVDLEtBQVYsRUFBaUJELE9BQWpCLEVBQTBCO0FBQ2xELFNBQU9BLFVBQVVDLEtBQWpCO0FBQ0gsQ0FGRDs7QUFJQTs7Ozs7QUFLQUosT0FBT0UsVUFBUCxDQUFrQkcsT0FBbEIsR0FBNEIsVUFBU0QsS0FBVCxFQUFnQjtBQUN4QyxNQUFNRSxRQUFRQyxLQUFLQyxLQUFMLENBQVdKLFFBQVEsRUFBbkIsQ0FBZDtBQUNBLE1BQU1LLE9BQU9MLFFBQVEsRUFBckI7QUFDQSxTQUFPRSxRQUFRLElBQVIsR0FBZUcsSUFBZixHQUFzQixHQUE3QjtBQUNILENBSkQ7O0FBTUE7Ozs7OztBQU1BVCxPQUFPRSxVQUFQLENBQWtCUSxFQUFsQixHQUF1QixVQUFDTixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCVyxFQUFsQixHQUF1QixVQUFDVCxLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQ7O0FBSUE7Ozs7OztBQU1BWCxPQUFPRSxVQUFQLENBQWtCWSxFQUFsQixHQUF1QixVQUFDVixLQUFELEVBQVFPLEdBQVIsRUFBZ0I7QUFDbkMsU0FBT1AsTUFBTVEsTUFBTixHQUFlRCxHQUF0QjtBQUNILENBRkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqXHJcbiAqL1xyXG5cclxuY29uc3Qgcml2ZXRzID0gcmVxdWlyZSgncml2ZXRzJyk7XHJcblxyXG4vKipcclxuICogR2VuZXJpYyBmb3JtYXR0ZXIgdG8gcHJlcGVuZFxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHBhcmFtIHByZXBlbmRcclxuICogQHJldHVybnMgeyp9XHJcbiAqL1xyXG5yaXZldHMuZm9ybWF0dGVycy5wcmVwZW5kID0gZnVuY3Rpb24gKHZhbHVlLCBwcmVwZW5kKSB7XHJcbiAgICByZXR1cm4gcHJlcGVuZCArIHZhbHVlXHJcbn07XHJcblxyXG4vKipcclxuICogRm9ybWF0IG1pbnV0ZXMgaW50byBISGggTU1tXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gKi9cclxucml2ZXRzLmZvcm1hdHRlcnMudGltZV9obSA9IGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodmFsdWUgLyA2MCk7XHJcbiAgICBjb25zdCBtaW5zID0gdmFsdWUgJSA2MDtcclxuICAgIHJldHVybiBob3VycyArICdoICcgKyBtaW5zICsgJ20nO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSB2YWx1ZVxyXG4gKiBAcGFyYW0gbGVuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxucml2ZXRzLmZvcm1hdHRlcnMuZ3QgPSAodmFsdWUsIGxlbikgPT4ge1xyXG4gICAgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IGxlbjtcclxufTtcclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0gdmFsdWVcclxuICogQHBhcmFtIGxlblxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbnJpdmV0cy5mb3JtYXR0ZXJzLmx0ID0gKHZhbHVlLCBsZW4pID0+IHtcclxuICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPCBsZW47XHJcbn07XHJcblxyXG4vKipcclxuICpcclxuICogQHBhcmFtIHZhbHVlXHJcbiAqIEBwYXJhbSBsZW5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG5yaXZldHMuZm9ybWF0dGVycy5lcSA9ICh2YWx1ZSwgbGVuKSA9PiB7XHJcbiAgICByZXR1cm4gdmFsdWUubGVuZ3RoID4gbGVuO1xyXG59O1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvY29tbW9uLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/common.js\n");
/***/ }),
/***/ "./resources/js/installer/app.js":
/***/ (function(module, exports, __webpack_require__) {
-eval("/**\n * Admin stuff needed\n */\n\n__webpack_require__(\"./resources/js/bootstrap.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvaW5zdGFsbGVyL2FwcC5qcz8wNTdjIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUEsbUJBQUFBLENBQVEsNkJBQVIiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvaW5zdGFsbGVyL2FwcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWRtaW4gc3R1ZmYgbmVlZGVkXG4gKi9cblxucmVxdWlyZSgnLi8uLi9ib290c3RyYXAnKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9pbnN0YWxsZXIvYXBwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/installer/app.js\n");
+eval("/**\r\n * Admin stuff needed\r\n */\n\n__webpack_require__(\"./resources/js/bootstrap.js\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvaW5zdGFsbGVyL2FwcC5qcz8wNTdjIl0sIm5hbWVzIjpbInJlcXVpcmUiXSwibWFwcGluZ3MiOiJBQUFBOzs7O0FBSUEsbUJBQUFBLENBQVEsNkJBQVIiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvaW5zdGFsbGVyL2FwcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBZG1pbiBzdHVmZiBuZWVkZWRcclxuICovXHJcblxyXG5yZXF1aXJlKCcuLy4uL2Jvb3RzdHJhcCcpO1xyXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvaW5zdGFsbGVyL2FwcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/installer/app.js\n");
/***/ }),
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index 3eaaab8f..df17d6b5 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -1,20 +1,20 @@
{
- "/assets/frontend/js/app.js": "/assets/frontend/js/app.js?id=b83a392b6c373e164576",
- "/assets/frontend/css/now-ui-kit.css": "/assets/frontend/css/now-ui-kit.css?id=e5ae6eb370b7d6339c94",
- "/assets/admin/css/vendor.min.css": "/assets/admin/css/vendor.min.css?id=cc80aec3cf1646f83d8d",
- "/assets/admin/js/app.js": "/assets/admin/js/app.js?id=1f2917a3a9f172f3cdad",
- "/assets/installer/js/app.js": "/assets/installer/js/app.js?id=3a51850509367b06cd1f",
- "/assets/fonts/glyphicons-halflings-regular.woff2": "/assets/fonts/glyphicons-halflings-regular.woff2?id=349344e92fb16221dd56",
- "/assets/admin/fonts/glyphicons-halflings-regular.woff2": "/assets/admin/fonts/glyphicons-halflings-regular.woff2?id=349344e92fb16221dd56",
- "/assets/admin/img/clear.png": "/assets/admin/img/clear.png?id=63b3af84650a0145d61a",
- "/assets/admin/img/loading.gif": "/assets/admin/img/loading.gif?id=1e2db432947c2dca1b9f",
+ "/assets/frontend/js/app.js": "/assets/frontend/js/app.js?id=9052380a3cc49659d9cb",
+ "/assets/frontend/css/now-ui-kit.css": "/assets/frontend/css/now-ui-kit.css?id=02cb33f41d2928215c28",
+ "/assets/admin/css/vendor.min.css": "/assets/admin/css/vendor.min.css?id=eaf9cd44602ddf336168",
+ "/assets/admin/js/app.js": "/assets/admin/js/app.js?id=bc90d7d46de8f35e92c5",
+ "/assets/installer/js/app.js": "/assets/installer/js/app.js?id=3a241e6be44a47bee0c1",
+ "/assets/fonts/glyphicons-halflings-regular.woff2": "/assets/fonts/glyphicons-halflings-regular.woff2?id=b5b5055c6d812c0f9f0d",
+ "/assets/admin/fonts/glyphicons-halflings-regular.woff2": "/assets/admin/fonts/glyphicons-halflings-regular.woff2?id=b5b5055c6d812c0f9f0d",
+ "/assets/admin/img/clear.png": "/assets/admin/img/clear.png?id=0e92f4c3efc6988a3c96",
+ "/assets/admin/img/loading.gif": "/assets/admin/img/loading.gif?id=90a4b76b4f11558691f6",
"/assets/global/js/jquery.js": "/assets/global/js/jquery.js?id=6a07da9fae934baf3f74",
- "/assets/admin/css/vendor.css": "/assets/admin/css/vendor.css?id=99aedbd62dfa118e7b73",
+ "/assets/admin/css/vendor.css": "/assets/admin/css/vendor.css?id=1102a9fd300bec3a369a",
"/assets/admin/js/vendor.js": "/assets/admin/js/vendor.js?id=5130233c88c71fc60135",
- "/assets/admin/css/blue.png": "/assets/admin/css/blue.png?id=39437a6200d8066a49d4",
- "/assets/admin/css/blue@2x.png": "/assets/admin/css/blue@2x.png?id=127d7cfbb176dc559854",
+ "/assets/admin/css/blue.png": "/assets/admin/css/blue.png?id=753a3c0dec86d3a38d9c",
+ "/assets/admin/css/blue@2x.png": "/assets/admin/css/blue@2x.png?id=97da23d47b838cbd4bef",
"/assets/global/js/vendor.js": "/assets/global/js/vendor.js?id=b0d80b01f5094a818ffc",
"/assets/global/css/vendor.css": "/assets/global/css/vendor.css?id=d973522b8046a4051fa7",
- "/assets/installer/css/vendor.css": "/assets/installer/css/vendor.css?id=a49645c5579d0b2fa679",
+ "/assets/installer/css/vendor.css": "/assets/installer/css/vendor.css?id=a53ccab0f168abad67fc",
"/assets/installer/js/vendor.js": "/assets/installer/js/vendor.js?id=01249af00bd2c1267e15"
}
\ No newline at end of file
diff --git a/resources/sass/admin/paper/_inputs.scss b/resources/sass/admin/paper/_inputs.scss
index b551f459..448b28a1 100755
--- a/resources/sass/admin/paper/_inputs.scss
+++ b/resources/sass/admin/paper/_inputs.scss
@@ -4,7 +4,7 @@
font-family: "Avenir-light", "AvenirLTStd-Light", sans-serif !important;
border-radius: 0;
background-color: $transparent-bg;
- border: 1px solid $light-gray;
+ border: 1px solid $medium-dark-gray;
color: $black-color;
line-height: 1em;
font-size: $font-size-base;
@@ -233,7 +233,7 @@ textarea.form-control {
padding: 10px 10px;
resize: none;
background-color: $transparent-bg;
- border: 1px solid $light-gray;
+ border: 1px solid $medium-dark-gray;
color: $black-color;
line-height: 1em;
font-size: $font-size-base;