@renaissancerentals/renaissance-component 10.1.55 → 11.0.1

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 (85) hide show
  1. package/lib/announcement/Banner.js +6 -21
  2. package/lib/application/ApplicationModal.js +5 -12
  3. package/lib/application/ApplicationSection.js +19 -46
  4. package/lib/application/service/ApplicationService.js +1 -5
  5. package/lib/asset/AssetModal.js +9 -26
  6. package/lib/asset/VideoModal.js +3 -10
  7. package/lib/asset/service/AssetService.js +1 -25
  8. package/lib/card/Card.js +3 -9
  9. package/lib/contact/ContactModal.js +8 -15
  10. package/lib/contact/ContactSection.js +37 -73
  11. package/lib/contact/ContactSectionSkeleton.js +1 -7
  12. package/lib/contact/data/Contact.js +1 -1
  13. package/lib/contact/service/ContactService.js +1 -12
  14. package/lib/data/RenaissanceData.js +1 -1
  15. package/lib/feature/FeatureSection.js +1 -6
  16. package/lib/floorplan/card/FloorplanCard.js +14 -39
  17. package/lib/floorplan/card/FloorplanCardSkeleton.js +1 -7
  18. package/lib/floorplan/card/FloorplanCardSlider.js +10 -30
  19. package/lib/floorplan/card/FloorplanSliderCard.js +4 -15
  20. package/lib/floorplan/card/SimilarFloorplanCard.js +8 -33
  21. package/lib/floorplan/card/TestimonialsCard.js +1 -8
  22. package/lib/floorplan/data/Calendar.js +1 -1
  23. package/lib/floorplan/data/Floorplan.d.ts +2 -0
  24. package/lib/floorplan/data/Floorplan.js +1 -6
  25. package/lib/floorplan/data/FloorplanFilters.js +1 -7
  26. package/lib/floorplan/data/Unit.js +1 -6
  27. package/lib/floorplan/filter/FloorplanDropDown.js +7 -23
  28. package/lib/floorplan/section/FloorplanHero.js +38 -86
  29. package/lib/floorplan/section/FloorplanSection.js +28 -72
  30. package/lib/floorplan/section/FloorplanSectionSkeleton.js +2 -15
  31. package/lib/floorplan/section/FloorplansHeader.js +39 -97
  32. package/lib/floorplan/section/FloorplansHeaderSekeleton.js +1 -8
  33. package/lib/floorplan/section/FloorplansSection.js +30 -54
  34. package/lib/floorplan/section/HeroBadgeStats.js +5 -16
  35. package/lib/floorplan/section/filter/Availability.js +3 -12
  36. package/lib/floorplan/section/filter/Bedroom.js +3 -11
  37. package/lib/floorplan/section/filter/Price.js +4 -11
  38. package/lib/floorplan/section/filter/Sort.js +6 -22
  39. package/lib/floorplan/section/filter/Style.js +3 -10
  40. package/lib/floorplan/service/FloorplanService.js +1 -75
  41. package/lib/footer/Footer.js +2 -13
  42. package/lib/gallery/DriveGallery.js +18 -43
  43. package/lib/gallery/Gallery.js +19 -50
  44. package/lib/gallery/GalleryHeroMain.js +8 -26
  45. package/lib/gallery/GalleryHeroMobile.js +6 -28
  46. package/lib/gallery/GalleryHeroSkeleton.js +1 -7
  47. package/lib/gallery/GalleryModal.js +12 -32
  48. package/lib/gallery/HeroImageCard.js +4 -9
  49. package/lib/gallery/ImageCard.js +3 -9
  50. package/lib/gallery/ImageCardSkeleton.js +2 -8
  51. package/lib/gallery/VideoTours.js +1 -6
  52. package/lib/gallery/VirtualTour.js +1 -5
  53. package/lib/header/InfoHeader.js +1 -6
  54. package/lib/index.js +1 -51
  55. package/lib/input/Captcha.js +6 -25
  56. package/lib/map/MapSection.js +1 -6
  57. package/lib/property/LeaseOfficeSkeleton.js +1 -7
  58. package/lib/property/PropertyLocation.js +3 -15
  59. package/lib/property/PropertyLocationSkeleton.js +1 -7
  60. package/lib/property/data/Property.js +1 -5
  61. package/lib/property/service/PropertyService.js +1 -5
  62. package/lib/review/ReviewSection.js +9 -35
  63. package/lib/service/AdminApi.js +1 -6
  64. package/lib/service/Api.js +1 -6
  65. package/lib/service/AssetApi.js +1 -7
  66. package/lib/service/GraphqlQuery.js +1 -6
  67. package/lib/sublet/SubletCard.js +5 -24
  68. package/lib/sublet/SubletImage.js +11 -32
  69. package/lib/sublet/SubletMessageModal.js +22 -48
  70. package/lib/sublet/SubletNotFound.js +1 -6
  71. package/lib/sublet/SubletSection.js +44 -93
  72. package/lib/sublet/SubletsSection.js +8 -27
  73. package/lib/sublet/data/Sublet.js +1 -1
  74. package/lib/sublet/services/SubletService.js +5 -19
  75. package/lib/summer-house/SummerHouseFeatures.js +1 -7
  76. package/lib/summer-house/SummerHousePricing.js +1 -6
  77. package/lib/summer-house/data/SummerHouseAmenities.js +1 -1
  78. package/lib/team/TeamSection.js +3 -16
  79. package/lib/team/card/TeamCard.js +2 -12
  80. package/lib/team/card/TeamCardSkeleton.js +1 -7
  81. package/lib/team/service/TeamService.js +1 -5
  82. package/lib/utils/PrettyPrintJson.js +1 -5
  83. package/lib/utils/Utils.js +1 -42
  84. package/lib/video/Video.js +11 -33
  85. package/package.json +4 -4
@@ -1,127 +1,86 @@
1
1
  "use strict";
2
2
 
3
3
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.FloorplanHero = void 0;
9
-
10
8
  var _react = _interopRequireWildcard(require("react"));
11
-
12
9
  require("./assets/FloorplanHero.scss");
13
-
14
10
  var _muncherUi = require("@contentmunch/muncher-ui");
15
-
16
11
  var _AssetService = require("../../asset/service/AssetService");
17
-
18
12
  var _GalleryHeroSkeleton = require("../../gallery/GalleryHeroSkeleton");
19
-
20
13
  var _GalleryHeroMain = require("../../gallery/GalleryHeroMain");
21
-
22
14
  var _Utils = require("../../utils/Utils");
23
-
24
15
  var _AssetModal = require("../../asset/AssetModal");
25
-
26
16
  var _FloorplanService = require("../service/FloorplanService");
27
-
28
17
  var _VideoTours = require("../../gallery/VideoTours");
29
-
30
18
  var _VirtualTour = require("../../gallery/VirtualTour");
31
-
32
19
  var _GalleryModal = require("../../gallery/GalleryModal");
33
-
34
20
  var _GalleryHeroMobile = require("../../gallery/GalleryHeroMobile");
35
-
36
21
  var _HeroBadgeStats = require("./HeroBadgeStats");
37
-
38
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
-
40
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
-
42
24
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
43
-
44
25
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
45
-
46
26
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
47
-
48
27
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
49
-
50
28
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
51
-
52
29
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
53
-
54
30
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
55
-
56
31
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
57
-
58
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
59
-
32
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
60
33
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
61
-
62
34
  var FloorplanHero = function FloorplanHero(_ref) {
63
35
  var _floorplan$units$, _floorplan$units$2;
64
-
65
36
  var floorplan = _ref.floorplan,
66
- contactClickHandler = _ref.contactClickHandler,
67
- applyClickHandler = _ref.applyClickHandler,
68
- handleRefToMap = _ref.handleRefToMap;
69
-
37
+ contactClickHandler = _ref.contactClickHandler,
38
+ applyClickHandler = _ref.applyClickHandler,
39
+ handleRefToMap = _ref.handleRefToMap;
70
40
  var _useState = (0, _react.useState)([]),
71
- _useState2 = _slicedToArray(_useState, 2),
72
- assets = _useState2[0],
73
- setAssets = _useState2[1];
74
-
41
+ _useState2 = _slicedToArray(_useState, 2),
42
+ assets = _useState2[0],
43
+ setAssets = _useState2[1];
75
44
  var _useState3 = (0, _react.useState)(true),
76
- _useState4 = _slicedToArray(_useState3, 2),
77
- isAssetsLoading = _useState4[0],
78
- setIsAssetsLoading = _useState4[1];
79
-
45
+ _useState4 = _slicedToArray(_useState3, 2),
46
+ isAssetsLoading = _useState4[0],
47
+ setIsAssetsLoading = _useState4[1];
80
48
  var _useState5 = (0, _react.useState)([]),
81
- _useState6 = _slicedToArray(_useState5, 2),
82
- videoTours = _useState6[0],
83
- setVideoTours = _useState6[1];
84
-
49
+ _useState6 = _slicedToArray(_useState5, 2),
50
+ videoTours = _useState6[0],
51
+ setVideoTours = _useState6[1];
85
52
  var _useState7 = (0, _react.useState)(undefined),
86
- _useState8 = _slicedToArray(_useState7, 2),
87
- virtualTour = _useState8[0],
88
- setVirtualTour = _useState8[1];
89
-
53
+ _useState8 = _slicedToArray(_useState7, 2),
54
+ virtualTour = _useState8[0],
55
+ setVirtualTour = _useState8[1];
90
56
  var _useState9 = (0, _react.useState)(false),
91
- _useState10 = _slicedToArray(_useState9, 2),
92
- showFloorplanModal = _useState10[0],
93
- setShowFloorplanModal = _useState10[1];
94
-
57
+ _useState10 = _slicedToArray(_useState9, 2),
58
+ showFloorplanModal = _useState10[0],
59
+ setShowFloorplanModal = _useState10[1];
95
60
  var _useState11 = (0, _react.useState)(1),
96
- _useState12 = _slicedToArray(_useState11, 2),
97
- totalPages = _useState12[0],
98
- setTotalPages = _useState12[1];
99
-
61
+ _useState12 = _slicedToArray(_useState11, 2),
62
+ totalPages = _useState12[0],
63
+ setTotalPages = _useState12[1];
100
64
  var _useState13 = (0, _react.useState)(0),
101
- _useState14 = _slicedToArray(_useState13, 2),
102
- toursCount = _useState14[0],
103
- setToursCount = _useState14[1];
104
-
65
+ _useState14 = _slicedToArray(_useState13, 2),
66
+ toursCount = _useState14[0],
67
+ setToursCount = _useState14[1];
105
68
  var _useState15 = (0, _react.useState)("photo"),
106
- _useState16 = _slicedToArray(_useState15, 2),
107
- currentView = _useState16[0],
108
- setCurrentView = _useState16[1];
109
-
69
+ _useState16 = _slicedToArray(_useState15, 2),
70
+ currentView = _useState16[0],
71
+ setCurrentView = _useState16[1];
110
72
  var _useState17 = (0, _react.useState)({}),
111
- _useState18 = _slicedToArray(_useState17, 2),
112
- assetInFocus = _useState18[0],
113
- setAssetInFocus = _useState18[1];
114
-
73
+ _useState18 = _slicedToArray(_useState17, 2),
74
+ assetInFocus = _useState18[0],
75
+ setAssetInFocus = _useState18[1];
115
76
  var _useState19 = (0, _react.useState)(0),
116
- _useState20 = _slicedToArray(_useState19, 2),
117
- assetIndex = _useState20[0],
118
- setAssetIndex = _useState20[1];
119
-
77
+ _useState20 = _slicedToArray(_useState19, 2),
78
+ assetIndex = _useState20[0],
79
+ setAssetIndex = _useState20[1];
120
80
  var _useState21 = (0, _react.useState)(false),
121
- _useState22 = _slicedToArray(_useState21, 2),
122
- showModal = _useState22[0],
123
- setShowModal = _useState22[1];
124
-
81
+ _useState22 = _slicedToArray(_useState21, 2),
82
+ showModal = _useState22[0],
83
+ setShowModal = _useState22[1];
125
84
  var imageClickedHandler = function imageClickedHandler(image) {
126
85
  setShowModal(true);
127
86
  setAssetInFocus(image);
@@ -129,12 +88,10 @@ var FloorplanHero = function FloorplanHero(_ref) {
129
88
  return value.id === image.id;
130
89
  }));
131
90
  };
132
-
133
91
  var modalCloseHandler = function modalCloseHandler() {
134
92
  setShowModal(false);
135
93
  setAssetInFocus({});
136
94
  };
137
-
138
95
  (0, _react.useEffect)(function () {
139
96
  if (floorplan.virtualTourLink) setVirtualTour(floorplan.virtualTourLink);
140
97
  var tourLinks = [];
@@ -148,13 +105,11 @@ var FloorplanHero = function FloorplanHero(_ref) {
148
105
  id: (0, _Utils.extractIdFrom)(floorplan.coverImage),
149
106
  name: "cover image"
150
107
  });
151
-
152
108
  if (floorplan.photosFolderId) {
153
109
  (0, _AssetService.getAssetsFrom)(floorplan.photosFolderId).then(function (galleryAssets) {
154
110
  currentAssets.push.apply(currentAssets, _toConsumableArray(galleryAssets));
155
111
  var total = 0;
156
112
  var totalToShow = currentAssets.length + count;
157
-
158
113
  if (totalToShow > 5) {
159
114
  setTotalPages(Math.trunc(total + (totalToShow - 5) / 8 + 1));
160
115
  }
@@ -167,14 +122,12 @@ var FloorplanHero = function FloorplanHero(_ref) {
167
122
  setIsAssetsLoading(false);
168
123
  }
169
124
  }, [floorplan]);
170
-
171
125
  var assetsToShow = function assetsToShow(i) {
172
126
  if (i === 0) return assets.slice(0, assets.length >= 5 - toursCount ? 5 - toursCount : assets.length);else {
173
127
  var prevCount = i * 8 + (i - 1) - (8 - toursCount - 1);
174
128
  return assets.slice(prevCount, prevCount + 8);
175
129
  }
176
130
  };
177
-
178
131
  return /*#__PURE__*/_react.default.createElement("section", {
179
132
  className: "section-floorplan--hero"
180
133
  }, isAssetsLoading ? /*#__PURE__*/_react.default.createElement(_GalleryHeroSkeleton.GalleryHeroSkeleton, null) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
@@ -278,6 +231,5 @@ var FloorplanHero = function FloorplanHero(_ref) {
278
231
  size: "large"
279
232
  }))))));
280
233
  };
281
-
282
234
  exports.FloorplanHero = FloorplanHero;
283
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGbG9vcnBsYW5IZXJvIiwiZmxvb3JwbGFuIiwiY29udGFjdENsaWNrSGFuZGxlciIsImFwcGx5Q2xpY2tIYW5kbGVyIiwiaGFuZGxlUmVmVG9NYXAiLCJ1c2VTdGF0ZSIsImFzc2V0cyIsInNldEFzc2V0cyIsImlzQXNzZXRzTG9hZGluZyIsInNldElzQXNzZXRzTG9hZGluZyIsInZpZGVvVG91cnMiLCJzZXRWaWRlb1RvdXJzIiwidW5kZWZpbmVkIiwidmlydHVhbFRvdXIiLCJzZXRWaXJ0dWFsVG91ciIsInNob3dGbG9vcnBsYW5Nb2RhbCIsInNldFNob3dGbG9vcnBsYW5Nb2RhbCIsInRvdGFsUGFnZXMiLCJzZXRUb3RhbFBhZ2VzIiwidG91cnNDb3VudCIsInNldFRvdXJzQ291bnQiLCJjdXJyZW50VmlldyIsInNldEN1cnJlbnRWaWV3IiwiYXNzZXRJbkZvY3VzIiwic2V0QXNzZXRJbkZvY3VzIiwiYXNzZXRJbmRleCIsInNldEFzc2V0SW5kZXgiLCJzaG93TW9kYWwiLCJzZXRTaG93TW9kYWwiLCJpbWFnZUNsaWNrZWRIYW5kbGVyIiwiaW1hZ2UiLCJmaW5kSW5kZXgiLCJ2YWx1ZSIsImlkIiwibW9kYWxDbG9zZUhhbmRsZXIiLCJ1c2VFZmZlY3QiLCJ2aXJ0dWFsVG91ckxpbmsiLCJ0b3VyTGlua3MiLCJ2aWRlb1RvdXJMaW5rIiwicHVzaCIsInRocmVlU2l4dHlWaWRlb1RvdXJMaW5rIiwiY291bnQiLCJsZW5ndGgiLCJjdXJyZW50QXNzZXRzIiwiZXh0cmFjdElkRnJvbSIsImNvdmVySW1hZ2UiLCJuYW1lIiwicGhvdG9zRm9sZGVySWQiLCJnZXRBc3NldHNGcm9tIiwidGhlbiIsImdhbGxlcnlBc3NldHMiLCJ0b3RhbCIsInRvdGFsVG9TaG93IiwiTWF0aCIsInRydW5jIiwiZmluYWxseSIsImFzc2V0c1RvU2hvdyIsImkiLCJzbGljZSIsInByZXZDb3VudCIsInByb3BlcnR5IiwiQXJyYXkiLCJtYXAiLCJ4IiwiaXNGbG9vcnBsYW5BdmFpbGFibGUiLCJwaG90byIsInVuaXRzIiwicmFuZ2VGcm9tIiwiYWRkcmVzcyIsInppcGNvZGUiLCJidXNSb3V0ZXMiLCJidXNSb3V0ZSIsImluZGV4IiwiYnVzUm91dGVMaW5rIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZWN0aW9uL0Zsb29ycGxhbkhlcm8udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9hc3NldHMvRmxvb3JwbGFuSGVyby5zY3NzXCI7XG5pbXBvcnQge0J1dHRvbiwgSWNvbiwgSXRlbVNsaWRlciwgU2hhcmVCdXR0b259IGZyb20gXCJAY29udGVudG11bmNoL211bmNoZXItdWlcIjtcbmltcG9ydCB7QXNzZXR9IGZyb20gXCIuLi8uLi9hc3NldC9kYXRhL0Fzc2V0XCI7XG5pbXBvcnQge2dldEFzc2V0c0Zyb219IGZyb20gXCIuLi8uLi9hc3NldC9zZXJ2aWNlL0Fzc2V0U2VydmljZVwiO1xuaW1wb3J0IHtHYWxsZXJ5SGVyb1NrZWxldG9ufSBmcm9tIFwiLi4vLi4vZ2FsbGVyeS9HYWxsZXJ5SGVyb1NrZWxldG9uXCI7XG5pbXBvcnQge0dhbGxlcnlIZXJvTWFpbn0gZnJvbSBcIi4uLy4uL2dhbGxlcnkvR2FsbGVyeUhlcm9NYWluXCI7XG5pbXBvcnQge2V4dHJhY3RJZEZyb20sIHJhbmdlRnJvbX0gZnJvbSBcIi4uLy4uL3V0aWxzL1V0aWxzXCI7XG5pbXBvcnQge0Zsb29ycGxhbn0gZnJvbSBcIi4uL2RhdGEvRmxvb3JwbGFuXCI7XG5pbXBvcnQge0Fzc2V0TW9kYWx9IGZyb20gXCIuLi8uLi9hc3NldC9Bc3NldE1vZGFsXCI7XG5pbXBvcnQge2lzRmxvb3JwbGFuQXZhaWxhYmxlfSBmcm9tIFwiLi4vc2VydmljZS9GbG9vcnBsYW5TZXJ2aWNlXCI7XG5pbXBvcnQge1ZpZGVvVG91cnN9IGZyb20gXCIuLi8uLi9nYWxsZXJ5L1ZpZGVvVG91cnNcIjtcbmltcG9ydCB7VmlydHVhbFRvdXJ9IGZyb20gXCIuLi8uLi9nYWxsZXJ5L1ZpcnR1YWxUb3VyXCI7XG5pbXBvcnQge0dhbGxlcnlNb2RhbH0gZnJvbSBcIi4uLy4uL2dhbGxlcnkvR2FsbGVyeU1vZGFsXCI7XG5pbXBvcnQge0dhbGxlcnlIZXJvTW9iaWxlfSBmcm9tIFwiLi4vLi4vZ2FsbGVyeS9HYWxsZXJ5SGVyb01vYmlsZVwiO1xuaW1wb3J0IHtIZXJvQmFkZ2VTdGF0c30gZnJvbSBcIi4vSGVyb0JhZGdlU3RhdHNcIjtcblxuZXhwb3J0IGNvbnN0IEZsb29ycGxhbkhlcm86IFJlYWN0LkZDPEZsb29ycGxhblByb3BzPiA9IChcbiAgICB7Zmxvb3JwbGFuLCBjb250YWN0Q2xpY2tIYW5kbGVyLCBhcHBseUNsaWNrSGFuZGxlciwgaGFuZGxlUmVmVG9NYXB9KSA9PiB7XG4gICAgY29uc3QgW2Fzc2V0cywgc2V0QXNzZXRzXSA9IHVzZVN0YXRlPEFzc2V0W10+KFtdKTtcbiAgICBjb25zdCBbaXNBc3NldHNMb2FkaW5nLCBzZXRJc0Fzc2V0c0xvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3ZpZGVvVG91cnMsIHNldFZpZGVvVG91cnNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKTtcbiAgICBjb25zdCBbdmlydHVhbFRvdXIsIHNldFZpcnR1YWxUb3VyXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICBjb25zdCBbc2hvd0Zsb29ycGxhbk1vZGFsLCBzZXRTaG93Rmxvb3JwbGFuTW9kYWxdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFt0b3RhbFBhZ2VzLCBzZXRUb3RhbFBhZ2VzXSA9IHVzZVN0YXRlKDEpO1xuICAgIGNvbnN0IFt0b3Vyc0NvdW50LCBzZXRUb3Vyc0NvdW50XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtjdXJyZW50Vmlldywgc2V0Q3VycmVudFZpZXddID0gdXNlU3RhdGU8XCJwaG90b1wiIHwgXCJ2aXJ0dWFsIHRvdXJcIiB8IFwidmlkZW8gdG91clwiPihcInBob3RvXCIpO1xuICAgIGNvbnN0IFthc3NldEluRm9jdXMsIHNldEFzc2V0SW5Gb2N1c10gPSB1c2VTdGF0ZTxBc3NldD4oe30gYXMgQXNzZXQpO1xuICAgIGNvbnN0IFthc3NldEluZGV4LCBzZXRBc3NldEluZGV4XSA9IHVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtzaG93TW9kYWwsIHNldFNob3dNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBjb25zdCBpbWFnZUNsaWNrZWRIYW5kbGVyID0gKGltYWdlOiBBc3NldCkgPT4ge1xuICAgICAgICBzZXRTaG93TW9kYWwodHJ1ZSk7XG4gICAgICAgIHNldEFzc2V0SW5Gb2N1cyhpbWFnZSk7XG4gICAgICAgIHNldEFzc2V0SW5kZXgoYXNzZXRzLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZS5pZCA9PT0gaW1hZ2UuaWQpKTtcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsQ2xvc2VIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICBzZXRTaG93TW9kYWwoZmFsc2UpO1xuICAgICAgICBzZXRBc3NldEluRm9jdXMoe30gYXMgQXNzZXQpO1xuICAgIH07XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZsb29ycGxhbi52aXJ0dWFsVG91ckxpbmspXG4gICAgICAgICAgICBzZXRWaXJ0dWFsVG91cihmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rKTtcbiAgICAgICAgY29uc3QgdG91ckxpbmtzID0gW107XG4gICAgICAgIGlmIChmbG9vcnBsYW4udmlkZW9Ub3VyTGluaylcbiAgICAgICAgICAgIHRvdXJMaW5rcy5wdXNoKGZsb29ycGxhbi52aWRlb1RvdXJMaW5rKTtcbiAgICAgICAgaWYgKGZsb29ycGxhbi50aHJlZVNpeHR5VmlkZW9Ub3VyTGluaylcbiAgICAgICAgICAgIHRvdXJMaW5rcy5wdXNoKGZsb29ycGxhbi50aHJlZVNpeHR5VmlkZW9Ub3VyTGluayk7XG4gICAgICAgIHNldFZpZGVvVG91cnModG91ckxpbmtzKTtcblxuICAgICAgICBsZXQgY291bnQgPSAodG91ckxpbmtzLmxlbmd0aCA+IDAgPyAxIDogMCkgKyAoZmxvb3JwbGFuLnZpcnR1YWxUb3VyTGluayA/IDEgOiAwKTtcbiAgICAgICAgc2V0VG91cnNDb3VudChjb3VudCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBc3NldHM6IEFzc2V0W10gPSBbXTtcbiAgICAgICAgY3VycmVudEFzc2V0cy5wdXNoKHtpZDogZXh0cmFjdElkRnJvbShmbG9vcnBsYW4uY292ZXJJbWFnZSksIG5hbWU6IFwiY292ZXIgaW1hZ2VcIn0gYXMgQXNzZXQpO1xuXG4gICAgICAgIGlmIChmbG9vcnBsYW4ucGhvdG9zRm9sZGVySWQpIHtcbiAgICAgICAgICAgIGdldEFzc2V0c0Zyb20oZmxvb3JwbGFuLnBob3Rvc0ZvbGRlcklkKS50aGVuKGdhbGxlcnlBc3NldHMgPT4ge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRBc3NldHMucHVzaCguLi5nYWxsZXJ5QXNzZXRzKTtcblxuICAgICAgICAgICAgICAgIGxldCB0b3RhbCA9IDA7XG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsVG9TaG93ID0gY3VycmVudEFzc2V0cy5sZW5ndGggKyBjb3VudDtcblxuICAgICAgICAgICAgICAgIGlmICh0b3RhbFRvU2hvdyA+IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VG90YWxQYWdlcyhNYXRoLnRydW5jKHRvdGFsICsgKCh0b3RhbFRvU2hvdyAtIDUpIC8gOCkgKyAxKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRBc3NldHMoY3VycmVudEFzc2V0cyk7XG4gICAgICAgICAgICAgICAgc2V0SXNBc3NldHNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0QXNzZXRzKGN1cnJlbnRBc3NldHMpO1xuICAgICAgICAgICAgc2V0SXNBc3NldHNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgfSwgW2Zsb29ycGxhbl0pXG5cbiAgICBjb25zdCBhc3NldHNUb1Nob3cgPSAoaTogbnVtYmVyKSA9PiB7XG5cbiAgICAgICAgaWYgKGkgPT09IDApXG4gICAgICAgICAgICByZXR1cm4gYXNzZXRzLnNsaWNlKDAsIGFzc2V0cy5sZW5ndGggPj0gKDUgLSB0b3Vyc0NvdW50KSA/IDUgLSB0b3Vyc0NvdW50IDogYXNzZXRzLmxlbmd0aCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IHByZXZDb3VudCA9IGkgKiA4ICsgKGkgLSAxKSAtICg4IC0gdG91cnNDb3VudCAtIDEpO1xuICAgICAgICAgICAgcmV0dXJuIGFzc2V0cy5zbGljZShwcmV2Q291bnQsIHByZXZDb3VudCArIDgpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic2VjdGlvbi1mbG9vcnBsYW4tLWhlcm9cIj5cbiAgICAgICAgICAgIHtpc0Fzc2V0c0xvYWRpbmcgPyA8R2FsbGVyeUhlcm9Ta2VsZXRvbi8+IDpcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdhbGxlcnktaGVyb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlNb2RhbCBhc3NldHM9e2Fzc2V0c30gYXNzZXRJbkZvY3VzPXthc3NldEluRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFzc2V0SW5Gb2N1cz17c2V0QXNzZXRJbkZvY3VzfSBzaG93TW9kYWw9e3Nob3dNb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRJbmRleD17YXNzZXRJbmRleH0gc2V0QXNzZXRJbmRleD17c2V0QXNzZXRJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxDbG9zZUhhbmRsZXI9e21vZGFsQ2xvc2VIYW5kbGVyfSBwcm9wZXJ0eUlkPXtmbG9vcnBsYW4ucHJvcGVydHkuaWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50VmlldyA9PT0gXCJwaG90b1wiID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBob3RvLXZpZXcgbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW1TbGlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZXJJdGVtcz17Wy4uLkFycmF5KHRvdGFsUGFnZXMpXS5tYXAoKHgsIGkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHYWxsZXJ5SGVyb01haW4gaXNBdmFpbGFibGVOb3c9e2lzRmxvb3JwbGFuQXZhaWxhYmxlKGZsb29ycGxhbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFRvdXI9e3ZpcnR1YWxUb3VyfSBpc0ZpcnN0PXtpID09PSAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdXJzQ291bnQ9e3RvdXJzQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q3VycmVudFZpZXc9e3NldEN1cnJlbnRWaWV3fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlQ2xpY2tlZEhhbmRsZXI9e2ltYWdlQ2xpY2tlZEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRzVG9TaG93PXthc3NldHNUb1Nob3coaSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJZD17Zmxvb3JwbGFuLnByb3BlcnR5LmlkfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwaG90by12aWV3IG1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlIZXJvTW9iaWxlIGFzc2V0cz17YXNzZXRzfSB0b3Vyc0NvdW50PXt0b3Vyc0NvdW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxUb3VyPXt2aXJ0dWFsVG91cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJyZW50Vmlldz17c2V0Q3VycmVudFZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VDbGlja2VkSGFuZGxlcj17aW1hZ2VDbGlja2VkSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkPXtmbG9vcnBsYW4ucHJvcGVydHkuaWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFZpZXcgPT09IFwidmlkZW8gdG91clwiID8gPFZpZGVvVG91cnMgdmlkZW9Ub3VyVXJscz17dmlkZW9Ub3Vyc30vPiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y3VycmVudFZpZXcgPT09IFwidmlydHVhbCB0b3VyXCIgPyA8VmlydHVhbFRvdXIgdmlydHVhbFRvdXJVcmw9e3ZpcnR1YWxUb3VyfS8+IDogXCJcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIZXJvQmFkZ2VTdGF0cyBjdXJyZW50Vmlldz17Y3VycmVudFZpZXd9IHNldEN1cnJlbnRWaWV3PXtzZXRDdXJyZW50Vmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbEFzc2V0cz17YXNzZXRzPy5sZW5ndGh9IHZpZGVvVG91cnM9e3ZpZGVvVG91cnN9IHZpcnR1YWxUb3VyPXt2aXJ0dWFsVG91cn0vPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvPlxuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8QXNzZXRNb2RhbCBhc3NldFVybD17Zmxvb3JwbGFuLnBob3RvfSBhc3NldFRpdGxlPVwiRmxvb3JwbGFuIGltYWdlXCIgc2hvd01vZGFsPXtzaG93Rmxvb3JwbGFuTW9kYWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTaG93TW9kYWw9e3NldFNob3dGbG9vcnBsYW5Nb2RhbH0gcHJvcGVydHlJZD17Zmxvb3JwbGFuLnByb3BlcnR5LmlkfS8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLS10d28tY29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi1jb2x1bW4tbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzPntmbG9vcnBsYW4ubmFtZX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi51bml0cy5sZW5ndGggPiAwID8gPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+JHtyYW5nZUZyb20oZmxvb3JwbGFuLnVuaXRzLCBcInJlbnRcIil9L21vPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJmbG9vcnBsYW4tLWRlc2NyaXB0aW9uXCI+e2Zsb29ycGxhbi51bml0c1swXT8uYWRkcmVzc30sIHtmbG9vcnBsYW4udW5pdHNbMF0/LnppcGNvZGV9PC9wPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz4gOiBcIlwifVxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZmVhdHVyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJzbWFsbFwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dGbG9vcnBsYW5Nb2RhbCh0cnVlKX0+PEljb24gbmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbj1cInJpZ2h0XCI+Vmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9vcnBsYW48L0ljb24+IDwvQnV0dG9uPnwmbmJzcDsmbmJzcDs8QnV0dG9uIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlUmVmVG9NYXAoKX0+PEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibWFwXCI+Vmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIE1hcDwvSWNvbj4gPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi5wcm9wZXJ0eS5idXNSb3V0ZXMubGVuZ3RoID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJ1cyBSb3V0ZXM6Jm5ic3A7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmbG9vcnBsYW4ucHJvcGVydHkuYnVzUm91dGVzLm1hcCgoYnVzUm91dGUsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17XCJidXMtcm91dGUtXCIgKyBpbmRleH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9e2J1c1JvdXRlLmJ1c1JvdXRlTGlua30gdGFyZ2V0PVwiX2JsYW5rXCI+e2J1c1JvdXRlLmJ1c1JvdXRlfTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2luZGV4IDwgZmxvb3JwbGFuLnByb3BlcnR5LmJ1c1JvdXRlcy5sZW5ndGggLSAxID8gXCIsIFwiIDogXCJcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiIGZsb29ycGxhbi1jb2x1bW4tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJwcmltYXJ5XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2NvbnRhY3RDbGlja0hhbmRsZXJ9PmNvbnRhY3QgdXM8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIHNpemU9XCJtZWRpdW1cIiBvbkNsaWNrPXthcHBseUNsaWNrSGFuZGxlcn0+YXBwbHk8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hhcmVCdXR0b24gdGl0bGU9XCJDaGVjayBvdXQgdGhpcyBhcGFydG1lbnRcIiBzaXplPVwibGFyZ2VcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb29ycGxhblByb3BzIHtcbiAgICBmbG9vcnBsYW46IEZsb29ycGxhbjtcbiAgICBjb250YWN0Q2xpY2tIYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIGFwcGx5Q2xpY2tIYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIGhhbmRsZVJlZlRvTWFwOiAoKSA9PiB2b2lkO1xufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7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
235
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbXVuY2hlclVpIiwiX0Fzc2V0U2VydmljZSIsIl9HYWxsZXJ5SGVyb1NrZWxldG9uIiwiX0dhbGxlcnlIZXJvTWFpbiIsIl9VdGlscyIsIl9Bc3NldE1vZGFsIiwiX0Zsb29ycGxhblNlcnZpY2UiLCJfVmlkZW9Ub3VycyIsIl9WaXJ0dWFsVG91ciIsIl9HYWxsZXJ5TW9kYWwiLCJfR2FsbGVyeUhlcm9Nb2JpbGUiLCJfSGVyb0JhZGdlU3RhdHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibyIsIm1pbkxlbiIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImxlbmd0aCIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImVyciIsInJldHVybiIsIkZsb29ycGxhbkhlcm8iLCJfcmVmIiwiX2Zsb29ycGxhbiR1bml0cyQiLCJfZmxvb3JwbGFuJHVuaXRzJDIiLCJmbG9vcnBsYW4iLCJjb250YWN0Q2xpY2tIYW5kbGVyIiwiYXBwbHlDbGlja0hhbmRsZXIiLCJoYW5kbGVSZWZUb01hcCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFzc2V0cyIsInNldEFzc2V0cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNBc3NldHNMb2FkaW5nIiwic2V0SXNBc3NldHNMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ2aWRlb1RvdXJzIiwic2V0VmlkZW9Ub3VycyIsIl91c2VTdGF0ZTciLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGU4IiwidmlydHVhbFRvdXIiLCJzZXRWaXJ0dWFsVG91ciIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUxMCIsInNob3dGbG9vcnBsYW5Nb2RhbCIsInNldFNob3dGbG9vcnBsYW5Nb2RhbCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ0b3RhbFBhZ2VzIiwic2V0VG90YWxQYWdlcyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJ0b3Vyc0NvdW50Iiwic2V0VG91cnNDb3VudCIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50VmlldyIsInNldEN1cnJlbnRWaWV3IiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImFzc2V0SW5Gb2N1cyIsInNldEFzc2V0SW5Gb2N1cyIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJhc3NldEluZGV4Iiwic2V0QXNzZXRJbmRleCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJzaG93TW9kYWwiLCJzZXRTaG93TW9kYWwiLCJpbWFnZUNsaWNrZWRIYW5kbGVyIiwiaW1hZ2UiLCJmaW5kSW5kZXgiLCJpZCIsIm1vZGFsQ2xvc2VIYW5kbGVyIiwidXNlRWZmZWN0IiwidmlydHVhbFRvdXJMaW5rIiwidG91ckxpbmtzIiwidmlkZW9Ub3VyTGluayIsInRocmVlU2l4dHlWaWRlb1RvdXJMaW5rIiwiY291bnQiLCJjdXJyZW50QXNzZXRzIiwiZXh0cmFjdElkRnJvbSIsImNvdmVySW1hZ2UiLCJwaG90b3NGb2xkZXJJZCIsImdldEFzc2V0c0Zyb20iLCJ0aGVuIiwiZ2FsbGVyeUFzc2V0cyIsImFwcGx5IiwidG90YWwiLCJ0b3RhbFRvU2hvdyIsIk1hdGgiLCJ0cnVuYyIsImZpbmFsbHkiLCJhc3NldHNUb1Nob3ciLCJwcmV2Q291bnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiR2FsbGVyeUhlcm9Ta2VsZXRvbiIsIkZyYWdtZW50IiwiR2FsbGVyeU1vZGFsIiwicHJvcGVydHlJZCIsInByb3BlcnR5IiwiSXRlbVNsaWRlciIsInNsaWRlckl0ZW1zIiwibWFwIiwieCIsIkdhbGxlcnlIZXJvTWFpbiIsImlzQXZhaWxhYmxlTm93IiwiaXNGbG9vcnBsYW5BdmFpbGFibGUiLCJpc0ZpcnN0IiwiR2FsbGVyeUhlcm9Nb2JpbGUiLCJWaWRlb1RvdXJzIiwidmlkZW9Ub3VyVXJscyIsIlZpcnR1YWxUb3VyIiwidmlydHVhbFRvdXJVcmwiLCJIZXJvQmFkZ2VTdGF0cyIsInRvdGFsQXNzZXRzIiwiQXNzZXRNb2RhbCIsImFzc2V0VXJsIiwicGhvdG8iLCJhc3NldFRpdGxlIiwidW5pdHMiLCJyYW5nZUZyb20iLCJhZGRyZXNzIiwiemlwY29kZSIsIkJ1dHRvbiIsInNpemUiLCJvbkNsaWNrIiwiSWNvbiIsIm9yaWVudGF0aW9uIiwiYnVzUm91dGVzIiwiYnVzUm91dGUiLCJpbmRleCIsImhyZWYiLCJidXNSb3V0ZUxpbmsiLCJ0YXJnZXQiLCJ2YXJpYW50IiwiU2hhcmVCdXR0b24iLCJ0aXRsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZmxvb3JwbGFuL3NlY3Rpb24vRmxvb3JwbGFuSGVyby50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgXCIuL2Fzc2V0cy9GbG9vcnBsYW5IZXJvLnNjc3NcIjtcbmltcG9ydCB7QnV0dG9uLCBJY29uLCBJdGVtU2xpZGVyLCBTaGFyZUJ1dHRvbn0gZnJvbSBcIkBjb250ZW50bXVuY2gvbXVuY2hlci11aVwiO1xuaW1wb3J0IHtBc3NldH0gZnJvbSBcIi4uLy4uL2Fzc2V0L2RhdGEvQXNzZXRcIjtcbmltcG9ydCB7Z2V0QXNzZXRzRnJvbX0gZnJvbSBcIi4uLy4uL2Fzc2V0L3NlcnZpY2UvQXNzZXRTZXJ2aWNlXCI7XG5pbXBvcnQge0dhbGxlcnlIZXJvU2tlbGV0b259IGZyb20gXCIuLi8uLi9nYWxsZXJ5L0dhbGxlcnlIZXJvU2tlbGV0b25cIjtcbmltcG9ydCB7R2FsbGVyeUhlcm9NYWlufSBmcm9tIFwiLi4vLi4vZ2FsbGVyeS9HYWxsZXJ5SGVyb01haW5cIjtcbmltcG9ydCB7ZXh0cmFjdElkRnJvbSwgcmFuZ2VGcm9tfSBmcm9tIFwiLi4vLi4vdXRpbHMvVXRpbHNcIjtcbmltcG9ydCB7Rmxvb3JwbGFufSBmcm9tIFwiLi4vZGF0YS9GbG9vcnBsYW5cIjtcbmltcG9ydCB7QXNzZXRNb2RhbH0gZnJvbSBcIi4uLy4uL2Fzc2V0L0Fzc2V0TW9kYWxcIjtcbmltcG9ydCB7aXNGbG9vcnBsYW5BdmFpbGFibGV9IGZyb20gXCIuLi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2VcIjtcbmltcG9ydCB7VmlkZW9Ub3Vyc30gZnJvbSBcIi4uLy4uL2dhbGxlcnkvVmlkZW9Ub3Vyc1wiO1xuaW1wb3J0IHtWaXJ0dWFsVG91cn0gZnJvbSBcIi4uLy4uL2dhbGxlcnkvVmlydHVhbFRvdXJcIjtcbmltcG9ydCB7R2FsbGVyeU1vZGFsfSBmcm9tIFwiLi4vLi4vZ2FsbGVyeS9HYWxsZXJ5TW9kYWxcIjtcbmltcG9ydCB7R2FsbGVyeUhlcm9Nb2JpbGV9IGZyb20gXCIuLi8uLi9nYWxsZXJ5L0dhbGxlcnlIZXJvTW9iaWxlXCI7XG5pbXBvcnQge0hlcm9CYWRnZVN0YXRzfSBmcm9tIFwiLi9IZXJvQmFkZ2VTdGF0c1wiO1xuXG5leHBvcnQgY29uc3QgRmxvb3JwbGFuSGVybzogUmVhY3QuRkM8Rmxvb3JwbGFuUHJvcHM+ID0gKFxuICAgIHtmbG9vcnBsYW4sIGNvbnRhY3RDbGlja0hhbmRsZXIsIGFwcGx5Q2xpY2tIYW5kbGVyLCBoYW5kbGVSZWZUb01hcH0pID0+IHtcbiAgICBjb25zdCBbYXNzZXRzLCBzZXRBc3NldHNdID0gdXNlU3RhdGU8QXNzZXRbXT4oW10pO1xuICAgIGNvbnN0IFtpc0Fzc2V0c0xvYWRpbmcsIHNldElzQXNzZXRzTG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbdmlkZW9Ub3Vycywgc2V0VmlkZW9Ub3Vyc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pO1xuICAgIGNvbnN0IFt2aXJ0dWFsVG91ciwgc2V0VmlydHVhbFRvdXJdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIGNvbnN0IFtzaG93Rmxvb3JwbGFuTW9kYWwsIHNldFNob3dGbG9vcnBsYW5Nb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3RvdGFsUGFnZXMsIHNldFRvdGFsUGFnZXNdID0gdXNlU3RhdGUoMSk7XG4gICAgY29uc3QgW3RvdXJzQ291bnQsIHNldFRvdXJzQ291bnRdID0gdXNlU3RhdGUoMCk7XG4gICAgY29uc3QgW2N1cnJlbnRWaWV3LCBzZXRDdXJyZW50Vmlld10gPSB1c2VTdGF0ZTxcInBob3RvXCIgfCBcInZpcnR1YWwgdG91clwiIHwgXCJ2aWRlbyB0b3VyXCI+KFwicGhvdG9cIik7XG4gICAgY29uc3QgW2Fzc2V0SW5Gb2N1cywgc2V0QXNzZXRJbkZvY3VzXSA9IHVzZVN0YXRlPEFzc2V0Pih7fSBhcyBBc3NldCk7XG4gICAgY29uc3QgW2Fzc2V0SW5kZXgsIHNldEFzc2V0SW5kZXhdID0gdXNlU3RhdGUoMCk7XG4gICAgY29uc3QgW3Nob3dNb2RhbCwgc2V0U2hvd01vZGFsXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIGNvbnN0IGltYWdlQ2xpY2tlZEhhbmRsZXIgPSAoaW1hZ2U6IEFzc2V0KSA9PiB7XG4gICAgICAgIHNldFNob3dNb2RhbCh0cnVlKTtcbiAgICAgICAgc2V0QXNzZXRJbkZvY3VzKGltYWdlKTtcbiAgICAgICAgc2V0QXNzZXRJbmRleChhc3NldHMuZmluZEluZGV4KHZhbHVlID0+IHZhbHVlLmlkID09PSBpbWFnZS5pZCkpO1xuICAgIH07XG4gICAgY29uc3QgbW9kYWxDbG9zZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHNldFNob3dNb2RhbChmYWxzZSk7XG4gICAgICAgIHNldEFzc2V0SW5Gb2N1cyh7fSBhcyBBc3NldCk7XG4gICAgfTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoZmxvb3JwbGFuLnZpcnR1YWxUb3VyTGluaylcbiAgICAgICAgICAgIHNldFZpcnR1YWxUb3VyKGZsb29ycGxhbi52aXJ0dWFsVG91ckxpbmspO1xuICAgICAgICBjb25zdCB0b3VyTGlua3MgPSBbXTtcbiAgICAgICAgaWYgKGZsb29ycGxhbi52aWRlb1RvdXJMaW5rKVxuICAgICAgICAgICAgdG91ckxpbmtzLnB1c2goZmxvb3JwbGFuLnZpZGVvVG91ckxpbmspO1xuICAgICAgICBpZiAoZmxvb3JwbGFuLnRocmVlU2l4dHlWaWRlb1RvdXJMaW5rKVxuICAgICAgICAgICAgdG91ckxpbmtzLnB1c2goZmxvb3JwbGFuLnRocmVlU2l4dHlWaWRlb1RvdXJMaW5rKTtcbiAgICAgICAgc2V0VmlkZW9Ub3Vycyh0b3VyTGlua3MpO1xuXG4gICAgICAgIGxldCBjb3VudCA9ICh0b3VyTGlua3MubGVuZ3RoID4gMCA/IDEgOiAwKSArIChmbG9vcnBsYW4udmlydHVhbFRvdXJMaW5rID8gMSA6IDApO1xuICAgICAgICBzZXRUb3Vyc0NvdW50KGNvdW50KTtcbiAgICAgICAgY29uc3QgY3VycmVudEFzc2V0czogQXNzZXRbXSA9IFtdO1xuICAgICAgICBjdXJyZW50QXNzZXRzLnB1c2goe2lkOiBleHRyYWN0SWRGcm9tKGZsb29ycGxhbi5jb3ZlckltYWdlKSwgbmFtZTogXCJjb3ZlciBpbWFnZVwifSBhcyBBc3NldCk7XG5cbiAgICAgICAgaWYgKGZsb29ycGxhbi5waG90b3NGb2xkZXJJZCkge1xuICAgICAgICAgICAgZ2V0QXNzZXRzRnJvbShmbG9vcnBsYW4ucGhvdG9zRm9sZGVySWQpLnRoZW4oZ2FsbGVyeUFzc2V0cyA9PiB7XG4gICAgICAgICAgICAgICAgY3VycmVudEFzc2V0cy5wdXNoKC4uLmdhbGxlcnlBc3NldHMpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgdG90YWxUb1Nob3cgPSBjdXJyZW50QXNzZXRzLmxlbmd0aCArIGNvdW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsVG9TaG93ID4gNSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUb3RhbFBhZ2VzKE1hdGgudHJ1bmModG90YWwgKyAoKHRvdGFsVG9TaG93IC0gNSkgLyA4KSArIDEpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEFzc2V0cyhjdXJyZW50QXNzZXRzKTtcbiAgICAgICAgICAgICAgICBzZXRJc0Fzc2V0c0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRBc3NldHMoY3VycmVudEFzc2V0cyk7XG4gICAgICAgICAgICBzZXRJc0Fzc2V0c0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICB9LCBbZmxvb3JwbGFuXSlcblxuICAgIGNvbnN0IGFzc2V0c1RvU2hvdyA9IChpOiBudW1iZXIpID0+IHtcblxuICAgICAgICBpZiAoaSA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBhc3NldHMuc2xpY2UoMCwgYXNzZXRzLmxlbmd0aCA+PSAoNSAtIHRvdXJzQ291bnQpID8gNSAtIHRvdXJzQ291bnQgOiBhc3NldHMubGVuZ3RoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgcHJldkNvdW50ID0gaSAqIDggKyAoaSAtIDEpIC0gKDggLSB0b3Vyc0NvdW50IC0gMSk7XG4gICAgICAgICAgICByZXR1cm4gYXNzZXRzLnNsaWNlKHByZXZDb3VudCwgcHJldkNvdW50ICsgOCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJzZWN0aW9uLWZsb29ycGxhbi0taGVyb1wiPlxuICAgICAgICAgICAge2lzQXNzZXRzTG9hZGluZyA/IDxHYWxsZXJ5SGVyb1NrZWxldG9uLz4gOlxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2FsbGVyeS1oZXJvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8R2FsbGVyeU1vZGFsIGFzc2V0cz17YXNzZXRzfSBhc3NldEluRm9jdXM9e2Fzc2V0SW5Gb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXNzZXRJbkZvY3VzPXtzZXRBc3NldEluRm9jdXN9IHNob3dNb2RhbD17c2hvd01vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldEluZGV4PXthc3NldEluZGV4fSBzZXRBc3NldEluZGV4PXtzZXRBc3NldEluZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbENsb3NlSGFuZGxlcj17bW9kYWxDbG9zZUhhbmRsZXJ9IHByb3BlcnR5SWQ9e2Zsb29ycGxhbi5wcm9wZXJ0eS5pZH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRWaWV3ID09PSBcInBob3RvXCIgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGhvdG8tdmlldyBtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbVNsaWRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlckl0ZW1zPXtbLi4uQXJyYXkodG90YWxQYWdlcyldLm1hcCgoeCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdhbGxlcnlIZXJvTWFpbiBpc0F2YWlsYWJsZU5vdz17aXNGbG9vcnBsYW5BdmFpbGFibGUoZmxvb3JwbGFuKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsVG91cj17dmlydHVhbFRvdXJ9IGlzRmlyc3Q9e2kgPT09IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG91cnNDb3VudD17dG91cnNDb3VudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDdXJyZW50Vmlldz17c2V0Q3VycmVudFZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VDbGlja2VkSGFuZGxlcj17aW1hZ2VDbGlja2VkSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NldHNUb1Nob3c9e2Fzc2V0c1RvU2hvdyhpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eUlkPXtmbG9vcnBsYW4ucHJvcGVydHkuaWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBob3RvLXZpZXcgbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R2FsbGVyeUhlcm9Nb2JpbGUgYXNzZXRzPXthc3NldHN9IHRvdXJzQ291bnQ9e3RvdXJzQ291bnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbFRvdXI9e3ZpcnR1YWxUb3VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRWaWV3PXtzZXRDdXJyZW50Vmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUNsaWNrZWRIYW5kbGVyPXtpbWFnZUNsaWNrZWRIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SWQ9e2Zsb29ycGxhbi5wcm9wZXJ0eS5pZH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz4gOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50VmlldyA9PT0gXCJ2aWRlbyB0b3VyXCIgPyA8VmlkZW9Ub3VycyB2aWRlb1RvdXJVcmxzPXt2aWRlb1RvdXJzfS8+IDogXCJcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50VmlldyA9PT0gXCJ2aXJ0dWFsIHRvdXJcIiA/IDxWaXJ0dWFsVG91ciB2aXJ0dWFsVG91clVybD17dmlydHVhbFRvdXJ9Lz4gOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgPEhlcm9CYWRnZVN0YXRzIGN1cnJlbnRWaWV3PXtjdXJyZW50Vmlld30gc2V0Q3VycmVudFZpZXc9e3NldEN1cnJlbnRWaWV3fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQXNzZXRzPXthc3NldHM/Lmxlbmd0aH0gdmlkZW9Ub3Vycz17dmlkZW9Ub3Vyc30gdmlydHVhbFRvdXI9e3ZpcnR1YWxUb3VyfS8+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC8+XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxBc3NldE1vZGFsIGFzc2V0VXJsPXtmbG9vcnBsYW4ucGhvdG99IGFzc2V0VGl0bGU9XCJGbG9vcnBsYW4gaW1hZ2VcIiBzaG93TW9kYWw9e3Nob3dGbG9vcnBsYW5Nb2RhbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNob3dNb2RhbD17c2V0U2hvd0Zsb29ycGxhbk1vZGFsfSBwcm9wZXJ0eUlkPXtmbG9vcnBsYW4ucHJvcGVydHkuaWR9Lz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbG9vcnBsYW4tLXR3by1jb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLWNvbHVtbi1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+e2Zsb29ycGxhbi5uYW1lfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLnVuaXRzLmxlbmd0aCA+IDAgPyA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND4ke3JhbmdlRnJvbShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKX0vbW88L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImZsb29ycGxhbi0tZGVzY3JpcHRpb25cIj57Zmxvb3JwbGFuLnVuaXRzWzBdPy5hZGRyZXNzfSwge2Zsb29ycGxhbi51bml0c1swXT8uemlwY29kZX08L3A+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPiA6IFwiXCJ9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxvb3JwbGFuLS1mZWF0dXJlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gc2l6ZT1cInNtYWxsXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0Zsb29ycGxhbk1vZGFsKHRydWUpfT48SWNvbiBuYW1lPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uPVwicmlnaHRcIj5WaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb29ycGxhbjwvSWNvbj4gPC9CdXR0b24+fCZuYnNwOyZuYnNwOzxCdXR0b24gc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVSZWZUb01hcCgpfT48SWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJtYXBcIj5WaWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gTWFwPC9JY29uPiA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Zmxvb3JwbGFuLnByb3BlcnR5LmJ1c1JvdXRlcy5sZW5ndGggPiAwID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QnVzIFJvdXRlczombmJzcDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2Zsb29ycGxhbi5wcm9wZXJ0eS5idXNSb3V0ZXMubWFwKChidXNSb3V0ZSwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4ga2V5PXtcImJ1cy1yb3V0ZS1cIiArIGluZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj17YnVzUm91dGUuYnVzUm91dGVMaW5rfSB0YXJnZXQ9XCJfYmxhbmtcIj57YnVzUm91dGUuYnVzUm91dGV9PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5kZXggPCBmbG9vcnBsYW4ucHJvcGVydHkuYnVzUm91dGVzLmxlbmd0aCAtIDEgPyBcIiwgXCIgOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCIgZmxvb3JwbGFuLWNvbHVtbi1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInByaW1hcnlcIiBzaXplPVwibWVkaXVtXCIgb25DbGljaz17Y29udGFjdENsaWNrSGFuZGxlcn0+Y29udGFjdCB1czwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cInRlcnRpYXJ5XCIgc2l6ZT1cIm1lZGl1bVwiIG9uQ2xpY2s9e2FwcGx5Q2xpY2tIYW5kbGVyfT5hcHBseTwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGFyZUJ1dHRvbiB0aXRsZT1cIkNoZWNrIG91dCB0aGlzIGFwYXJ0bWVudFwiIHNpemU9XCJsYXJnZVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvb3JwbGFuUHJvcHMge1xuICAgIGZsb29ycGxhbjogRmxvb3JwbGFuO1xuICAgIGNvbnRhY3RDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgYXBwbHlDbGlja0hhbmRsZXI6ICgpID0+IHZvaWQ7XG4gICAgaGFuZGxlUmVmVG9NYXA6ICgpID0+IHZvaWQ7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxhQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksZ0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUVBLElB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