@kando-env/kando-ui 1.2.227 → 1.2.228-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/lib/Widgets/Map/Map.js +86 -17
  2. package/lib/Widgets/Map/Map.scss +65 -0
  3. package/lib/Widgets/Map/MapUtils.js +27 -15
  4. package/lib/Widgets/Map/areas/AreaPolygons.js +2 -2
  5. package/lib/Widgets/Map/edges/Edges.js +17 -2
  6. package/lib/Widgets/Map/events/EventUtils.js +13 -9
  7. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +9 -2
  8. package/lib/Widgets/Map/events/PointOfEvent.js +12 -9
  9. package/lib/Widgets/Map/points/PointIcon.js +60 -0
  10. package/lib/Widgets/Map/points/PointIcon.scss +244 -0
  11. package/lib/Widgets/Map/points/PointMarker.js +22 -20
  12. package/lib/Widgets/Map/points/PointMarkers.js +90 -22
  13. package/lib/Widgets/Map/points/PointUtils.js +95 -32
  14. package/lib/assets/icons/pin/pin-matash-white.svg +8 -42
  15. package/lib/assets/icons/plus_v.svg +13 -0
  16. package/lib/assets/icons/water_reuse.svg +27 -0
  17. package/lib/assets/map/pin-matash-clicked.svg +12 -0
  18. package/lib/assets/map/pin-matash-white.svg +8 -28
  19. package/lib/assets/map/pin-plant-clicked.svg +10 -0
  20. package/lib/assets/map/pin-plant-white.svg +6 -28
  21. package/lib/assets/map/pin-suction-clicked.svg +10 -0
  22. package/lib/assets/map/pin-water-clicked.svg +11 -0
  23. package/lib/assets/map/pin-water.svg +7 -17
  24. package/lib/assets/point_icons/WWTP-icon.svg +8 -21
  25. package/lib/assets/point_icons/factory-icon.svg +6 -21
  26. package/lib/assets/point_icons/pump-station-icon.svg +6 -16
  27. package/lib/hooks/useMap.js +4 -18
  28. package/lib/i18n/en.json +8 -7
  29. package/lib/i18n/he.json +3 -0
  30. package/lib/macros/getVersion.js +2 -2
  31. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +2 -2
  32. package/lib/utilities/edgesMath.js +6 -3
  33. package/lib/utilities/map/icons.js +23 -7
  34. package/package.json +5 -3
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.popupContent = exports.createSamplingIcons = exports.createObservationIconPoint = exports.createSamplingIconPoint = exports.markerBelongsToSource = exports.markerBelongsToSelectedSource = exports.belongsToSourceBackground = exports.selectedBackground = exports.combinedWWTPIcon = exports.combinedCollectorsIcon = exports.combinedPumpStationIcon = exports.combinedFactoryIcon = exports.standardBackground = exports.matchIconToPoint = exports.createManholePoint = exports.createBubblePoint = exports.isCollectorFocused = void 0;
8
+ exports.addLayerGroup = exports.removeLayerGroup = exports.bindPopupToMarker = exports.handleMarkerClick = exports.popupContent = exports.createSamplingIcons = exports.createObservationIconPoint = exports.createSamplingIconPoint = exports.markerBelongsToSource = exports.markerBelongsToSelectedSource = exports.belongsToSourceBackground = exports.selectedBackground = exports.combinedWWTPIcon = exports.combinedCollectorsIcon = exports.combinedPumpStationIcon = exports.combinedFactoryIcon = exports.standardBackground = exports.matchIconToPoint = exports.createManholePoint = exports.createBubblePoint = exports.isCollectorFocused = void 0;
9
9
 
10
10
  var _lineChart = _interopRequireDefault(require("../../../assets/line-chart.svg"));
11
11
 
@@ -47,6 +47,12 @@ var _whitePoint = _interopRequireDefault(require("../../../assets/white-point.pn
47
47
 
48
48
  var _MapUtils = require("../MapUtils");
49
49
 
50
+ require("leaflet.markercluster");
51
+
52
+ var _PointIcon = require("./PointIcon");
53
+
54
+ var _water_reuse = _interopRequireDefault(require("../../../assets/icons/water_reuse.svg"));
55
+
50
56
  var isCollectorFocused = function isCollectorFocused(point, event) {
51
57
  var _event$observations;
52
58
 
@@ -59,35 +65,35 @@ var buildManholeTootipString = function buildManholeTootipString(point) {
59
65
  var string = "".concat(point.group.name, " ");
60
66
 
61
67
  if (point.group.type === 'Groups::Factory') {
62
- string += "(".concat(point.group.sector_name, ")");
68
+ string += "<br/>Sector-TBD: ".concat(point.group.sector_name);
69
+ string += "<br/>Water Consumption-TBD: ".concat(point.group.water_consumption_per_day);
63
70
  } else {
64
71
  string = "".concat(point.name);
65
72
  }
66
73
 
67
74
  return string;
68
- }; // iconSize: [width, height],
75
+ }; // @ts-ignore
76
+ // iconSize: [width, height],
69
77
  // IconAnchor: [(-right)(+left), (-down)(+up)]
70
78
 
71
79
 
72
- var createBubblePoint = function createBubblePoint(markerLocation, point, map, hovered) {
73
- // @ts-ignore
74
- matchIconToPoint(point) !== null && // @ts-ignore
75
- matchIconToPoint(point).forEach(function (icon, index) {
76
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
77
- icon: icon,
78
- riseOnHover: false
79
- }).addTo(map);
80
+ var createBubblePoint = function createBubblePoint(markerLocation, point, map, hovered, layerGroup) {
81
+ var subtitle = point.group.type === 'Groups::Factory' ? point.group.sector_name : '';
80
82
 
81
- pointCustomIcon.bindTooltip(buildManholeTootipString(point));
82
- pointCustomIcon['kando_few_layer_icon'] = matchIconToPoint(point).length > 1;
83
- pointCustomIcon['kando_index_object'] = index;
84
- pointCustomIcon['kando_object_id'] = point.id;
85
- pointCustomIcon['kando_object'] = 'Point';
86
- if (hovered) pointCustomIcon['kando_object'] = 'PointHovered';
87
- });
83
+ var pointCustomIcon = _leaflet.default.marker(markerLocation, {
84
+ icon: (0, _PointIcon.getPointIconByType)(point.group.type, point.name, subtitle, false, false, 0),
85
+ riseOnHover: false
86
+ }); // @ts-ignore
87
+ // pointCustomIcon.bindTooltip(buildManholeTootipString(point));
88
+
89
+
90
+ pointCustomIcon['kando_object_id'] = point.id;
91
+ pointCustomIcon['kando_object'] = 'Point';
92
+ if (hovered) pointCustomIcon['kando_object'] = 'PointHovered';
93
+ layerGroup.addLayer(pointCustomIcon);
88
94
 
89
95
  if (point.relatedEventsAmount) {
90
- var pointCustomIcon = _leaflet.default.marker(markerLocation, {
96
+ var _pointCustomIcon = _leaflet.default.marker(markerLocation, {
91
97
  icon: _leaflet.default.divIcon({
92
98
  className: "\n ".concat(point.relatedEventsAmount >= 100 ? 'circle-events-amount circle-events-amount--tridigit' : 'circle-events-amount', " \n ").concat(point.relatedEventsAmount > 2 ? 'alert-color' : '', "\n "),
93
99
  html: "<p>".concat(point.relatedEventsAmount, "</p>"),
@@ -95,17 +101,18 @@ var createBubblePoint = function createBubblePoint(markerLocation, point, map, h
95
101
  }),
96
102
  riseOnHover: false,
97
103
  opacity: hovered ? 1 : 0
98
- }).addTo(map);
104
+ });
99
105
 
100
- pointCustomIcon['kando_object_id'] = point.id;
101
- pointCustomIcon['kando_object'] = 'IconNumber';
102
- if (hovered) pointCustomIcon['kando_object'] = 'IconNumberHovered';
106
+ _pointCustomIcon['kando_object_id'] = point.id;
107
+ _pointCustomIcon['kando_object'] = 'IconNumber';
108
+ if (hovered) _pointCustomIcon['kando_object'] = 'IconNumberHovered'; // @ts-ignore
109
+ //layerGroup.addLayer(pointCustomIcon);
103
110
  }
104
111
  };
105
112
 
106
113
  exports.createBubblePoint = createBubblePoint;
107
114
 
108
- var createManholePoint = function createManholePoint(markerLocation, point, map, hovered) {
115
+ var createManholePoint = function createManholePoint(markerLocation, point, map, hovered, layerGroup) {
109
116
  var pointIcon = _leaflet.default.icon({
110
117
  iconUrl: _whitePoint.default,
111
118
  iconSize: [9, 9],
@@ -115,13 +122,14 @@ var createManholePoint = function createManholePoint(markerLocation, point, map,
115
122
  var manholeIcon = _leaflet.default.marker(markerLocation, {
116
123
  icon: pointIcon,
117
124
  riseOnHover: true
118
- }).addTo(map);
125
+ });
119
126
 
120
127
  manholeIcon.bindTooltip(buildManholeTootipString(point));
121
128
  manholeIcon['kando_object_id'] = point.id;
122
129
  manholeIcon['kando_object'] = 'Point';
123
130
  manholeIcon['kando_point_type'] = 'Manhole';
124
131
  if (hovered) manholeIcon['kando_object'] = 'PointHovered';
132
+ layerGroup.addLayer(manholeIcon);
125
133
  };
126
134
 
127
135
  exports.createManholePoint = createManholePoint;
@@ -291,7 +299,7 @@ var markerBelongsToSource = function markerBelongsToSource(event, point) {
291
299
 
292
300
  exports.markerBelongsToSource = markerBelongsToSource;
293
301
 
294
- var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, secondaryIcon, map, point, event, hovered) {
302
+ var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, secondaryIcon, map, point, event, hovered, layerGroup) {
295
303
  // iconSize: [width, height],
296
304
  // Icon Anchor: [(-right)(+left), (-down)(+up)]
297
305
  var samplingIcon = [_leaflet.default.icon({
@@ -320,7 +328,7 @@ var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, s
320
328
  var pointCustomIcon = _leaflet.default.marker(markerLocation, {
321
329
  icon: icon,
322
330
  riseOnHover: false
323
- }).addTo(map);
331
+ });
324
332
 
325
333
  pointCustomIcon.bindTooltip(buildManholeTootipString(point));
326
334
  pointCustomIcon['kando_index_object'] = index;
@@ -330,12 +338,13 @@ var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, s
330
338
  pointCustomIcon['kando_object_id'] = point.id;
331
339
  pointCustomIcon['kando_object'] = 'Sampling';
332
340
  if (hovered) pointCustomIcon['kando_object'] = 'SamplingHovered';
341
+ layerGroup.addLayer(pointCustomIcon);
333
342
  });
334
343
  };
335
344
 
336
345
  exports.createSamplingIconPoint = createSamplingIconPoint;
337
346
 
338
- var createObservationIconPoint = function createObservationIconPoint(markerLocation, secondaryIcon, map, point, event, hovered) {
347
+ var createObservationIconPoint = function createObservationIconPoint(markerLocation, secondaryIcon, map, point, event, hovered, layerGroup) {
339
348
  // iconSize: [width, height],
340
349
  // Icon Anchor: [(-right)(+left), (-down)(+up)]
341
350
  var observationIcon = [_leaflet.default.icon({
@@ -362,7 +371,7 @@ var createObservationIconPoint = function createObservationIconPoint(markerLocat
362
371
  var pointCustomIcon = _leaflet.default.marker(markerLocation, {
363
372
  icon: icon,
364
373
  riseOnHover: false
365
- }).addTo(map);
374
+ });
366
375
 
367
376
  pointCustomIcon.bindTooltip(buildManholeTootipString(point));
368
377
  pointCustomIcon['kando_index_object'] = index;
@@ -372,18 +381,19 @@ var createObservationIconPoint = function createObservationIconPoint(markerLocat
372
381
  pointCustomIcon['kando_object_id'] = point.id;
373
382
  pointCustomIcon['kando_object'] = 'Observation';
374
383
  if (hovered) pointCustomIcon['kando_object'] = 'ObservationHovered';
384
+ layerGroup.addLayer(pointCustomIcon);
375
385
  });
376
386
  };
377
387
 
378
388
  exports.createObservationIconPoint = createObservationIconPoint;
379
389
 
380
- var createSamplingIcons = function createSamplingIcons(markerLocation, event, point, map, hovered) {
390
+ var createSamplingIcons = function createSamplingIcons(markerLocation, event, point, map, hovered, layerGroup) {
381
391
  var sampledPointIds = event.samplings.map(function (s) {
382
392
  return s.point_id;
383
393
  });
384
394
 
385
395
  if (event !== null && event.samplings.length !== 0 && sampledPointIds.includes(point.id)) {
386
- createSamplingIconPoint(markerLocation, matchIconToPoint(point, event) !== null, map, point, event, hovered);
396
+ createSamplingIconPoint(markerLocation, matchIconToPoint(point, event) !== null, map, point, event, hovered, layerGroup);
387
397
  }
388
398
  };
389
399
 
@@ -398,4 +408,57 @@ var popupContent = function popupContent(obs, point) {
398
408
  };
399
409
 
400
410
  exports.popupContent = popupContent;
401
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJuYW1lcyI6WyJpc0NvbGxlY3RvckZvY3VzZWQiLCJwb2ludCIsImV2ZW50Iiwib2JzZXJ2YXRpb25zIiwibGVuZ3RoIiwiaWQiLCJwb2ludF9pZCIsImJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyIsInN0cmluZyIsImdyb3VwIiwibmFtZSIsInR5cGUiLCJzZWN0b3JfbmFtZSIsImNyZWF0ZUJ1YmJsZVBvaW50IiwibWFya2VyTG9jYXRpb24iLCJtYXAiLCJob3ZlcmVkIiwibWF0Y2hJY29uVG9Qb2ludCIsImZvckVhY2giLCJpY29uIiwiaW5kZXgiLCJwb2ludEN1c3RvbUljb24iLCJMIiwibWFya2VyIiwicmlzZU9uSG92ZXIiLCJhZGRUbyIsImJpbmRUb29sdGlwIiwicmVsYXRlZEV2ZW50c0Ftb3VudCIsImRpdkljb24iLCJjbGFzc05hbWUiLCJodG1sIiwiaWNvbkFuY2hvciIsIl96b29tIiwib3BhY2l0eSIsImNyZWF0ZU1hbmhvbGVQb2ludCIsInBvaW50SWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJ1bmRlZmluZWQiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBT0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBOztBQUNBOztBQUVPLElBQU1BLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsQ0FBQ0MsS0FBRCxFQUFnQkMsS0FBaEIsRUFBa0M7QUFBQTs7QUFDbEUsU0FDRSxDQUFBQSxLQUFLLFNBQUwsSUFBQUEsS0FBSyxXQUFMLG1DQUFBQSxLQUFLLENBQUVDLFlBQVAsNEVBQXFCQyxNQUFyQixNQUFnQyxDQUFoQyxJQUNBSCxLQUFLLENBQUNJLEVBQU4sS0FBYUgsS0FBSyxDQUFDQyxZQUFOLENBQW1CLENBQW5CLEVBQXNCRyxRQUZyQztBQUlELENBTE07Ozs7QUFPUCxJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQTJCLENBQUNOLEtBQUQsRUFBbUI7QUFDbEQsTUFBSU8s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ZkEsWUFBZSxDQUFDQyxHQUFELEVBQVdwRixLQUFYLEVBQTZCO0FBQ3ZELE1BQUlvRixHQUFHLEtBQUssSUFBWixFQUFrQjtBQUNoQiwrSEFFNERwRixLQUFLLENBQUNJLEVBRmxFLGlEQUc0QmlGLGtCQUg1Qix3SkFNMERyRixLQUFLLENBQUNRLEtBQU4sQ0FBWUMsSUFOdEU7QUFhRCxHQWRELE1BY087QUFDTCwrSEFFNEQyRSxHQUFHLENBQUNoRixFQUZoRSxpREFHNEJpRixrQkFINUIsd0pBT2tCckYsS0FBSyxDQUFDUSxLQUFOLENBQVlDLElBUDlCLG9KQVUyRDZFLGNBQUtDLENBQUwsNEJBVjNELHlEQWNzQiw4QkFBOEJILEdBQUcsQ0FBQ0ksUUFkeEQsdUhBaUI4QkYsY0FBS0MsQ0FBTCxzQ0FDOEJILEdBQUcsQ0FBQ0ksUUFEbEMsRUFqQjlCLG1XQTRCK0RGLGNBQUtDLENBQUwsOEJBNUIvRCxnT0FrQytERCxjQUFLQyxDQUFMLDZCQWxDL0Q7QUEyQ0Q7QUFDRixDQTVETSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcmFwaEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2xpbmUtY2hhcnQuc3ZnJztcbmltcG9ydCBMLCB7IExhdExuZ1R1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgaTE4biBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgYmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYmx1ZS1jaXJjbGUuc3ZnJztcbmltcG9ydCBzYW1wbGluZ0ljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3NhbXBsaW5nLWljb24uc3ZnJztcbmltcG9ydCBwaW5rQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9waW5rLWNpcmNsZS5zdmcnO1xuaW1wb3J0IG9ic2VydmF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvb2JzZXJ2YXRpb24taWNvbi5zdmcnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHJlZFBpblJlZFNoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcmVkLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5CbGFja1NoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2hpdGUtcGluLWJsYWNrLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHllbGxvd0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMveWVsbG93LWNpcmNsZS5zdmcnO1xuaW1wb3J0IHBsYW50SWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvZmFjdG9yeS1pY29uLnN2Zyc7XG5pbXBvcnQgZ3JlZW5DaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2dyZWVuLWNpcmNsZS5zdmcnO1xuaW1wb3J0IHB1bXBTdGF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcHVtcC1zdGF0aW9uLWljb24uc3ZnJztcbmltcG9ydCBjb2xsZWN0b3JJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9tYXAvcGluLXdhdGVyLnN2Zyc7XG5pbXBvcnQgYnJpZ2h0Qmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYnJpZ2h0LWJsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgV1dUUEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL1dXVFAtaWNvbi5zdmcnO1xuaW1wb3J0IHdhdGVySWNvbk5vQmFja2dyb3VuZCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2F0ZXItbm8tYmFja2dyb3VuZC5zdmcnO1xuaW1wb3J0IHdoaXRlUG9pbnQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3doaXRlLXBvaW50LnBuZyc7XG5pbXBvcnQgeyBldmVudHNDb3VudEljb24gfSBmcm9tICcuLi9NYXBVdGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIGxldCBzdHJpbmcgPSBgJHtwb2ludC5ncm91cC5uYW1lfSBgO1xuXG4gIGlmIChwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpGYWN0b3J5Jykge1xuICAgIHN0cmluZyArPSBgKCR7cG9pbnQuZ3JvdXAuc2VjdG9yX25hbWV9KWA7XG4gIH0gZWxzZSB7XG4gICAgc3RyaW5nID0gYCR7cG9pbnQubmFtZX1gO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbi8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4vLyBJY29uQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG5leHBvcnQgY29uc3QgY3JlYXRlQnViYmxlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbikgPT4ge1xuICAvLyBAdHMtaWdub3JlXG4gIG1hdGNoSWNvblRvUG9pbnQocG9pbnQpICE9PSBudWxsICYmXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQpLmZvckVhY2goKGljb246IGFueSwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICAgIGljb246IGljb24sXG4gICAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgIH0pLmFkZFRvKG1hcCk7XG4gICAgICBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2Zld19sYXllcl9pY29uJ10gPVxuICAgICAgICBtYXRjaEljb25Ub1BvaW50KHBvaW50KS5sZW5ndGggPiAxO1xuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gICAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludEhvdmVyZWQnO1xuICAgIH0pO1xuXG4gIGlmIChwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50KSB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbiA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBMLmRpdkljb24oe1xuICAgICAgICBjbGFzc05hbWU6IGBcbiAgICAgICAgICAke1xuICAgICAgICAgICAgcG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+PSAxMDBcbiAgICAgICAgICAgICAgPyAnY2lyY2xlLWV2ZW50cy1hbW91bnQgY2lyY2xlLWV2ZW50cy1hbW91bnQtLXRyaWRpZ2l0J1xuICAgICAgICAgICAgICA6ICdjaXJjbGUtZXZlbnRzLWFtb3VudCdcbiAgICAgICAgICB9IFxuICAgICAgICAgICR7cG9pbnQucmVsYXRlZEV2ZW50c0Ftb3VudCA+IDIgPyAnYWxlcnQtY29sb3InIDogJyd9XG4gICAgICAgICAgICBgLFxuICAgICAgICBodG1sOiBgPHA+JHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50fTwvcD5gLFxuICAgICAgICBpY29uQW5jaG9yOiBldmVudHNDb3VudEljb24obWFwLl96b29tKS5pY29uQW5jaG9yLFxuICAgICAgfSksXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICBvcGFjaXR5OiBob3ZlcmVkID8gMSA6IDAsXG4gICAgfSkuYWRkVG8obWFwKTtcblxuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXInO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXJIb3ZlcmVkJztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hbmhvbGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuKSA9PiB7XG4gIGxldCBwb2ludEljb24gPSBMLmljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUG9pbnQsXG4gICAgaWNvblNpemU6IFs5LCA5XSxcbiAgICBpY29uQW5jaG9yOiBbNC41LCA0LjVdLFxuICB9KTtcbiAgbGV0IG1hbmhvbGVJY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IHBvaW50SWNvbixcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSkuYWRkVG8obWFwKTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICBtYW5ob2xlSWNvblsna2FuZG9fcG9pbnRfdHlwZSddID0gJ01hbmhvbGUnO1xuICBpZiAoaG92ZXJlZCkgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG59O1xuXG5leHBvcnQgY29uc3QgbWF0Y2hJY29uVG9Qb2ludCA9IChwb2ludDogSVBvaW50LCBldmVudDogSUV2ZW50KSA9PiB7XG4gIHN3aXRjaCAocG9pbnQuZ3JvdXAudHlwZSkge1xuICAgIGNhc2UgJ0dyb3Vwczo6RmFjdG9yeSc6XG4gICAgICBpZiAoY29tYmluZWRGYWN0b3J5SWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRGYWN0b3J5SWNvbjtcbiAgICBjYXNlICdHcm91cHM6OlB1bXBTdGF0aW9uJzpcbiAgICAgIGlmIChjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRQdW1wU3RhdGlvbkljb247XG4gICAgY2FzZSAnR3JvdXBzOjpXYXN0ZXdhdGVyVHJlYXRtZW50UGxhbnQnOlxuICAgICAgaWYgKGNvbWJpbmVkV1dUUEljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkV1dUUEljb247XG5cbiAgICBjYXNlICdHcm91cHM6OkNvbGxlY3RvcnMnOlxuICAgICAgaWYgKGlzQ29sbGVjdG9yRm9jdXNlZChwb2ludCwgZXZlbnQpKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgTC5pY29uKHtcbiAgICAgICAgICAgIGljb25Vcmw6IHJlZFBpblJlZFNoYWRvdyxcbiAgICAgICAgICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgICAgICAgICBpY29uQW5jaG9yOiBbMzAsIDUyXSxcbiAgICAgICAgICB9KSxcblxuICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICBpY29uVXJsOiB3YXRlckljb25Ob0JhY2tncm91bmQsXG4gICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuXG4gICAgICAgICAgICBpY29uQW5jaG9yOiBbMjIsIDQ0XSxcbiAgICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkQ29sbGVjdG9yc0ljb247XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzdGFuZGFyZEJhY2tncm91bmQgPSAoXG4gIHNlY29uZGFyeTogYm9vbGVhbiA9IGZhbHNlLFxuICB0aGlyZDogYm9vbGVhbiA9IGZhbHNlLFxuKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUGluQmxhY2tTaGFkb3csXG4gICAgaWNvblNpemU6IHNlY29uZGFyeSA/IFswLCAwXSA6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnkgJiYgdGhpcmQgPyBbLTIsIDE5XSA6IHNlY29uZGFyeSA/IFstMiwgNDRdIDogWzIwLCA0Ml0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZEZhY3RvcnlJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IHllbGxvd0NpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IHBsYW50SWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFs1LCAzMF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBncmVlbkNpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IHB1bXBTdGF0aW9uSWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFs3LCAzMl0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZENvbGxlY3RvcnNJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGNvbGxlY3Rvckljb24sXG4gICAgaWNvblNpemU6IFswLCAwXSxcblxuICAgIGljb25BbmNob3I6IFsyNSwgNTBdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRXV1RQSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBicmlnaHRCbHVlQ2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogV1dUUEljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbOCwgMzFdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0ZWRCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQgPSAoKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHdoaXRlUGluUmVkU2hhZG93LFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGxldCBzb3VyY2U7XG5cbiAgaWYgKGV2ZW50ICE9PSBudWxsICYmIGV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBzb3VyY2UgPSBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXTtcbiAgfVxuXG4gIHJldHVybiBldmVudCAhPT0gbnVsbCAmJiBzb3VyY2UgJiYgZXZlbnQuc2VsZWN0ZWRfc291cmNlID09PSBzb3VyY2UucG9pbnRfaWQ7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU291cmNlID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgaWYgKGV2ZW50ID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgcmV0dXJuIChcbiAgICBldmVudCAhPT0gbnVsbCAmJlxuICAgIGV2ZW50LnNvdXJjZXMuZmlsdGVyKChzb3VyY2UpID0+IHNvdXJjZS5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgc2Vjb25kYXJ5SWNvbjogYm9vbGVhbixcbiAgbWFwLFxuICBwb2ludDogSVBvaW50LFxuICBldmVudDogSUV2ZW50LFxuICBob3ZlcmVkPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBibHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCAxNV0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHNhbXBsaW5nSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBsZXQgdGhpcmRJY29uID0gZmFsc2U7XG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlyZEljb24gPSB0cnVlO1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uLCB0aGlyZEljb24pKTtcbiAgfVxuXG4gIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pLmFkZFRvKG1hcCk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyhwb2ludCkpO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faW5kZXhfb2JqZWN0J10gPSBpbmRleDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2Zld19sYXllcl9pY29uJ10gPSB0cnVlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fc2Vjb25kYXJ5J10gPSB0aGlyZEljb24gPyBmYWxzZSA6IHNlY29uZGFyeUljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb190aGlyZCddID0gdGhpcmRJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1NhbXBsaW5nJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZ0hvdmVyZWQnO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSkuYWRkVG8obWFwKTtcbiAgICBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fZmV3X2xheWVyX2ljb24nXSA9IHRydWU7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19zZWNvbmRhcnknXSA9IHNlY29uZGFyeUljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb190aGlyZCddID0gZmFsc2U7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb24nO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ09ic2VydmF0aW9uSG92ZXJlZCc7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvbnMgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkLFxuKSA9PiB7XG4gIGxldCBzYW1wbGVkUG9pbnRJZHMgPSBldmVudC5zYW1wbGluZ3MubWFwKChzKSA9PiBzLnBvaW50X2lkKTtcbiAgaWYgKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc2FtcGxpbmdzLmxlbmd0aCAhPT0gMCAmJlxuICAgIHNhbXBsZWRQb2ludElkcy5pbmNsdWRlcyhwb2ludC5pZClcbiAgKSB7XG4gICAgY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQoXG4gICAgICBtYXJrZXJMb2NhdGlvbixcbiAgICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQsIGV2ZW50KSAhPT0gbnVsbCxcbiAgICAgIG1hcCxcbiAgICAgIHBvaW50LFxuICAgICAgZXZlbnQsXG4gICAgICBob3ZlcmVkLFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3B1cENvbnRlbnQgPSAob2JzOiBhbnksIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgaWYgKG9icyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7cG9pbnQuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7cG9pbnQuZ3JvdXAubmFtZX08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke29icy5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0eWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwLWNvbnRlbnRfX3NldmVyaXR5LS0nICsgb2JzLnNldmVyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdGllcy4ke29icy5zZXZlcml0eX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19oclwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2Rpc2NoYXJnZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5maXJzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJmaXJzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcubGFzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJsYXN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH1cbn07XG4iXX0=
411
+
412
+ var handleMarkerClick = function handleMarkerClick(map, point, layerGroup) {
413
+ var setIcon = function setIcon(element, clicked) {
414
+ element.layer.setIcon((0, _PointIcon.getPointIconByType)(point.group.type, point.name, point.group.sector_name, clicked, false, 0));
415
+ };
416
+
417
+ layerGroup.on('click', function (originallyClickedElement) {
418
+ map.on('zoomstart', function () {
419
+ map.closePopup();
420
+ });
421
+ setIcon(originallyClickedElement, true);
422
+ map.on('click', function (anyPotentialMapElement) {
423
+ if (anyPotentialMapElement._leaflet_id !== originallyClickedElement.layer._leaflet_id) {
424
+ setIcon(originallyClickedElement, false);
425
+ }
426
+ });
427
+ layerGroup.on('popupclose', function () {
428
+ setTimeout(function () {
429
+ setIcon(originallyClickedElement, false);
430
+ }, 50);
431
+ });
432
+ });
433
+ };
434
+
435
+ exports.handleMarkerClick = handleMarkerClick;
436
+
437
+ var bindPopupToMarker = function bindPopupToMarker(point, layerGroup) {
438
+ var content = "\n <div class='main-content'>\n <div class='main-content__header'>\n <div class=\"main-content__header__titles\">\n <div class='main-content__header__titles__title'>".concat(point.name, "</div>\n <div class='main-content__header__titles__subtitle'>").concat(point.group.sector_name, "</div>\n </div>\n </div>\n \n <div class='main-content__body'>\n <div class='main-content__body__item'>\n <div class='main-content__body__item__icon'>\n <img src='").concat(_water_reuse.default, "' />\n </div>\n <div class='main-content__body__item__titles'>\n <div class='main-content__body__item__titles__title'>").concat(point.group.water_consumption_per_day, " ").concat(_i18n.default.t('million_gallons_day'), "</div>\n <div class='main-content__body__item__titles__subtitle'>").concat(_i18n.default.t('water_discharge'), "</div>\n </div>\n </div>\n </div>\n </div>\n ");
439
+ layerGroup.bindPopup(content, {
440
+ className: 'point-marker-popup',
441
+ minWidth: 200,
442
+ maxWidth: 200,
443
+ closeButton: false
444
+ });
445
+ };
446
+
447
+ exports.bindPopupToMarker = bindPopupToMarker;
448
+
449
+ var removeLayerGroup = function removeLayerGroup(map, layerGroup) {
450
+ if (map.hasLayer(layerGroup)) {
451
+ map.removeLayer(layerGroup);
452
+ }
453
+ };
454
+
455
+ exports.removeLayerGroup = removeLayerGroup;
456
+
457
+ var addLayerGroup = function addLayerGroup(map, layerGroup) {
458
+ if (!map.hasLayer(layerGroup)) {
459
+ map.addLayer(layerGroup);
460
+ }
461
+ };
462
+
463
+ exports.addLayerGroup = addLayerGroup;
464
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9wb2ludHMvUG9pbnRVdGlscy50cyJdLCJuYW1lcyI6WyJpc0NvbGxlY3RvckZvY3VzZWQiLCJwb2ludCIsImV2ZW50Iiwib2JzZXJ2YXRpb25zIiwibGVuZ3RoIiwiaWQiLCJwb2ludF9pZCIsImJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyIsInN0cmluZyIsImdyb3VwIiwibmFtZSIsInR5cGUiLCJzZWN0b3JfbmFtZSIsIndhdGVyX2NvbnN1bXB0aW9uX3Blcl9kYXkiLCJjcmVhdGVCdWJibGVQb2ludCIsIm1hcmtlckxvY2F0aW9uIiwibWFwIiwiaG92ZXJlZCIsImxheWVyR3JvdXAiLCJzdWJ0aXRsZSIsInBvaW50Q3VzdG9tSWNvbiIsIkwiLCJtYXJrZXIiLCJpY29uIiwicmlzZU9uSG92ZXIiLCJhZGRMYXllciIsInJlbGF0ZWRFdmVudHNBbW91bnQiLCJkaXZJY29uIiwiY2xhc3NOYW1lIiwiaHRtbCIsImljb25BbmNob3IiLCJfem9vbSIsIm9wYWNpdHkiLCJjcmVhdGVNYW5ob2xlUG9pbnQiLCJwb2ludEljb24iLCJpY29uVXJsIiwid2hpdGVQb2ludCIsImljb25TaXplIiwibWFuaG9sZUljb24iLCJiaW5kVG9vbHRpcCIsIm1hdGNoSWNvblRvUG9pbnQiLCJjb21iaW5lZEZhY3RvcnlJY29uIiwibWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UiLCJ1bnNoaWZ0Iiwic2VsZWN0ZWRCYWNrZ3JvdW5kIiwibWFya2VyQmVsb25nc1RvU291cmNlIiwiYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCIsInN0YW5kYXJkQmFja2dyb3VuZCIsImNvbWJpbmVkUHVtcFN0YXRpb25JY29uIiwiY29tYmluZWRXV1RQSWNvbiIsInJlZFBpblJlZFNoYWRvdyIsIndhdGVySWNvbk5vQmFja2dyb3VuZCIsInBvcHVwQW5jaG9yIiwiY29tYmluZWRDb2xsZWN0b3JzSWNvbiIsInNlY29uZGFyeSIsInRoaXJkIiwid2hpdGVQaW5CbGFja1NoYWRvdyIsInllbGxvd0NpcmNsZVVSTCIsInBsYW50SWNvblVSTCIsImdyZWVuQ2lyY2xlVVJMIiwicHVtcFN0YXRpb25JY29uVVJMIiwiY29sbGVjdG9ySWNvbiIsImJyaWdodEJsdWVDaXJjbGVVUkwiLCJXV1RQSWNvblVSTCIsIndoaXRlUGluUmVkU2hhZG93Iiwic291cmNlIiwidW5kZWZpbmVkIiwic291cmNlcyIsImZpbHRlciIsInNlbGVjdGVkX3NvdXJjZSIsImNyZWF0ZVNhbXBsaW5nSWNvblBvaW50Iiwic2Vjb25kYXJ5SWNvbiIsInNhbXBsaW5nSWNvbiIsImJsdWVDaXJjbGVVUkwiLCJzYW1wbGluZ0ljb25VUkwiLCJ0aGlyZEljb24iLCJmb3JFYWNoIiwiaW5kZXgiLCJjcmVhdGVPYnNlcnZhdGlvbkljb25Qb2ludCIsIm9ic2VydmF0aW9uSWNvbiIsInBpbmtDaXJjbGVVUkwiLCJvYnNlcnZhdGlvbkljb25VUkwiLCJjcmVhdGVTYW1wbGluZ0ljb25zIiwic2FtcGxlZFBvaW50SWRzIiwic2FtcGxpbmdzIiwicyIsImluY2x1ZGVzIiwicG9wdXBDb250ZW50Iiwib2JzIiwiR3JhcGhJY29uIiwiaTE4biIsInQiLCJzZXZlcml0eSIsImhhbmRsZU1hcmtlckNsaWNrIiwic2V0SWNvbiIsImVsZW1lbnQiLCJjbGlja2VkIiwibGF5ZXIiLCJvbiIsIm9yaWdpbmFsbHlDbGlja2VkRWxlbWVudCIsImNsb3NlUG9wdXAiLCJhbnlQb3RlbnRpYWxNYXBFbGVtZW50IiwiX2xlYWZsZXRfaWQiLCJzZXRUaW1lb3V0IiwiYmluZFBvcHVwVG9NYXJrZXIiLCJjb250ZW50Iiwid2F0ZXJSZXVzZUljb24iLCJiaW5kUG9wdXAiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwiY2xvc2VCdXR0b24iLCJyZW1vdmVMYXllckdyb3VwIiwiaGFzTGF5ZXIiLCJyZW1vdmVMYXllciIsImFkZExheWVyR3JvdXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7Ozs7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SyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUN2RyxLQUFELEVBQVFpQixVQUFSLEVBQXVCO0FBQ3RELE1BQUl1RixPQUFPLHNOQUtLeEcsS0FBSyxDQUFDUyxJQUxYLHlGQVFLVCxLQUFLLENBQUNRLEtBQU4sQ0FBWUcsV0FSakIsNFBBZ0JtQjhGLG9CQWhCbkIsa0xBb0JPekcsS0FBSyxDQUFDUSxLQUFOLENBQVlJLHlCQXBCbkIsY0FxQlM2RSxjQUFLQyxDQUFMLENBQU8scUJBQVAsQ0FyQlQsK0ZBc0IrREQsY0FBS0MsQ0FBTCxDQUN4RCxpQkFEd0QsQ0F0Qi9ELHlGQUFYO0FBK0JBekUsRUFBQUEsVUFBVSxDQUFDeUYsU0FBWCxDQUFxQkYsT0FBckIsRUFBOEI7QUFDNUI3RSxJQUFBQSxTQUFTLEVBQUUsb0JBRGlCO0FBRTVCZ0YsSUFBQUEsUUFBUSxFQUFFLEdBRmtCO0FBRzVCQyxJQUFBQSxRQUFRLEVBQUUsR0FIa0I7QUFJNUJDLElBQUFBLFdBQVcsRUFBRTtBQUplLEdBQTlCO0FBTUQsQ0F0Q007Ozs7QUF3Q0EsSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFtQixDQUFDL0YsR0FBRCxFQUFNRSxVQUFOLEVBQXFCO0FBQ25ELE1BQUlGLEdBQUcsQ0FBQ2dHLFFBQUosQ0FBYTlGLFVBQWIsQ0FBSixFQUE4QjtBQUM1QkYsSUFBQUEsR0FBRyxDQUFDaUcsV0FBSixDQUFnQi9GLFVBQWhCO0FBQ0Q7QUFDRixDQUpNOzs7O0FBTUEsSUFBTWdHLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBQ2xHLEdBQUQsRUFBTUUsVUFBTixFQUFxQjtBQUNoRCxNQUFJLENBQUNGLEdBQUcsQ0FBQ2dHLFFBQUosQ0FBYTlGLFVBQWIsQ0FBTCxFQUErQjtBQUM3QkYsSUFBQUEsR0FBRyxDQUFDUyxRQUFKLENBQWFQLFVBQWI7QUFDRDtBQUNGLENBSk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGhJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9saW5lLWNoYXJ0LnN2Zyc7XG5pbXBvcnQgTCwgeyBMYXRMbmdUdXBsZSB9IGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IGJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgc2FtcGxpbmdJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9zYW1wbGluZy1pY29uLnN2Zyc7XG5pbXBvcnQgcGlua0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcGluay1jaXJjbGUuc3ZnJztcbmltcG9ydCBvYnNlcnZhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL29ic2VydmF0aW9uLWljb24uc3ZnJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCByZWRQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3JlZC1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluUmVkU2hhZG93IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy93aGl0ZS1waW4tcmVkLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHdoaXRlUGluQmxhY2tTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1ibGFjay1zaGFkb3cucG5nJztcbmltcG9ydCB5ZWxsb3dDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3llbGxvdy1jaXJjbGUuc3ZnJztcbmltcG9ydCBwbGFudEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2ZhY3RvcnktaWNvbi5zdmcnO1xuaW1wb3J0IGdyZWVuQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9ncmVlbi1jaXJjbGUuc3ZnJztcbmltcG9ydCBwdW1wU3RhdGlvbkljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3B1bXAtc3RhdGlvbi1pY29uLnN2Zyc7XG5pbXBvcnQgY29sbGVjdG9ySWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvbWFwL3Bpbi13YXRlci5zdmcnO1xuaW1wb3J0IGJyaWdodEJsdWVDaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2JyaWdodC1ibHVlLWNpcmNsZS5zdmcnO1xuaW1wb3J0IFdXVFBJY29uVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9XV1RQLWljb24uc3ZnJztcbmltcG9ydCB3YXRlckljb25Ob0JhY2tncm91bmQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3dhdGVyLW5vLWJhY2tncm91bmQuc3ZnJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgZXZlbnRzQ291bnRJY29uIH0gZnJvbSAnLi4vTWFwVXRpbHMnO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9Qb2ludEljb24nO1xuaW1wb3J0IHdhdGVyUmV1c2VJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy93YXRlcl9yZXVzZS5zdmcnO1xuXG5leHBvcnQgY29uc3QgaXNDb2xsZWN0b3JGb2N1c2VkID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgcmV0dXJuIChcbiAgICBldmVudD8ub2JzZXJ2YXRpb25zPy5sZW5ndGggPT09IDEgJiZcbiAgICBwb2ludC5pZCA9PT0gZXZlbnQub2JzZXJ2YXRpb25zWzBdLnBvaW50X2lkXG4gICk7XG59O1xuXG5jb25zdCBidWlsZE1hbmhvbGVUb290aXBTdHJpbmcgPSAocG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc3RyaW5nID0gYCR7cG9pbnQuZ3JvdXAubmFtZX0gYDtcblxuICBpZiAocG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeScpIHtcbiAgICBzdHJpbmcgKz0gYDxici8+U2VjdG9yLVRCRDogJHtwb2ludC5ncm91cC5zZWN0b3JfbmFtZX1gO1xuICAgIHN0cmluZyArPSBgPGJyLz5XYXRlciBDb25zdW1wdGlvbi1UQkQ6ICR7cG9pbnQuZ3JvdXAud2F0ZXJfY29uc3VtcHRpb25fcGVyX2RheX1gO1xuICB9IGVsc2Uge1xuICAgIHN0cmluZyA9IGAke3BvaW50Lm5hbWV9YDtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59O1xuXG4vLyBAdHMtaWdub3JlXG4vLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuLy8gSWNvbkFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUJ1YmJsZVBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIGNvbnN0IHN1YnRpdGxlID1cbiAgICBwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpGYWN0b3J5JyA/IHBvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lIDogJyc7XG4gIGxldCBwb2ludEN1c3RvbUljb246IEwuTWFya2VyID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICBpY29uOiBnZXRQb2ludEljb25CeVR5cGUoXG4gICAgICBwb2ludC5ncm91cC50eXBlLFxuICAgICAgcG9pbnQubmFtZSxcbiAgICAgIHN1YnRpdGxlLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIDAsXG4gICAgKSxcbiAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gIH0pO1xuICAvLyBAdHMtaWdub3JlXG4gIC8vIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb290aXBTdHJpbmcocG9pbnQpKTtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnRIb3ZlcmVkJztcblxuICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG5cbiAgaWYgKHBvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQpIHtcbiAgICBsZXQgcG9pbnRDdXN0b21JY29uID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IEwuZGl2SWNvbih7XG4gICAgICAgIGNsYXNzTmFtZTogYFxuICAgICAgICAgICR7XG4gICAgICAgICAgICBwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50ID49IDEwMFxuICAgICAgICAgICAgICA/ICdjaXJjbGUtZXZlbnRzLWFtb3VudCBjaXJjbGUtZXZlbnRzLWFtb3VudC0tdHJpZGlnaXQnXG4gICAgICAgICAgICAgIDogJ2NpcmNsZS1ldmVudHMtYW1vdW50J1xuICAgICAgICAgIH0gXG4gICAgICAgICAgJHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50ID4gMiA/ICdhbGVydC1jb2xvcicgOiAnJ31cbiAgICAgICAgICAgIGAsXG4gICAgICAgIGh0bWw6IGA8cD4ke3BvaW50LnJlbGF0ZWRFdmVudHNBbW91bnR9PC9wPmAsXG4gICAgICAgIGljb25BbmNob3I6IGV2ZW50c0NvdW50SWNvbihtYXAuX3pvb20pLmljb25BbmNob3IsXG4gICAgICB9KSxcbiAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgIG9wYWNpdHk6IGhvdmVyZWQgPyAxIDogMCxcbiAgICB9KTtcblxuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXInO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXJIb3ZlcmVkJztcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgLy9sYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNYW5ob2xlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuICBsZXQgbWFuaG9sZUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgaWNvbjogcG9pbnRJY29uLFxuICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICB9KTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnUG9pbnQnO1xuICBtYW5ob2xlSWNvblsna2FuZG9fcG9pbnRfdHlwZSddID0gJ01hbmhvbGUnO1xuICBpZiAoaG92ZXJlZCkgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG4gIGxheWVyR3JvdXAuYWRkTGF5ZXIobWFuaG9sZUljb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hdGNoSWNvblRvUG9pbnQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICBzd2l0Y2ggKHBvaW50Lmdyb3VwLnR5cGUpIHtcbiAgICBjYXNlICdHcm91cHM6OkZhY3RvcnknOlxuICAgICAgaWYgKGNvbWJpbmVkRmFjdG9yeUljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRGYWN0b3J5SWNvbi51bnNoaWZ0KHNlbGVjdGVkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXJrZXJCZWxvbmdzVG9Tb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkRmFjdG9yeUljb247XG4gICAgY2FzZSAnR3JvdXBzOjpQdW1wU3RhdGlvbic6XG4gICAgICBpZiAoY29tYmluZWRQdW1wU3RhdGlvbkljb24ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6V2FzdGV3YXRlclRyZWF0bWVudFBsYW50JzpcbiAgICAgIGlmIChjb21iaW5lZFdXVFBJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkV1dUUEljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFdXVFBJY29uO1xuXG4gICAgY2FzZSAnR3JvdXBzOjpDb2xsZWN0b3JzJzpcbiAgICAgIGlmIChpc0NvbGxlY3RvckZvY3VzZWQocG9pbnQsIGV2ZW50KSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIEwuaWNvbih7XG4gICAgICAgICAgICBpY29uVXJsOiByZWRQaW5SZWRTaGFkb3csXG4gICAgICAgICAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzMwLCA1Ml0sXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogd2F0ZXJJY29uTm9CYWNrZ3JvdW5kLFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcblxuICAgICAgICAgICAgaWNvbkFuY2hvcjogWzIyLCA0NF0sXG4gICAgICAgICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZENvbGxlY3RvcnNJY29uO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc3RhbmRhcmRCYWNrZ3JvdW5kID0gKFxuICBzZWNvbmRhcnk6IGJvb2xlYW4gPSBmYWxzZSxcbiAgdGhpcmQ6IGJvb2xlYW4gPSBmYWxzZSxcbikgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpbkJsYWNrU2hhZG93LFxuICAgIGljb25TaXplOiBzZWNvbmRhcnkgPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5ICYmIHRoaXJkID8gWy0yLCAxOV0gOiBzZWNvbmRhcnkgPyBbLTIsIDQ0XSA6IFsyMCwgNDJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRGYWN0b3J5SWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiB5ZWxsb3dDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwbGFudEljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNSwgMzBdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRQdW1wU3RhdGlvbkljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogZ3JlZW5DaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBwdW1wU3RhdGlvbkljb25VUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbNywgMzJdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG5dO1xuXG5leHBvcnQgY29uc3QgY29tYmluZWRDb2xsZWN0b3JzSWNvbiA9IFtcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBjb2xsZWN0b3JJY29uLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICBpY29uQW5jaG9yOiBbMjUsIDUwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkV1dUUEljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogYnJpZ2h0Qmx1ZUNpcmNsZVVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFsxMC43LCAzMy43XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuICBMLmljb24oe1xuICAgIGljb25Vcmw6IFdXVFBJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzgsIDMxXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzMyLCA1NF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kID0gKCkgPT4ge1xuICByZXR1cm4gTC5pY29uKHtcbiAgICBpY29uVXJsOiB3aGl0ZVBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgbWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBsZXQgc291cmNlO1xuXG4gIGlmIChldmVudCAhPT0gbnVsbCAmJiBldmVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc291cmNlID0gZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF07XG4gIH1cblxuICByZXR1cm4gZXZlbnQgIT09IG51bGwgJiYgc291cmNlICYmIGV2ZW50LnNlbGVjdGVkX3NvdXJjZSA9PT0gc291cmNlLnBvaW50X2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NvdXJjZSA9IChldmVudDogSUV2ZW50LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChldmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHJldHVybiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zb3VyY2VzLmZpbHRlcigoc291cmNlKSA9PiBzb3VyY2UucG9pbnRfaWQgPT09IHBvaW50LmlkKVswXVxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNhbXBsaW5nSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBzYW1wbGluZ0ljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IGJsdWVDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDE1XSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogc2FtcGxpbmdJY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAxM10gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGxldCB0aGlyZEljb24gPSBmYWxzZTtcbiAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBzYW1wbGluZ0ljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2Uge1xuICAgIHRoaXJkSWNvbiA9IHRydWU7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKHNlY29uZGFyeUljb24sIHRoaXJkSWNvbikpO1xuICB9XG5cbiAgc2FtcGxpbmdJY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyhwb2ludCkpO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faW5kZXhfb2JqZWN0J10gPSBpbmRleDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2Zld19sYXllcl9pY29uJ10gPSB0cnVlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fc2Vjb25kYXJ5J10gPSB0aGlyZEljb24gPyBmYWxzZSA6IHNlY29uZGFyeUljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb190aGlyZCddID0gdGhpcmRJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1NhbXBsaW5nJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZ0hvdmVyZWQnO1xuICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIocG9pbnRDdXN0b21JY29uKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlT2JzZXJ2YXRpb25JY29uUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgc2Vjb25kYXJ5SWNvbjogYm9vbGVhbixcbiAgbWFwLFxuICBwb2ludDogSVBvaW50LFxuICBldmVudDogSUV2ZW50LFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgLy8gaWNvblNpemU6IFt3aWR0aCwgaGVpZ2h0XSxcbiAgLy8gSWNvbiBBbmNob3I6IFsoLXJpZ2h0KSgrbGVmdCksICgtZG93bikoK3VwKV1cbiAgbGV0IG9ic2VydmF0aW9uSWNvbiA9IFtcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogcGlua0NpcmNsZVVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstNywgNDBdIDogWzEwLjcsIDMzLjddLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBvYnNlcnZhdGlvbkljb25VUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTgsIDM4XSA6IFs1LCAzMF0sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gIF07XG5cbiAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkgJiYgIXNlY29uZGFyeUljb24pIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2Uge1xuICAgIG9ic2VydmF0aW9uSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uKSk7XG4gIH1cblxuICBvYnNlcnZhdGlvbkljb24uZm9yRWFjaCgoaWNvbiwgaW5kZXgpID0+IHtcbiAgICBsZXQgcG9pbnRDdXN0b21JY29uOiBhbnkgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgICAgaWNvbjogaWNvbixcbiAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICB9KTtcbiAgICBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19pbmRleF9vYmplY3QnXSA9IGluZGV4O1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fZmV3X2xheWVyX2ljb24nXSA9IHRydWU7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19zZWNvbmRhcnknXSA9IHNlY29uZGFyeUljb247XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb190aGlyZCddID0gZmFsc2U7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHBvaW50LmlkO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnT2JzZXJ2YXRpb24nO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ09ic2VydmF0aW9uSG92ZXJlZCc7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25zID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIHBvaW50OiBJUG9pbnQsXG4gIG1hcCxcbiAgaG92ZXJlZCxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgbGV0IHNhbXBsZWRQb2ludElkcyA9IGV2ZW50LnNhbXBsaW5ncy5tYXAoKHMpID0+IHMucG9pbnRfaWQpO1xuICBpZiAoXG4gICAgZXZlbnQgIT09IG51bGwgJiZcbiAgICBldmVudC5zYW1wbGluZ3MubGVuZ3RoICE9PSAwICYmXG4gICAgc2FtcGxlZFBvaW50SWRzLmluY2x1ZGVzKHBvaW50LmlkKVxuICApIHtcbiAgICBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludChcbiAgICAgIG1hcmtlckxvY2F0aW9uLFxuICAgICAgbWF0Y2hJY29uVG9Qb2ludChwb2ludCwgZXZlbnQpICE9PSBudWxsLFxuICAgICAgbWFwLFxuICAgICAgcG9pbnQsXG4gICAgICBldmVudCxcbiAgICAgIGhvdmVyZWQsXG4gICAgICBsYXllckdyb3VwLFxuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwb3B1cENvbnRlbnQgPSAob2JzOiBhbnksIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgaWYgKG9icyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtcG9wdXBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZ3JhcGgtaWNvbiBwb3B1cC1ncmFwaC1pY29uLSR7cG9pbnQuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7cG9pbnQuZ3JvdXAubmFtZX08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGhyLz5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJzZWN0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgYDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke29icy5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIke0dyYXBoSWNvbn1cIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicG9wdXAtY29udGVudF9fc2l0ZS1uYW1lXCI+PGI+JHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5uYW1lXG4gICAgICAgICAgICAgICAgICAgIH08L2I+PC9oNT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5zZXZlcml0eWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvcHVwLWNvbnRlbnRfX3NldmVyaXR5LS0nICsgb2JzLnNldmVyaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1iXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdGllcy4ke29icy5zZXZlcml0eX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJwb3B1cC1jb250ZW50X19oclwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX2Rpc2NoYXJnZS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktcFwiPiR7aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGV2ZW50c19vdmVydmlldy5maXJzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJmaXJzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcubGFzdF9zZWVuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfTo8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGIgaWQ9XCJsYXN0LXNlZW4tcG9wdXBcIj48L2I+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVNYXJrZXJDbGljayA9IChtYXAsIHBvaW50LCBsYXllckdyb3VwKSA9PiB7XG4gIGxldCBzZXRJY29uID0gKGVsZW1lbnQsIGNsaWNrZWQpID0+IHtcbiAgICBlbGVtZW50LmxheWVyLnNldEljb24oXG4gICAgICBnZXRQb2ludEljb25CeVR5cGUoXG4gICAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICAgIHBvaW50Lm5hbWUsXG4gICAgICAgIHBvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lLFxuICAgICAgICBjbGlja2VkLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgMCxcbiAgICAgICksXG4gICAgKTtcbiAgfTtcblxuICBsYXllckdyb3VwLm9uKCdjbGljaycsIChvcmlnaW5hbGx5Q2xpY2tlZEVsZW1lbnQpID0+IHtcbiAgICBtYXAub24oJ3pvb21zdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1hcC5jbG9zZVBvcHVwKCk7XG4gICAgfSk7XG5cbiAgICBzZXRJY29uKG9yaWdpbmFsbHlDbGlja2VkRWxlbWVudCwgdHJ1ZSk7XG5cbiAgICBtYXAub24oJ2NsaWNrJywgKGFueVBvdGVudGlhbE1hcEVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgYW55UG90ZW50aWFsTWFwRWxlbWVudC5fbGVhZmxldF9pZCAhPT1cbiAgICAgICAgb3JpZ2luYWxseUNsaWNrZWRFbGVtZW50LmxheWVyLl9sZWFmbGV0X2lkXG4gICAgICApIHtcbiAgICAgICAgc2V0SWNvbihvcmlnaW5hbGx5Q2xpY2tlZEVsZW1lbnQsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxheWVyR3JvdXAub24oJ3BvcHVwY2xvc2UnLCAoKSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0SWNvbihvcmlnaW5hbGx5Q2xpY2tlZEVsZW1lbnQsIGZhbHNlKTtcbiAgICAgIH0sIDUwKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYmluZFBvcHVwVG9NYXJrZXIgPSAocG9pbnQsIGxheWVyR3JvdXApID0+IHtcbiAgbGV0IGNvbnRlbnQgPSBgXG4gICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50Jz5cbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXInPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudF9faGVhZGVyX190aXRsZXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzX190aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgIHBvaW50Lm5hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fc3VidGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZVxuICAgICAgICAgICAgICAgIH08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICBcbiAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5Jz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbSc+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX19pY29uJz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9JyR7d2F0ZXJSZXVzZUljb259JyAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzJz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX190aXRsZSc+JHtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAud2F0ZXJfY29uc3VtcHRpb25fcGVyX2RheVxuICAgICAgICAgICAgICAgICAgfSAke2kxOG4udCgnbWlsbGlvbl9nYWxsb25zX2RheScpfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19ib2R5X19pdGVtX190aXRsZXNfX3N1YnRpdGxlJz4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgJ3dhdGVyX2Rpc2NoYXJnZScsXG4gICAgICAgICAgICAgICAgICApfTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgbGF5ZXJHcm91cC5iaW5kUG9wdXAoY29udGVudCwge1xuICAgIGNsYXNzTmFtZTogJ3BvaW50LW1hcmtlci1wb3B1cCcsXG4gICAgbWluV2lkdGg6IDIwMCxcbiAgICBtYXhXaWR0aDogMjAwLFxuICAgIGNsb3NlQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKG1hcC5oYXNMYXllcihsYXllckdyb3VwKSkge1xuICAgIG1hcC5yZW1vdmVMYXllcihsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZExheWVyR3JvdXAgPSAobWFwLCBsYXllckdyb3VwKSA9PiB7XG4gIGlmICghbWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLmFkZExheWVyKGxheWVyR3JvdXApO1xuICB9XG59O1xuIl19
@@ -1,43 +1,9 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" x="0" y="0" enable-background="new 0 0 66.9 75.2" version="1.1" viewBox="0 0 66.9 75.2" xml:space="preserve">
2
- <filter id="dropshadow1" height="130%">
3
- <feGaussianBlur in="SourceAlpha" stdDeviation="1"/>
4
- <feOffset result="offsetblur"/>
5
- <feComponentTransfer>
6
- <feFuncA slope=".6" type="linear"/>
7
- </feComponentTransfer>
8
- <feMerge>
9
- <feMergeNode/>
10
- <feMergeNode in="SourceGraphic"/>
11
- </feMerge>
12
- </filter>
13
- <style>
14
- .border{fill:#fff;filter:url(#dropshadow1)}.st00{fill:#fff;filter:url(#dropshadow1)}.st21,.st61{fill:none}.st61{stroke:#000;stroke-width:.9206;stroke-miterlimit:10}
15
- </style>
16
- <g id="Layer_2_2_">
17
- <path id="pin" d="M50.4 17.6c-9.4-9.3-24.6-9.3-34 0-4.5 4.5-7 10.6-7 16.9 0 11.3 7.9 21 18.9 23.3l5.1 6.8 5.1-6.8c11-2.3 18.9-12.1 18.9-23.3 0-6.4-2.5-12.4-7-16.9z" class="border"/>
18
- <path id="circle" fill="#B1EBE1" fill-rule="evenodd" d="M33.4 13.5c11.6 0 21 9.4 21 21s-9.4 21-21 21-21-9.4-21-21 9.4-21 21-21z" clip-rule="evenodd"/>
19
- <g id="image">
20
- <g id="_0">
21
- <path d="M33.4 23.6c.6 0 1.3.1 1.9.2v21.6c-.6.1-1.3.2-1.9.2-6 0-10.9-4.9-10.9-10.9 0-6.2 4.9-11.1 10.9-11.1z" class="st21"/>
22
- <linearGradient id="SVGID_1_d" x1="-1092.37" x2="-1092.37" y1="-67.778" y2="-42.681" gradientTransform="matrix(-1 0 0 -1 -1052.52 -20)" gradientUnits="userSpaceOnUse">
23
- <stop offset="0" stop-color="#B1EBE1"/>
24
- <stop offset="1" stop-color="#C1FAF0"/>
25
- </linearGradient>
26
- <path fill="url(#SVGID_1_d)" d="M44.4 34.5c0 5.3-3.8 9.9-9.1 10.8V23.7c5.2.9 9.1 5.5 9.1 10.8z"/>
27
- <path d="M33.4 23.6c-.6 0-1.3.1-1.9.2v21.6c.6.1 1.3.2 1.9.2 6 0 10.9-4.9 10.9-10.9 0-6.2-4.9-11.1-10.9-11.1z" class="st21"/>
28
- <linearGradient id="SVGID_2_" x1="-1079.57" x2="-1079.57" y1="-67.778" y2="-42.681" gradientTransform="matrix(-1 0 0 -1 -1052.52 -20)" gradientUnits="userSpaceOnUse">
29
- <stop offset="0" stop-color="#B1EBE1"/>
30
- <stop offset="1" stop-color="#C1FAF0"/>
31
- </linearGradient>
32
- <path fill="url(#SVGID_2_)" d="M22.5 34.5c0 5.3 3.8 9.9 9.1 10.8V23.7c-5.3.9-9.1 5.5-9.1 10.8z"/>
33
- <path d="M33.4 46.1c-6.4 0-11.5-5.2-11.5-11.5S27 23 33.4 23s11.5 5.2 11.5 11.5-5.1 11.6-11.5 11.6zm0-21.9c-5.7 0-10.4 4.6-10.4 10.4C23 40.3 27.6 45 33.4 45c5.7 0 10.4-4.6 10.4-10.4s-4.7-10.4-10.4-10.4z"/>
34
- <path fill="#EBEBEB" d="M33.4 23c6.4 0 11.5 5.2 11.5 11.5s-5.1 11.6-11.5 11.6-11.5-5.2-11.5-11.5S27 23 33.4 23m0-2c-7.5 0-13.5 6.1-13.5 13.5C19.9 42 26 48 33.4 48c7.5 0 13.5-6.1 13.5-13.5 0-7.5-6-13.5-13.5-13.5z" filter="url(#dropshadow)"/>
35
- <path d="M31.9 24.1v21.4m3-21.8v21.8" class="st61"/>
36
- <path d="M32.1 23.7h2.6v8.5h-2.6v-8.5zm0 13.1h2.6v8.5h-2.6v-8.5z" class="st00"/>
37
- <path d="M32.1 41.7h2.8m-2.8-1.9h2.8m-2.8-10.6h2.8m-2.8-1.8h2.6" class="st61"/>
38
- <circle cx="33.4" cy="34.5" r="2.4" fill="#FFFFFF" stroke="#000000" stroke-miterlimit="10" stroke-width="0.9206"/>
39
- <path d="M33.9 34h10.6v1.1H33.9V34z"/>
40
- </g>
41
- </g>
42
- </g>
1
+ <svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0.121094" width="20" height="20" rx="10" fill="#448EF7"/>
3
+ <path d="M15.5811 11.2275C15.1056 13.3084 13.4475 14.9388 11.3516 15.3739M15.5811 8.77225C15.0235 6.33197 12.8395 4.51123 10.2302 4.51123C7.62096 4.51123 5.43695 6.33197 4.87939 8.77225M4.87939 11.2275C5.35483 13.3084 7.01291 14.9388 9.10884 15.3739" stroke="white" stroke-width="0.9" stroke-linecap="round"/>
4
+ <circle cx="10.2302" cy="9.9997" r="4.01191" fill="#448EF7"/>
5
+ <line x1="16.4368" y1="10.0239" x2="3.93435" y2="10.0239" stroke="#448EF7" stroke-linecap="round"/>
6
+ <circle cx="10.2304" cy="9.99992" r="4.01188" fill="white"/>
7
+ <circle cx="10.2305" cy="9.99999" r="1.7954" fill="#448EF7"/>
8
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M10.2303 10C10.4927 10 10.7053 10.2127 10.7053 10.475L10.7053 14.2262C10.7053 14.4885 10.4927 14.7012 10.2303 14.7012C9.96799 14.7012 9.75532 14.4885 9.75532 14.2262L9.75532 10.475C9.75532 10.2127 9.96799 10 10.2303 10Z" fill="#448EF7"/>
43
9
  </svg>
@@ -0,0 +1,13 @@
1
+ <svg width="31" height="33" viewBox="0 0 31 33" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_4987_6549)">
3
+ <path d="M23.5683 20.6454C23.5683 26.6311 18.63 31.4755 12.5424 31.4755C6.45484 31.4755 1.51025 26.6249 1.51025 20.6454C1.51025 14.2937 8.82293 5.73997 11.5383 2.18574C12.0372 1.53444 13.035 1.53444 13.5339 2.18574C15.5398 4.81134 20.0546 10.3379 22.2768 15.4771C23.0628 17.2947 23.562 19.0639 23.562 20.6392L23.5683 20.6454Z" fill="white"/>
4
+ <path d="M12.4849 31.3674C6.44143 31.3674 1.53271 26.552 1.53271 20.6158C1.53271 14.3102 8.79234 5.81855 11.4881 2.29011C11.9833 1.64353 12.9738 1.64353 13.4691 2.29011C15.4605 4.89666 19.328 10.3186 21.8249 14.6057" stroke="#0A043F" stroke-width="1.5508" stroke-linecap="round"/>
5
+ <path d="M13.7318 27.1523C11.6672 27.1523 9.77514 26.5066 8.31599 25.4385M5.38135 19.9948C5.38135 21.117 5.6843 22.1798 6.22377 23.1261" stroke="#0A043F" stroke-width="1.5508" stroke-miterlimit="10" stroke-linecap="round"/>
6
+ <rect x="28.0664" y="17.1829" width="14.3151" height="14.3151" rx="7.15753" transform="rotate(90 28.0664 17.1829)" fill="#E31B62"/>
7
+ </g>
8
+ <defs>
9
+ <clipPath id="clip0_4987_6549">
10
+ <rect width="29.8231" height="32.2089" fill="white" transform="translate(0.609375 0.482422)"/>
11
+ </clipPath>
12
+ </defs>
13
+ </svg>
@@ -0,0 +1,27 @@
1
+ <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="32" height="32" fill="white"/>
3
+ <g clip-path="url(#clip0_543_9868)">
4
+ <path d="M14.5052 3.24672C14.7174 3.52449 14.9592 3.83636 15.224 4.17789C16.508 5.834 18.3329 8.18778 19.9496 10.7352C20.9237 12.2699 21.8138 13.8625 22.4592 15.4007C23.1067 16.9437 23.4948 18.4015 23.4948 19.6746V19.8844L23.4982 19.8878C23.3858 24.9347 19.1847 29 14.0034 29C8.75103 29 4.50049 24.817 4.50049 19.6803C4.50049 16.9579 6.0823 13.6868 8.04421 10.6305C9.57119 8.25179 11.2809 6.07219 12.5495 4.45496C12.9014 4.00635 13.2194 3.60101 13.4901 3.24669C13.7423 2.91776 14.253 2.91777 14.5052 3.24672Z" stroke="#0A043F" stroke-width="0.999999"/>
5
+ <path d="M14.0005 25.5C10.1409 25.5 7.00049 22.8082 7.00049 19.5" stroke="#0A043F" stroke-width="0.999999" stroke-miterlimit="10"/>
6
+ <rect width="14" height="14" transform="translate(15.0005 15.5)" fill="white"/>
7
+ <rect x="28.0005" y="16.5" width="12" height="12" rx="5.99999" transform="rotate(90 28.0005 16.5)" fill="#E31B62"/>
8
+ <mask id="mask0_543_9868" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="16" y="16" width="13" height="13">
9
+ <rect x="28.0015" y="16.5007" width="12" height="12" transform="rotate(90 28.0015 16.5007)" fill="#D9D9D9"/>
10
+ </mask>
11
+ <g mask="url(#mask0_543_9868)">
12
+ <path d="M19.9765 19.0507C20.2931 18.8674 20.6181 18.7299 20.9515 18.6382C21.2848 18.5466 21.6265 18.5007 21.9765 18.5007C23.0931 18.5007 24.0431 18.8882 24.8265 19.6632C25.6098 20.4382 26.0015 21.3841 26.0015 22.5007L26.0015 22.5882L26.8015 21.7882L27.5015 22.4882L25.5015 24.4882L23.5015 22.4882L24.2015 21.7882L25.0015 22.5882L25.0015 22.5007C25.0015 21.6674 24.7077 20.9591 24.1202 20.3757C23.5327 19.7924 22.8181 19.5007 21.9765 19.5007C21.7598 19.5007 21.5473 19.5257 21.339 19.5757C21.1306 19.6257 20.9265 19.7007 20.7265 19.8007L19.9765 19.0507ZM16.5015 22.5132L18.5015 20.5132L20.5015 22.5132L19.8015 23.2132L19.0015 22.4132L19.0015 22.5007C19.0015 23.3341 19.2952 24.0424 19.8827 24.6257C20.4702 25.2091 21.1848 25.5007 22.0265 25.5007C22.2431 25.5007 22.4556 25.4757 22.664 25.4257C22.8723 25.3757 23.0765 25.3007 23.2765 25.2007L24.0265 25.9507C23.7098 26.1341 23.3848 26.2716 23.0515 26.3632C22.7181 26.4549 22.3765 26.5007 22.0265 26.5007C20.9098 26.5007 19.9598 26.1132 19.1765 25.3382C18.3931 24.5632 18.0015 23.6174 18.0015 22.5007L18.0015 22.4132L17.2015 23.2132L16.5015 22.5132Z" fill="white"/>
13
+ </g>
14
+ <mask id="mask1_543_9868" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="16" y="16" width="13" height="13">
15
+ <rect x="28.0015" y="16.5007" width="12" height="12" transform="rotate(90 28.0015 16.5007)" fill="#D9D9D9"/>
16
+ </mask>
17
+ <g mask="url(#mask1_543_9868)">
18
+ <path d="M19.9765 19.0507C20.2931 18.8674 20.6181 18.7299 20.9515 18.6382C21.2848 18.5466 21.6265 18.5007 21.9765 18.5007C23.0931 18.5007 24.0431 18.8882 24.8265 19.6632C25.6098 20.4382 26.0015 21.3841 26.0015 22.5007L26.0015 22.5882L26.8015 21.7882L27.5015 22.4882L25.5015 24.4882L23.5015 22.4882L24.2015 21.7882L25.0015 22.5882L25.0015 22.5007C25.0015 21.6674 24.7077 20.9591 24.1202 20.3757C23.5327 19.7924 22.8181 19.5007 21.9765 19.5007C21.7598 19.5007 21.5473 19.5257 21.339 19.5757C21.1306 19.6257 20.9265 19.7007 20.7265 19.8007L19.9765 19.0507ZM16.5015 22.5132L18.5015 20.5132L20.5015 22.5132L19.8015 23.2132L19.0015 22.4132L19.0015 22.5007C19.0015 23.3341 19.2952 24.0424 19.8827 24.6257C20.4702 25.2091 21.1848 25.5007 22.0265 25.5007C22.2431 25.5007 22.4556 25.4757 22.664 25.4257C22.8723 25.3757 23.0765 25.3007 23.2765 25.2007L24.0265 25.9507C23.7098 26.1341 23.3848 26.2716 23.0515 26.3632C22.7181 26.4549 22.3765 26.5007 22.0265 26.5007C20.9098 26.5007 19.9598 26.1132 19.1765 25.3382C18.3931 24.5632 18.0015 23.6174 18.0015 22.5007L18.0015 22.4132L17.2015 23.2132L16.5015 22.5132Z" fill="white"/>
19
+ </g>
20
+ <rect width="5.06368" height="0.999999" transform="matrix(0.707107 -0.707106 0.707107 0.707106 6.00049 26.0801)" fill="white"/>
21
+ </g>
22
+ <defs>
23
+ <clipPath id="clip0_543_9868">
24
+ <rect width="25" height="27" fill="white" transform="translate(4 2.50049)"/>
25
+ </clipPath>
26
+ </defs>
27
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg width="42" height="57" viewBox="0 0 42 57" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <ellipse cx="21.1209" cy="47.4208" rx="14.2781" ry="8.64911" fill="#448EF7" fill-opacity="0.1"/>
3
+ <ellipse cx="21.121" cy="47.4208" rx="5.86322" ry="3.55169" fill="#448EF7" fill-opacity="0.1"/>
4
+ <path d="M21.0519 46.631C23.8376 42.8752 28.1126 40.5787 32.0412 38.0426C37.6015 34.4531 41.2825 28.2023 41.2825 21.0917C41.2825 9.95679 32.2559 0.930176 21.121 0.930176C9.98609 0.930176 0.959473 9.95679 0.959473 21.0917C0.959473 28.13 4.56603 34.326 10.0319 37.9324C13.9592 40.5236 18.2513 42.8502 21.0519 46.631Z" fill="#448EF7"/>
5
+ <rect x="2.12085" y="2.2124" width="38" height="38" rx="19" fill="#448EF7"/>
6
+ <path d="M31.4948 23.5446C30.5914 27.4983 27.4411 30.596 23.4588 31.4227M31.4948 18.8796C30.4354 14.2431 26.2858 10.7837 21.3282 10.7837C16.3706 10.7837 12.221 14.2431 11.1616 18.8796M11.1616 23.5446C12.065 27.4983 15.2153 30.596 19.1976 31.4227" stroke="white" stroke-width="1.71" stroke-linecap="round"/>
7
+ <circle cx="21.3282" cy="21.2117" r="7.62262" fill="#448EF7"/>
8
+ <line x1="33.1206" y1="21.2579" x2="9.36597" y2="21.2579" stroke="#448EF7" stroke-width="1.9" stroke-linecap="round"/>
9
+ <circle cx="21.3284" cy="21.2122" r="7.62257" fill="white"/>
10
+ <circle cx="21.3287" cy="21.2123" r="3.41127" fill="#448EF7"/>
11
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M21.3285 21.2124C21.8269 21.2124 22.231 21.6165 22.231 22.1149L22.231 29.2421C22.231 29.7406 21.8269 30.1446 21.3285 30.1446C20.83 30.1446 20.426 29.7406 20.426 29.2421L20.426 22.1149C20.426 21.6165 20.83 21.2124 21.3285 21.2124Z" fill="#448EF7"/>
12
+ </svg>
@@ -1,29 +1,9 @@
1
- <svg width="52" height="58" viewBox="0 0 52 58" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <g clip-path="url(#clip0_829_35664)">
3
- <path d="M43.95 7.47977C39.0876 2.70083 32.5427 0.0229492 25.725 0.0229492C18.9073 0.0229492 12.3623 2.70083 7.49997 7.47977C2.70741 12.2881 0.0174243 18.8009 0.0199692 25.5898C0.00606998 31.4514 2.01362 37.1386 5.70418 41.6926C9.39475 46.2466 14.5426 49.3889 20.28 50.5898L25.74 57.8798L31.21 50.5898C36.9387 49.3717 42.0759 46.2247 45.7634 41.6745C49.4509 37.1243 51.4652 31.4465 51.47 25.5898C51.4764 22.2238 50.815 18.89 49.5242 15.7814C48.2334 12.6728 46.3387 9.85114 43.95 7.47977Z" fill="#F9FAFC"/>
4
- <path fill-rule="evenodd" clip-rule="evenodd" d="M25.72 3.08008C31.69 3.08008 37.4155 5.45166 41.6369 9.6731C45.8584 13.8945 48.23 19.6201 48.23 25.5901C48.2313 28.5465 47.6499 31.4742 46.5192 34.2058C45.3884 36.9375 43.7304 39.4195 41.6399 41.51C39.5494 43.6005 37.0673 45.2585 34.3357 46.3893C31.6041 47.5201 28.6764 48.1014 25.72 48.1001C19.7499 48.1001 14.0244 45.7285 9.80299 41.507C5.58154 37.2856 3.20996 31.5601 3.20996 25.5901C3.20996 19.6201 5.58154 13.8945 9.80299 9.6731C14.0244 5.45166 19.7499 3.08008 25.72 3.08008V3.08008Z" fill="#B1EBE1"/>
5
- <path d="M37.51 25.59C37.5242 28.3689 36.5522 31.0627 34.7669 33.1922C32.9815 35.3218 30.4987 36.749 27.76 37.22V14.02C30.4816 14.5041 32.9475 15.9267 34.7288 18.0406C36.5102 20.1544 37.4943 22.8257 37.51 25.59V25.59Z" fill="url(#paint0_linear_829_35664)"/>
6
- <path d="M14.02 25.59C14.0067 28.3718 14.9815 31.0679 16.7708 33.1979C18.5601 35.3279 21.0477 36.7533 23.79 37.22V14.02C21.0561 14.4813 18.5743 15.8969 16.7855 18.0152C14.9967 20.1336 14.0169 22.8175 14.02 25.59V25.59Z" fill="url(#paint1_linear_829_35664)"/>
7
- <path d="M25.72 38.03C22.4517 38.0274 19.318 36.7271 17.0079 34.4151C14.6977 32.1031 13.4 28.9684 13.4 25.7C13.3947 22.4208 14.6875 19.2727 16.9959 16.9436C19.3044 14.6145 22.4409 13.2938 25.72 13.27C28.9832 13.278 32.1102 14.5791 34.4158 16.8884C36.7213 19.1977 38.0174 22.3268 38.02 25.59C38.0255 28.8668 36.7358 32.0129 34.4319 34.343C32.128 36.6731 28.9967 37.9984 25.72 38.03ZM25.72 14.55C24.2554 14.5487 22.8049 14.8362 21.4516 15.3961C20.0982 15.956 18.8685 16.7772 17.8329 17.8128C16.7972 18.8485 15.976 20.0782 15.4161 21.4315C14.8562 22.7849 14.5687 24.2354 14.57 25.7C14.57 27.1643 14.8584 28.6142 15.4188 29.9669C15.9791 31.3197 16.8004 32.5489 17.8358 33.5843C18.8712 34.6196 20.1003 35.4409 21.4531 36.0013C22.8059 36.5616 24.2558 36.85 25.72 36.85C27.1846 36.8513 28.6351 36.5638 29.9885 36.004C31.3419 35.4441 32.5716 34.6228 33.6072 33.5872C34.6429 32.5516 35.4641 31.3219 36.024 29.9685C36.5839 28.6151 36.8714 27.1646 36.87 25.7C36.8714 24.2354 36.5839 22.7849 36.024 21.4315C35.4641 20.0782 34.6429 18.8485 33.6072 17.8128C32.5716 16.7772 31.3419 15.956 29.9885 15.3961C28.6351 14.8362 27.1846 14.5487 25.72 14.55V14.55Z" fill="black"/>
8
- <path d="M25.72 13.2702C28.9832 13.2782 32.1102 14.5794 34.4157 16.8887C36.7213 19.198 38.0174 22.327 38.02 25.5902C38.0254 28.867 36.7357 32.0132 34.4318 34.3433C32.128 36.6734 28.9966 37.9986 25.72 38.0302C22.4516 38.0276 19.318 36.7274 17.0078 34.4153C14.6977 32.1033 13.4 28.9686 13.4 25.7002C13.3946 22.421 14.6874 19.2729 16.9959 16.9438C19.3043 14.6147 22.4408 13.294 25.72 13.2702M25.72 11.1202C21.8831 11.1229 18.2042 12.6483 15.4911 15.3613C12.778 18.0744 11.2526 21.7534 11.25 25.5902C11.2526 29.4271 12.778 33.1061 15.4911 35.8192C18.2042 38.5322 21.8831 40.0576 25.72 40.0602C29.5577 40.0602 33.2382 38.5357 35.9518 35.8221C38.6655 33.1084 40.19 29.4279 40.19 25.5902C40.1979 23.6878 39.8291 21.8026 39.1047 20.0434C38.3803 18.2843 37.3148 16.686 35.9695 15.3407C34.6243 13.9955 33.026 12.9299 31.2668 12.2055C29.5076 11.4812 27.6224 11.1123 25.72 11.1202V11.1202Z" fill="#EBEBEB"/>
9
- <path d="M27.82 37.38H26.82V14.02H27.82V37.38ZM24.61 37.38H23.61V14.45H24.61V37.38Z" fill="black"/>
10
- <path d="M24.33 14.02H27.12V23.13H24.33V14.02ZM24.33 28.02H27.12V37.22H24.33V28.02Z" fill="white"/>
11
- <path d="M27.33 33.8003H24.33V32.8003H27.33V33.8003ZM27.33 31.8003H24.33V30.8003H27.33V31.8003ZM27.33 20.4403H24.33V19.4403H27.33V20.4403ZM27.12 18.5103H24.33V17.5103H27.12V18.5103Z" fill="black"/>
12
- <path d="M25.73 28.16C27.1494 28.16 28.3 27.0094 28.3 25.59C28.3 24.1706 27.1494 23.02 25.73 23.02C24.3107 23.02 23.16 24.1706 23.16 25.59C23.16 27.0094 24.3107 28.16 25.73 28.16Z" fill="white"/>
13
- <path d="M25.72 28.6603C24.9076 28.6576 24.1293 28.333 23.5557 27.7576C22.9821 27.1821 22.66 26.4028 22.66 25.5903C22.66 25.1884 22.7392 24.7905 22.893 24.4193C23.0467 24.048 23.2721 23.7107 23.5563 23.4265C23.8404 23.1424 24.1778 22.917 24.549 22.7632C24.9203 22.6094 25.3182 22.5303 25.72 22.5303C26.5325 22.5303 27.3119 22.8523 27.8873 23.4259C28.4628 23.9995 28.7874 24.7778 28.79 25.5903C28.7874 26.4037 28.4631 27.183 27.8879 27.7582C27.3128 28.3333 26.5334 28.6576 25.72 28.6603ZM25.72 23.5103C25.1692 23.5129 24.6417 23.7329 24.2522 24.1224C23.8627 24.5119 23.6427 25.0394 23.64 25.5903C23.64 26.1419 23.8592 26.671 24.2493 27.0611C24.6393 27.4511 25.1684 27.6703 25.72 27.6703C26.2717 27.6703 26.8007 27.4511 27.1908 27.0611C27.5809 26.671 27.8 26.1419 27.8 25.5903C27.8 25.0386 27.5809 24.5096 27.1908 24.1195C26.8007 23.7294 26.2717 23.5103 25.72 23.5103V23.5103Z" fill="black"/>
14
- <path d="M26.26 25.0601H37.62V26.2201H26.26V25.0601Z" fill="black"/>
15
- </g>
16
- <defs>
17
- <linearGradient id="paint0_linear_829_35664" x1="32.64" y1="39.83" x2="32.64" y2="12.92" gradientUnits="userSpaceOnUse">
18
- <stop stop-color="#B1EBE1"/>
19
- <stop offset="1" stop-color="#C1FAF0"/>
20
- </linearGradient>
21
- <linearGradient id="paint1_linear_829_35664" x1="18.92" y1="39.83" x2="18.92" y2="12.92" gradientUnits="userSpaceOnUse">
22
- <stop stop-color="#B1EBE1"/>
23
- <stop offset="1" stop-color="#C1FAF0"/>
24
- </linearGradient>
25
- <clipPath id="clip0_829_35664">
26
- <rect width="51.45" height="57.86" fill="white"/>
27
- </clipPath>
28
- </defs>
1
+ <svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="0.121094" width="20" height="20" rx="10" fill="#448EF7"/>
3
+ <path d="M15.5811 11.2275C15.1056 13.3084 13.4475 14.9388 11.3516 15.3739M15.5811 8.77225C15.0235 6.33197 12.8395 4.51123 10.2302 4.51123C7.62096 4.51123 5.43695 6.33197 4.87939 8.77225M4.87939 11.2275C5.35483 13.3084 7.01291 14.9388 9.10884 15.3739" stroke="white" stroke-width="0.9" stroke-linecap="round"/>
4
+ <circle cx="10.2302" cy="9.9997" r="4.01191" fill="#448EF7"/>
5
+ <line x1="16.4368" y1="10.0239" x2="3.93435" y2="10.0239" stroke="#448EF7" stroke-linecap="round"/>
6
+ <circle cx="10.2304" cy="9.99992" r="4.01188" fill="white"/>
7
+ <circle cx="10.2305" cy="9.99999" r="1.7954" fill="#448EF7"/>
8
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M10.2303 10C10.4927 10 10.7053 10.2127 10.7053 10.475L10.7053 14.2262C10.7053 14.4885 10.4927 14.7012 10.2303 14.7012C9.96799 14.7012 9.75532 14.4885 9.75532 14.2262L9.75532 10.475C9.75532 10.2127 9.96799 10 10.2303 10Z" fill="#448EF7"/>
29
9
  </svg>