@kepler.gl/reducers 3.3.0-alpha.13 → 3.3.0-alpha.14

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.
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.fitBoundsUpdater = exports.INITIAL_MAP_STATE = void 0;
7
+ exports.fitBoundsUpdater = exports.applyMapStateUpdater = exports.INITIAL_MAP_STATE = void 0;
8
8
  exports.getMapDimForSplitMap = getMapDimForSplitMap;
9
9
  exports.globeConfigChangeUpdater = void 0;
10
10
  exports.pickViewportPropsFromMapState = pickViewportPropsFromMapState;
@@ -160,17 +160,67 @@ var updateMapUpdater = exports.updateMapUpdater = function updateMapUpdater(stat
160
160
  });
161
161
  };
162
162
 
163
+ /**
164
+ * Apply a partial map state from the viewport JSON editor.
165
+ * Preserves current width/height so saved JSON cannot resize the map container,
166
+ * including nested split-map viewports. When viewports are unsynced, camera
167
+ * fields are applied to the opened map pane (`mapIndex`), matching `updateMap`.
168
+ * @memberof mapStateUpdaters
169
+ * @public
170
+ */
171
+ var APPLY_MAP_STATE_VIEWPORT_KEYS = ['latitude', 'longitude', 'zoom', 'pitch', 'bearing', 'dragRotate', 'minZoom', 'maxZoom', 'maxPitch'];
172
+ var applyMapStateUpdater = exports.applyMapStateUpdater = function applyMapStateUpdater(state, action) {
173
+ var _action$meta$mapIndex, _action$meta;
174
+ var next = action.payload || {};
175
+ var mapIndex = (_action$meta$mapIndex = (_action$meta = action.meta) === null || _action$meta === void 0 ? void 0 : _action$meta.mapIndex) !== null && _action$meta$mapIndex !== void 0 ? _action$meta$mapIndex : 0;
176
+ var width = state.width,
177
+ height = state.height;
178
+ var nextConfig = _objectSpread({}, next);
179
+ delete nextConfig.width;
180
+ delete nextConfig.height;
181
+ if (Array.isArray(next.splitMapViewports)) {
182
+ nextConfig.splitMapViewports = next.splitMapViewports.map(function (viewport, i) {
183
+ var _state$splitMapViewpo, _state$splitMapViewpo2, _state$splitMapViewpo3, _state$splitMapViewpo4;
184
+ return _objectSpread(_objectSpread({}, viewport), {}, {
185
+ width: (_state$splitMapViewpo = (_state$splitMapViewpo2 = state.splitMapViewports[i]) === null || _state$splitMapViewpo2 === void 0 ? void 0 : _state$splitMapViewpo2.width) !== null && _state$splitMapViewpo !== void 0 ? _state$splitMapViewpo : width,
186
+ height: (_state$splitMapViewpo3 = (_state$splitMapViewpo4 = state.splitMapViewports[i]) === null || _state$splitMapViewpo4 === void 0 ? void 0 : _state$splitMapViewpo4.height) !== null && _state$splitMapViewpo3 !== void 0 ? _state$splitMapViewpo3 : height
187
+ });
188
+ });
189
+ }
190
+ var mergedState = (0, _deepmerge["default"])(state, nextConfig, {
191
+ arrayMerge: function arrayMerge(_destinationArray, sourceArray) {
192
+ return sourceArray;
193
+ }
194
+ });
195
+ var applied = (0, _utils.validateViewPort)(_objectSpread(_objectSpread({}, mergedState), {}, {
196
+ width: width,
197
+ height: height
198
+ }));
199
+ if (!state.isViewportSynced && state.splitMapViewports.length) {
200
+ var viewport = (0, _pick["default"])(next, APPLY_MAP_STATE_VIEWPORT_KEYS);
201
+ if (Object.keys(viewport).length) {
202
+ return updateMapUpdater(applied, {
203
+ payload: {
204
+ viewport: viewport,
205
+ mapIndex: mapIndex
206
+ }
207
+ });
208
+ }
209
+ }
210
+ return applied;
211
+ };
212
+
163
213
  /**
164
214
  * Fit map viewport to bounds
165
215
  * @memberof mapStateUpdaters
166
216
  * @public
167
217
  */
168
218
  var fitBoundsUpdater = exports.fitBoundsUpdater = function fitBoundsUpdater(state, action) {
169
- var _action$meta, _state$globe;
219
+ var _action$meta2, _state$globe;
170
220
  var centerAndZoom = (0, _utils.getCenterAndZoomFromBounds)(action.payload, {
171
221
  width: state.width,
172
222
  height: state.height,
173
- padding: (_action$meta = action.meta) === null || _action$meta === void 0 ? void 0 : _action$meta.padding
223
+ padding: (_action$meta2 = action.meta) === null || _action$meta2 === void 0 ? void 0 : _action$meta2.padding
174
224
  });
175
225
  if (!centerAndZoom) {
176
226
  // bounds is invalid
@@ -655,4 +705,4 @@ function updateViewport(originalViewport, viewportUpdates) {
655
705
  }
656
706
  return newViewport;
657
707
  }
658
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwVmlld01vZGUiLCJNYXBWaWV3TW9kZSIsIk1PREVfMkQiLCJnbG9iZSIsImVuYWJsZWQiLCJjb25maWciLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1hcFNwbGl0TW9kZSIsIk1hcFNwbGl0TW9kZSIsIlNJTkdMRV9NQVAiLCJzd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsIl9hY3Rpb24kbWV0YSIsIl9zdGF0ZSRnbG9iZSIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsInBhZGRpbmciLCJtZXRhIiwiaXNHbG9iZU1vZGUiLCJCb29sZWFuIiwiTWF0aCIsIm1pbiIsIm1heCIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJuZXdTdGF0ZSIsImNlbnRlciIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIl9zdGF0ZSRnbG9iZTIiLCJ3YXNHbG9iZUVuYWJsZWQiLCJNT0RFXzNEIiwic2V0TWFwVmlld01vZGVVcGRhdGVyIiwiX3N0YXRlJGdsb2JlMyIsIm5leHRTdGF0ZSIsIk1PREVfR0xPQkUiLCJnbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiRFVBTF9NQVAiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwicHJldk1vZGUiLCJTV0lQRV9DT01QQVJFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJwZXJjZW50YWdlIiwiY2xhbXBlZCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwicGljayIsImRlZmluZWRQcm9wcyIsIm9iaiIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwiX2dsb2JlIiwibmV3Vmlld3BvcnQiLCJpc0dsb2JlIiwiX25ld1ZpZXdwb3J0JGxhdGl0dWRlIiwiR0xPQkVfTUFYX0xBVElUVURFIiwiem9vbUFkanVzdG1lbnQiLCJsb2cyIiwiY29zIiwiUEkiLCJ2YWxpZGF0ZUJvdW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCB7Ym9vbGVhbldpdGhpbn0gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IHtiYm94UG9seWdvbn0gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7Zml0Qm91bmRzfSBmcm9tICdAbWF0aC5nbC93ZWItbWVyY2F0b3InO1xuaW1wb3J0IGRlZXBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnO1xuaW1wb3J0IHBpY2sgZnJvbSAnZXMtdG9vbGtpdC9jb21wYXQvcGljayc7XG5cbmltcG9ydCB7XG4gIGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzLFxuICB2YWxpZGF0ZUJvdW5kcyxcbiAgTUFQQk9YX1RJTEVfU0laRSxcbiAgdmFsaWRhdGVWaWV3UG9ydFxufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7TWFwU3RhdGVBY3Rpb25zLCBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZCwgQWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQge01hcFN0YXRlLCBCb3VuZHMsIFZpZXdwb3J0fSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcbmltcG9ydCB7XG4gIE1hcFNwbGl0TW9kZSxcbiAgTWFwVmlld01vZGUsXG4gIERFRkFVTFRfR0xPQkVfQ09ORklHLFxuICBHTE9CRV9NSU5fWk9PTSxcbiAgR0xPQkVfTUFYX1pPT00sXG4gIEdMT0JFX01BWF9MQVRJVFVERVxufSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbi8qKlxuICogVXBkYXRlcnMgZm9yIGBtYXBTdGF0ZWAgcmVkdWNlci4gQ2FuIGJlIHVzZWQgaW4geW91ciByb290IHJlZHVjZXIgdG8gZGlyZWN0bHkgbW9kaWZ5IGtlcGxlci5nbCdzIHN0YXRlLlxuICogUmVhZCBtb3JlIGFib3V0IFtVc2luZyB1cGRhdGVyc10oLi4vYWR2YW5jZWQtdXNhZ2UvdXNpbmctdXBkYXRlcnMubWQpXG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICpcbiAqIGltcG9ydCBrZXBsZXJHbFJlZHVjZXIsIHttYXBTdGF0ZVVwZGF0ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3JlZHVjZXJzJztcbiAqIC8vIFJvb3QgUmVkdWNlclxuICogY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICogIGtlcGxlckdsOiBrZXBsZXJHbFJlZHVjZXIsXG4gKiAgYXBwOiBhcHBSZWR1Y2VyXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBjb21wb3NlZFJlZHVjZXIgPSAoc3RhdGUsIGFjdGlvbikgPT4ge1xuICogIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAqICAgIC8vIGNsaWNrIGJ1dHRvbiB0byBjbG9zZSBzaWRlIHBhbmVsXG4gKiAgICBjYXNlICdDTElDS19CVVRUT04nOlxuICogICAgICByZXR1cm4ge1xuICogICAgICAgIC4uLnN0YXRlLFxuICogICAgICAgIGtlcGxlckdsOiB7XG4gKiAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbCxcbiAqICAgICAgICAgIGZvbzoge1xuICogICAgICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wuZm9vLFxuICogICAgICAgICAgICAgbWFwU3RhdGU6IG1hcFN0YXRlVXBkYXRlcnMuZml0Qm91bmRzVXBkYXRlcihcbiAqICAgICAgICAgICAgICAgbWFwU3RhdGUsIHtwYXlsb2FkOiBbMTI3LjM0LCAzMS4wOSwgMTI3LjU2LCAzMS41OV1dfVxuICogICAgICAgICAgICAgKVxuICogICAgICAgICAgfVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdGF0ZVVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKipcbiAqIERlZmF1bHQgaW5pdGlhbCBgbWFwU3RhdGVgXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQGNvbnN0YW50XG4gKiBAcHJvcGVydHkgcGl0Y2ggRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgYmVhcmluZyBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBsYXRpdHVkZSBEZWZhdWx0OiBgMzcuNzUwNDNgXG4gKiBAcHJvcGVydHkgbG9uZ2l0dWRlIERlZmF1bHQ6IGAtMTIyLjM0Njc5YFxuICogQHByb3BlcnR5IHpvb20gRGVmYXVsdDogYDlgXG4gKiBAcHJvcGVydHkgZHJhZ1JvdGF0ZSBEZWZhdWx0OiBgZmFsc2VgXG4gKiBAcHJvcGVydHkgd2lkdGggRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBoZWlnaHQgRGVmYXVsdDogYDgwMGBcbiAqIEBwcm9wZXJ0eSBtaW5ab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhab29tOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBtYXhQaXRjaDogYHVuZGVmaW5lZGAgKGRlZmF1bHRzIHRvIGFwcGxpY2F0aW9uIGNvbmZpZyB2YWx1ZSwgZGVjay5nbCBkZWZhdWx0IGlzIDYwKVxuICogQHByb3BlcnR5IG1heEJvdW5kczogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgaXNTcGxpdDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBpc1ZpZXdwb3J0U3luY2VkOiBgdHJ1ZWAsXG4gKiBAcHJvcGVydHkgaXNab29tTG9ja2VkOiBgZmFsc2VgLFxuICogQHByb3BlcnR5IHNwbGl0TWFwVmlld3BvcnRzOiBgW11gXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBJTklUSUFMX01BUF9TVEFURTogTWFwU3RhdGUgPSB7XG4gIHBpdGNoOiAwLFxuICBiZWFyaW5nOiAwLFxuICBsYXRpdHVkZTogMzcuNzUwNDMsXG4gIGxvbmdpdHVkZTogLTEyMi4zNDY3OSxcbiAgem9vbTogOSxcbiAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gIHdpZHRoOiA4MDAsXG4gIGhlaWdodDogODAwLFxuICBtaW5ab29tOiB1bmRlZmluZWQsXG4gIG1heFpvb206IHVuZGVmaW5lZCxcbiAgbWF4UGl0Y2g6IHVuZGVmaW5lZCxcbiAgbWF4Qm91bmRzOiB1bmRlZmluZWQsXG4gIGlzU3BsaXQ6IGZhbHNlLFxuICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICBzcGxpdE1hcFZpZXdwb3J0czogW10sXG4gIG1hcFZpZXdNb2RlOiBNYXBWaWV3TW9kZS5NT0RFXzJELFxuICBnbG9iZToge1xuICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIGNvbmZpZzogREVGQVVMVF9HTE9CRV9DT05GSUdcbiAgfSxcbiAgbWFwU3BsaXRNb2RlOiBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCxcbiAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogNTBcbn07XG5cbi8qIFVwZGF0ZXJzICovXG4vKipcbiAqIFVwZGF0ZSBtYXAgdmlld3BvcnRcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB1cGRhdGVNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlVwZGF0ZU1hcFVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge3ZpZXdwb3J0OiBpbnB1dFZpZXdwb3J0LCBtYXBJbmRleCA9IDB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IHZpZXdwb3J0ID0gdmFsaWRhdGVWaWV3UG9ydChpbnB1dFZpZXdwb3J0KTtcblxuICBpZiAoc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIFRoZSBgdXBkYXRlVmlld3BvcnRgIGZ1bmN0aW9uIGlzIHR5cGVkIGFzIChWaWV3cG9ydCwgVmlld3BvcnQpIC0+IFZpZXdwb3J0IGJ1dCBoZXJlIHRoZVxuICAgIC8vIGV4cGVjdGVkIHR5cGluZyBpcyAoTWFwU3RhdGUsIFZpZXdwb3J0KSAtPiBNYXBTdGF0ZS5cbiAgICAvLyB0aGlzIGNvdWxkIGJlIGEgcG90ZW50aWFsIGJ1ZyBhcyB3ZSB0cmVhdCBWaWV3cG9ydCBhbmQgTWFwU3RhdGUgYXMgZXF1YWwgc2VlbWluZ2x5XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoc3RhdGUsIHZpZXdwb3J0KTtcbiAgfVxuXG4gIGxldCBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSAtMTtcbiAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgIGlmIChpID09PSBtYXBJbmRleCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBtYXRjaGluZyB2aWV3cG9ydCB3aXRoIHRoZSBuZXdWaWV3cG9ydCBpbmZvIGluIHRoZSBhY3Rpb24gcGF5bG9hZFxuICAgICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KGN1cnJlbnRWaWV3cG9ydCwgdmlld3BvcnQpO1xuICAgIH1cblxuICAgIG90aGVyVmlld3BvcnRNYXBJbmRleCA9IGk7XG4gICAgLy8gbWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCAoeWV0KVxuICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gIH0pO1xuXG4gIC8vIG1ha2UgY29uZGl0aW9uYWwgdXBkYXRlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgbm90IG1hdGNoaW5nIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgaWYgKE51bWJlci5pc0Zpbml0ZShvdGhlclZpZXdwb3J0TWFwSW5kZXgpICYmIG90aGVyVmlld3BvcnRNYXBJbmRleCA+IC0xKSB7XG4gICAgLy8gd2lkdGggYW5kIGhlaWdodCBhcmUgYSBzcGVjaWFsIGNhc2UgYW5kIGFyZSBhbHdheXMgdXBkYXRlZFxuICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgd2lkdGg6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS53aWR0aCxcbiAgICAgIGhlaWdodDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLmhlaWdodFxuICAgIH07XG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG90aGVyIHZpZXdwb3J0IHdpdGggdGhlIG5ldyB6b29tIGZyb20gdGhlIHNwbGl0IHZpZXdwb3J0IHRoYXQgd2FzIHVwZGF0ZWQgd2l0aCB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gICAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdLFxuICAgICAgICB6b29tOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uem9vbVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC8vIHVwZGF0ZSB0aGUgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdpdGggdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHNwbGl0IHZpZXdwb3J0XG4gICAgLy8gV0hZPyB0aGlzIGF2b2lkcyB6b29tIGFuZCBib3VuZHMgXCJqdW1waW5nXCIgZHVlIHRvIGEgXCJzdGFsZVwiIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aGVuOlxuICAgIC8vICAxLiB0b2dnbGluZyBvZmYgdGhlIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlIHRvIHN3aXRjaCB0byB0aGUgc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLy8gIDIuIHRvZ2dsaW5nIG9uIHRoZSB6b29tIGxvY2sgZHVyaW5nIGFuIHVuc3luY2VkIHZpZXdwb3J0cyBtb2RlXG4gICAgLi4uc3RhdGUsXG4gICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLFxuICAgIC8vIHVwZGF0ZSB0aGUgbWFwU3RhdGUgd2l0aCB0aGUgbmV3IGFycmF5IG9mIHNwbGl0IHZpZXdwb3J0c1xuICAgIHNwbGl0TWFwVmlld3BvcnRzXG4gIH07XG59O1xuXG4vKipcbiAqIEZpdCBtYXAgdmlld3BvcnQgdG8gYm91bmRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZml0Qm91bmRzVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5GaXRCb3VuZHNVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IGNlbnRlckFuZFpvb20gPSBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyhhY3Rpb24ucGF5bG9hZCwge1xuICAgIHdpZHRoOiBzdGF0ZS53aWR0aCxcbiAgICBoZWlnaHQ6IHN0YXRlLmhlaWdodCxcbiAgICBwYWRkaW5nOiBhY3Rpb24ubWV0YT8ucGFkZGluZ1xuICB9KTtcbiAgaWYgKCFjZW50ZXJBbmRab29tKSB7XG4gICAgLy8gYm91bmRzIGlzIGludmFsaWRcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBJbiBnbG9iZSBtb2RlLCBjbGFtcCB6b29tIHRvIGdsb2JlJ3MgYWxsb3dlZCByYW5nZVxuICBjb25zdCBpc0dsb2JlTW9kZSA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuICBjb25zdCB6b29tID0gTnVtYmVyLmlzRmluaXRlKGNlbnRlckFuZFpvb20uem9vbSlcbiAgICA/IGlzR2xvYmVNb2RlXG4gICAgICA/IE1hdGgubWluKE1hdGgubWF4KGNlbnRlckFuZFpvb20uem9vbSwgR0xPQkVfTUlOX1pPT00pLCBHTE9CRV9NQVhfWk9PTSlcbiAgICAgIDogY2VudGVyQW5kWm9vbS56b29tXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgbGF0aXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzFdLFxuICAgIGxvbmdpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMF0sXG4gICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgLi4uKHpvb20gIT09IHVuZGVmaW5lZCA/IHt6b29tfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIGZpdHRpbmcgdG8gYm91bmRzIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYW5kIHpvb20gdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgbGF0aXR1ZGU6IG5ld1N0YXRlLmxhdGl0dWRlLFxuICAgICAgbG9uZ2l0dWRlOiBuZXdTdGF0ZS5sb25naXR1ZGUsXG4gICAgICB6b29tOiBuZXdTdGF0ZS56b29tXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiAzZCBhbmQgMmQgbWFwLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiB7XG4gIC8vIE9ubHkgZHJvcCBtaW4vbWF4Wm9vbSB3aGVuIHdlJ3JlIGFjdHVhbGx5IGxlYXZpbmcgZ2xvYmUgbW9kZSwgd2hlcmUgdGhvc2VcbiAgLy8gYm91bmRzIGFyZSBzZXQgdG8gZ2xvYmUtb25seSB2YWx1ZXMuIElmIGdsb2JlIHdhcyBuZXZlciBlbmFibGVkIHRoZXNlIGFyZVxuICAvLyB0aGUgYXBwJ3Mgb3duIGN1c3RvbSBib3VuZHMgYW5kIG11c3QgYmUgcHJlc2VydmVkLlxuICBjb25zdCB3YXNHbG9iZUVuYWJsZWQgPSBCb29sZWFuKHN0YXRlLmdsb2JlPy5lbmFibGVkKTtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi57XG4gICAgICBwaXRjaDogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiA1MCxcbiAgICAgIGJlYXJpbmc6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogMjRcbiAgICB9LFxuICAgIGRyYWdSb3RhdGU6ICFzdGF0ZS5kcmFnUm90YXRlLFxuICAgIG1hcFZpZXdNb2RlOiBzdGF0ZS5kcmFnUm90YXRlID8gTWFwVmlld01vZGUuTU9ERV8yRCA6IE1hcFZpZXdNb2RlLk1PREVfM0QsXG4gICAgZ2xvYmU6IHsuLi5zdGF0ZS5nbG9iZSEsIGVuYWJsZWQ6IGZhbHNlfSxcbiAgICAvLyBMZWF2aW5nIGdsb2JlIG1vZGU6IGRyb3AgZ2xvYmUtb25seSB6b29tIGJvdW5kcyBzbyB0aGUgZmxhdCBtYXAgKGFuZFxuICAgIC8vIGNvbnN1bWVycyBvZiBtYXBTdGF0ZSBzdWNoIGFzIHZpZGVvIGV4cG9ydCkgYXJlbid0IGxlZnQgY2xhbXBlZC4gV2hlblxuICAgIC8vIGdsb2JlIHdhcyBuZXZlciBvbiwga2VlcCB3aGF0ZXZlciBtaW4vbWF4Wm9vbSB0aGUgYXBwIGNvbmZpZ3VyZWQuXG4gICAgLi4uKHdhc0dsb2JlRW5hYmxlZCA/IHttaW5ab29tOiB1bmRlZmluZWQsIG1heFpvb206IHVuZGVmaW5lZH0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiB0b2dnbGluZyAzZCBhbmQgMmQgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBwaXRjaCwgYmVhcmluZywgYW5kIGRyYWdSb3RhdGUgdmFsdWVzIHRvIGVhY2ggc3BsaXQgdmlld3BvcnRcbiAgaWYgKG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5ld1N0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV3U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5ld1N0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgdmlldyBtb2RlICgyRCwgM0QsIEdsb2JlKVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcFZpZXdNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5TZXRNYXBWaWV3TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFZpZXdNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBsZXQgbmV4dFN0YXRlOiBNYXBTdGF0ZTtcblxuICAvLyBPbmx5IGNsZWFyIG1pbi9tYXhab29tIHdoZW4gbGVhdmluZyBnbG9iZSBtb2RlICh3aGVyZSB0aGV5IGhvbGQgZ2xvYmUtb25seVxuICAvLyBib3VuZHMpLiBPdGhlcndpc2UgcHJlc2VydmUgdGhlIGFwcCdzIGN1c3RvbSBib3VuZHMuXG4gIGNvbnN0IHdhc0dsb2JlRW5hYmxlZCA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuXG4gIHN3aXRjaCAobWFwVmlld01vZGUpIHtcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfMkQ6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgICAgICBwaXRjaDogMCxcbiAgICAgICAgYmVhcmluZzogMCxcbiAgICAgICAgZHJhZ1JvdGF0ZTogZmFsc2UsXG4gICAgICAgIC8vIENsZWFyIHRoZSBnbG9iZS1vbmx5IHpvb20gYm91bmRzIHNvIHRoZSBmbGF0IG1hcCAoYW5kIGFueXRoaW5nIHRoYXRcbiAgICAgICAgLy8gcmVhZHMgbWFwU3RhdGUsIGUuZy4gdmlkZW8gZXhwb3J0KSBpcyBub3QgbGVmdCB3aXRoIGdsb2JlJ3NcbiAgICAgICAgLy8gbWluL21heFpvb20gYWZ0ZXIgbGVhdmluZyBnbG9iZSBtb2RlLiBPbmx5IHdoZW4gZ2xvYmUgd2FzIGFjdHVhbGx5IG9uLlxuICAgICAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfM0Q6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgICAgICBwaXRjaDogNTAsXG4gICAgICAgIGJlYXJpbmc6IDI0LFxuICAgICAgICBkcmFnUm90YXRlOiB0cnVlLFxuICAgICAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFZpZXdNb2RlLk1PREVfR0xPQkU6XG4gICAgICBuZXh0U3RhdGUgPSB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogdHJ1ZX0sXG4gICAgICAgIGRyYWdSb3RhdGU6IHRydWUsXG4gICAgICAgIHBpdGNoOiAwLFxuICAgICAgICBiZWFyaW5nOiAwLFxuICAgICAgICAvLyBBbGxvdyB6b29taW5nIG91dCBmdXJ0aGVyIHRoYW4gdGhlIGRlZmF1bHQgc28gdGhlIHdob2xlIGdsb2JlIGNhbiBiZVxuICAgICAgICAvLyBwdWxsZWQgYmFjayBvbiBzY3JlZW4uIENhcCB0aGUgbWF4IHpvb20gc28gdGhlIGJhc2VtYXAgdGlsZXMgc3RheVxuICAgICAgICAvLyBjb2hlcmVudCAodGhleSBicmVhayBkb3duIGF0IGhpZ2ggZ2xvYmUgem9vbSBpbiBkZWNrLmdsIDkueCkuXG4gICAgICAgIG1pblpvb206IEdMT0JFX01JTl9aT09NLFxuICAgICAgICBtYXhab29tOiBHTE9CRV9NQVhfWk9PTSxcbiAgICAgICAgem9vbTogTWF0aC5taW4oTWF0aC5tYXgoc3RhdGUuem9vbSwgR0xPQkVfTUlOX1pPT00pLCBHTE9CRV9NQVhfWk9PTSksXG4gICAgICAgIG1hcFZpZXdNb2RlXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGlmIChuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gbmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIHBpdGNoOiBuZXh0U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXh0U3RhdGUuYmVhcmluZyxcbiAgICAgIGRyYWdSb3RhdGU6IG5leHRTdGF0ZS5kcmFnUm90YXRlXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5leHRTdGF0ZTtcbn07XG5cbi8qKlxuICogVXBkYXRlIGdsb2JlIGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5HbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBnbG9iZToge1xuICAgICAgLi4uc3RhdGUuZ2xvYmUhLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLnN0YXRlLmdsb2JlIS5jb25maWcsXG4gICAgICAgIC4uLmFjdGlvbi5wYXlsb2FkXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiByZXNldCBtYXBTdGF0ZSB0byBpbml0aWFsIFN0YXRlXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVzZXRNYXBDb25maWdVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLklOSVRJQUxfTUFQX1NUQVRFLFxuICAuLi5zdGF0ZS5pbml0aWFsU3RhdGUsXG4gIGluaXRpYWxTdGF0ZTogc3RhdGUuaW5pdGlhbFN0YXRlXG59KTtcblxuLy8gY29uc2lkZXIgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHNwbGl0IG1hcCBhbmQgdXNlciB3YW50cyB0byByZXNldFxuLyoqXG4gKiBVcGRhdGUgYG1hcFN0YXRlYCB0byBwcm9wYWdhdGUgYSBuZXcgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXlsb2FkOiB7Y29uZmlnID0ge30sIG9wdGlvbnMgPSB7fSwgYm91bmRzID0gbnVsbH1cbiAgfToge1xuICAgIHR5cGU/OiB0eXBlb2YgQWN0aW9uVHlwZXMuUkVDRUlWRV9NQVBfQ09ORklHO1xuICAgIHBheWxvYWQ6IFJlY2VpdmVNYXBDb25maWdQYXlsb2FkO1xuICB9XG4pOiBNYXBTdGF0ZSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7UGFydGlhbDxNYXBTdGF0ZT59XG4gICAqL1xuICBjb25zdCBtYXBTdGF0ZSA9IChjb25maWcgfHwge30pLm1hcFN0YXRlIHx8IHt9O1xuICAvLyBtZXJnZWQgcmVjZWl2ZWQgbWFwU3RhdGUgd2l0aCBwcmV2aW91cyBzdGF0ZVxuICAvLyBzdGF0ZSBhbHNvIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgdGhhdCBhcmUgbmV3IHRvIGFuIGV4aXN0aW5nLCBzYXZlZCBwcm9qZWN0J3MgbWFwU3RhdGVcblxuICBsZXQgbWVyZ2VkU3RhdGUgPSBkZWVwbWVyZ2U8TWFwU3RhdGU+KHN0YXRlLCBtYXBTdGF0ZSwge1xuICAgIC8vIG5vdGU6IGRlZXBtZXJnZSBieSBkZWZhdWx0IHdpbGwgbWVyZ2UgYXJyYXlzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlbVxuICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIG92ZXJ3cml0ZSBkZXN0aW5hdGlvbiBhcnJheXMgd2l0aCBzb3VyY2UgYXJyYXlzLCBpZiBwcmVzZW50XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1RlaFNocmlrZS9kZWVwbWVyZ2UjYXJyYXltZXJnZS1leGFtcGxlLW92ZXJ3cml0ZS10YXJnZXQtYXJyYXlcbiAgICBhcnJheU1lcmdlOiAoX2Rlc3RpbmF0aW9uQXJyYXksIHNvdXJjZUFycmF5KSA9PiBzb3VyY2VBcnJheVxuICB9KTtcblxuICAvLyBpZiBjZW50ZXIgbWFwXG4gIC8vIGNlbnRlciBtYXAgd2lsbCBvdmVycmlkZSBtYXBTdGF0ZSBjb25maWdcbiAgaWYgKG9wdGlvbnMuY2VudGVyTWFwICYmIGJvdW5kcykge1xuICAgIG1lcmdlZFN0YXRlID0gZml0Qm91bmRzVXBkYXRlcihtZXJnZWRTdGF0ZSwge1xuICAgICAgcGF5bG9hZDogYm91bmRzLFxuICAgICAgbWV0YToge3BhZGRpbmc6IG9wdGlvbnMucGFkZGluZ31cbiAgICB9KTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBtYXAgc3RhdGUgYmVmb3JlIHdlIG1lcmdlXG4gIG1lcmdlZFN0YXRlID0gdmFsaWRhdGVWaWV3UG9ydChtZXJnZWRTdGF0ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAvLyB1cGRhdGUgd2lkdGggaWYgYGlzU3BsaXRgIGhhcyBjaGFuZ2VkXG4gICAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAobWVyZ2VkU3RhdGUuaXNTcGxpdCwgc3RhdGUpXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIG9uZSBvciBzcGxpdCBtYXBzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcCghc3RhdGUuaXNTcGxpdCwgc3RhdGUpLFxuICBpc1NwbGl0OiAhc3RhdGUuaXNTcGxpdCxcbiAgbWFwU3BsaXRNb2RlOiAhc3RhdGUuaXNTcGxpdCA/IE1hcFNwbGl0TW9kZS5EVUFMX01BUCA6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBtYXAgc3BsaXQgbW9kZSAoc2luZ2xlLCBkdWFsLCBvciBzd2lwZSlcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBTcGxpdE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFNwbGl0TW9kZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3QgcHJldk1vZGUgPSBzdGF0ZS5tYXBTcGxpdE1vZGU7XG5cbiAgaWYgKG1hcFNwbGl0TW9kZSA9PT0gcHJldk1vZGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBzd2l0Y2ggKG1hcFNwbGl0TW9kZSkge1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiBmYWxzZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAqIDJcbiAgICAgICAgfSksXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfTtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5EVUFMX01BUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLkRVQUxfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggKiAyXG4gICAgICAgIH0pLFxuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgdGhlIHN3aXBlIGNvbXBhcmUgcGVyY2VudGFnZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHtwZXJjZW50YWdlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBwZXJjZW50YWdlKSk7XG4gIGlmIChjbGFtcGVkID09PSBzdGF0ZS5zd2lwZUNvbXBhcmVQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogY2xhbXBlZFxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gU3dpcGUgbW9kZSBhbHdheXMgdXNlcyBzeW5jZWQgdmlld3BvcnRzXG4gIGlmIChzdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBJbiBzd2lwZSBtb2RlLCBib3RoIG1hcHMgdXNlIGZ1bGwgd2lkdGggKG92ZXJsYXBwaW5nIHdpdGggY2xpcClcbiAgaWYgKHN0YXRlLm1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4UGl0Y2gnLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gZGVjay5nbCdzIGdsb2JlIGNvbnRyb2xsZXIgYXBwbGllcyBhIGxhdGl0dWRlLWRlcGVuZGVudCBhZGp1c3RtZW50IHRvIHRoZVxuICAvLyB6b29tIHJhbmdlIChzZWUgS2VwbGVyR2xvYmVWaWV3Ll9jb25zdHJhaW5ab29tKS4gSWYgd2UgY2xhbXAgdGhlIHByb3BhZ2F0ZWRcbiAgLy8gem9vbSBoZXJlIGFnYWluc3QgdGhlIHJhdyBtaW5ab29tL21heFpvb20gKHdpdGhvdXQgdGhhdCBhZGp1c3RtZW50KSwgUmVkdXhcbiAgLy8gZW5kcyB1cCBkaXNhZ3JlZWluZyB3aXRoIHRoZSBjb250cm9sbGVyOiB0aGUgY29udHJvbGxlciBsZXRzIHRoZSB1c2VyIHB1bGxcbiAgLy8gdGhlIGdsb2JlIGZ1cnRoZXIgb3V0LCBidXQgdGhpcyBjbGFtcCBzbmFwcyB6b29tIGJhY2sgdG8gYG1pblpvb21gIHdoZW4gdGhlXG4gIC8vIGludGVyYWN0aW9uJ3MgaW5lcnRpYSB0cmFuc2l0aW9uIGVuZHMuIEFwcGx5IHRoZSBzYW1lIGFkanVzdG1lbnQgaW4gZ2xvYmVcbiAgLy8gbW9kZSBzbyBSZWR1eCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGNvbnRyb2xsZXIgYW5kIHRoZXJlJ3Mgbm8gc25hcC1iYWNrLlxuICBjb25zdCBpc0dsb2JlID0gKG5ld1ZpZXdwb3J0IGFzIGFueSkuZ2xvYmU/LmVuYWJsZWQ7XG5cbiAgaWYgKGlzR2xvYmUpIHtcbiAgICAvLyBLZWVwIHRoZSBjYW1lcmEgdGFyZ2V0IHdpdGhpbiBhIGxhdGl0dWRlIGJhbmQgYXJvdW5kIHRoZSBlcXVhdG9yIHNvIHRoZVxuICAgIC8vIHN0b3JlZCB2aWV3cG9ydCBjYW4ndCBiZSBjZW50ZXJlZCBvbiB0aGUgcG9sZXMgKG1hdGNoZXMgdGhlIGdsb2JlXG4gICAgLy8gY29udHJvbGxlcidzIGFwcGx5Q29uc3RyYWludHMgc28gZ2VvY29kZXIvcHJvZ3JhbW1hdGljIHVwZGF0ZXMgYWdyZWUpLlxuICAgIGlmICh0eXBlb2YgbmV3Vmlld3BvcnQubGF0aXR1ZGUgPT09ICdudW1iZXInKSB7XG4gICAgICBuZXdWaWV3cG9ydC5sYXRpdHVkZSA9IE1hdGgubWluKFxuICAgICAgICBHTE9CRV9NQVhfTEFUSVRVREUsXG4gICAgICAgIE1hdGgubWF4KC1HTE9CRV9NQVhfTEFUSVRVREUsIG5ld1ZpZXdwb3J0LmxhdGl0dWRlKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3Qgem9vbUFkanVzdG1lbnQgPSBNYXRoLmxvZzIoTWF0aC5jb3MoKChuZXdWaWV3cG9ydC5sYXRpdHVkZSA/PyAwKSAqIE1hdGguUEkpIC8gMTgwKSk7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lm1pblpvb20gPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQuem9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnRcbiAgICApIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC5tYXhab29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lnpvb20gPT09ICdudW1iZXInICYmXG4gICAgICBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50XG4gICAgKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGJlbGxvdyBtaW5ab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWluWm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBhYm92ZSBtYXhab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbTtcbiAgICB9XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBuZXdWaWV3cG9ydDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQVFBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQU84QixTQUFBUSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENB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
708
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwVmlld01vZGUiLCJNYXBWaWV3TW9kZSIsIk1PREVfMkQiLCJnbG9iZSIsImVuYWJsZWQiLCJjb25maWciLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1hcFNwbGl0TW9kZSIsIk1hcFNwbGl0TW9kZSIsIlNJTkdMRV9NQVAiLCJzd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiQVBQTFlfTUFQX1NUQVRFX1ZJRVdQT1JUX0tFWVMiLCJhcHBseU1hcFN0YXRlVXBkYXRlciIsIl9hY3Rpb24kbWV0YSRtYXBJbmRleCIsIl9hY3Rpb24kbWV0YSIsIm5leHQiLCJtZXRhIiwibmV4dENvbmZpZyIsIkFycmF5IiwiaXNBcnJheSIsIl9zdGF0ZSRzcGxpdE1hcFZpZXdwbyIsIl9zdGF0ZSRzcGxpdE1hcFZpZXdwbzIiLCJfc3RhdGUkc3BsaXRNYXBWaWV3cG8zIiwiX3N0YXRlJHNwbGl0TWFwVmlld3BvNCIsIm1lcmdlZFN0YXRlIiwiZGVlcG1lcmdlIiwiYXJyYXlNZXJnZSIsIl9kZXN0aW5hdGlvbkFycmF5Iiwic291cmNlQXJyYXkiLCJhcHBsaWVkIiwicGljayIsImZpdEJvdW5kc1VwZGF0ZXIiLCJfYWN0aW9uJG1ldGEyIiwiX3N0YXRlJGdsb2JlIiwiY2VudGVyQW5kWm9vbSIsImdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzIiwicGFkZGluZyIsImlzR2xvYmVNb2RlIiwiQm9vbGVhbiIsIk1hdGgiLCJtaW4iLCJtYXgiLCJHTE9CRV9NSU5fWk9PTSIsIkdMT0JFX01BWF9aT09NIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJfc3RhdGUkZ2xvYmUyIiwid2FzR2xvYmVFbmFibGVkIiwiTU9ERV8zRCIsInNldE1hcFZpZXdNb2RlVXBkYXRlciIsIl9zdGF0ZSRnbG9iZTMiLCJuZXh0U3RhdGUiLCJNT0RFX0dMT0JFIiwiZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiaW5pdGlhbFN0YXRlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmIiwiX3JlZiRwYXlsb2FkIiwiX3JlZiRwYXlsb2FkJGNvbmZpZyIsIl9yZWYkcGF5bG9hZCRvcHRpb25zIiwib3B0aW9ucyIsIl9yZWYkcGF5bG9hZCRib3VuZHMiLCJib3VuZHMiLCJtYXBTdGF0ZSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiRFVBTF9NQVAiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwicHJldk1vZGUiLCJTV0lQRV9DT01QQVJFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJwZXJjZW50YWdlIiwiY2xhbXBlZCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwiZGVmaW5lZFByb3BzIiwib2JqIiwiZW50cmllcyIsInJlZHVjZSIsImFjY3UiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkyIiwiayIsIm9yaWdpbmFsVmlld3BvcnQiLCJ2aWV3cG9ydFVwZGF0ZXMiLCJfZ2xvYmUiLCJuZXdWaWV3cG9ydCIsImlzR2xvYmUiLCJfbmV3Vmlld3BvcnQkbGF0aXR1ZGUiLCJHTE9CRV9NQVhfTEFUSVRVREUiLCJ6b29tQWRqdXN0bWVudCIsImxvZzIiLCJjb3MiLCJQSSIsInZhbGlkYXRlQm91bmRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdGF0ZS11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgZ2VvVmlld3BvcnQgZnJvbSAnQG1hcGJveC9nZW8tdmlld3BvcnQnO1xuaW1wb3J0IHtib29sZWFuV2l0aGlufSBmcm9tICdAdHVyZi9ib29sZWFuLXdpdGhpbic7XG5pbXBvcnQge2Jib3hQb2x5Z29ufSBmcm9tICdAdHVyZi9iYm94LXBvbHlnb24nO1xuaW1wb3J0IHtmaXRCb3VuZHN9IGZyb20gJ0BtYXRoLmdsL3dlYi1tZXJjYXRvcic7XG5pbXBvcnQgZGVlcG1lcmdlIGZyb20gJ2RlZXBtZXJnZSc7XG5pbXBvcnQgcGljayBmcm9tICdlcy10b29sa2l0L2NvbXBhdC9waWNrJztcblxuaW1wb3J0IHtcbiAgZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsXG4gIHZhbGlkYXRlQm91bmRzLFxuICBNQVBCT1hfVElMRV9TSVpFLFxuICB2YWxpZGF0ZVZpZXdQb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZUFjdGlvbnMsIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TWFwU3RhdGUsIEJvdW5kcywgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtcbiAgTWFwU3BsaXRNb2RlLFxuICBNYXBWaWV3TW9kZSxcbiAgREVGQVVMVF9HTE9CRV9DT05GSUcsXG4gIEdMT0JFX01JTl9aT09NLFxuICBHTE9CRV9NQVhfWk9PTSxcbiAgR0xPQkVfTUFYX0xBVElUVURFXG59IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0YXRlVXBkYXRlcnN9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGNsb3NlIHNpZGUgcGFuZWxcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICBtYXBTdGF0ZTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyKFxuICogICAgICAgICAgICAgICBtYXBTdGF0ZSwge3BheWxvYWQ6IFsxMjcuMzQsIDMxLjA5LCAxMjcuNTYsIDMxLjU5XV19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1hcFN0YXRlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdGF0ZWBcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBwaXRjaCBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBiZWFyaW5nIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGxhdGl0dWRlIERlZmF1bHQ6IGAzNy43NTA0M2BcbiAqIEBwcm9wZXJ0eSBsb25naXR1ZGUgRGVmYXVsdDogYC0xMjIuMzQ2NzlgXG4gKiBAcHJvcGVydHkgem9vbSBEZWZhdWx0OiBgOWBcbiAqIEBwcm9wZXJ0eSBkcmFnUm90YXRlIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSB3aWR0aCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IGhlaWdodCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IG1pblpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFBpdGNoOiBgdW5kZWZpbmVkYCAoZGVmYXVsdHMgdG8gYXBwbGljYXRpb24gY29uZmlnIHZhbHVlLCBkZWNrLmdsIGRlZmF1bHQgaXMgNjApXG4gKiBAcHJvcGVydHkgbWF4Qm91bmRzOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBpc1NwbGl0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGlzVmlld3BvcnRTeW5jZWQ6IGB0cnVlYCxcbiAqIEBwcm9wZXJ0eSBpc1pvb21Mb2NrZWQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgc3BsaXRNYXBWaWV3cG9ydHM6IGBbXWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUFQX1NUQVRFOiBNYXBTdGF0ZSA9IHtcbiAgcGl0Y2g6IDAsXG4gIGJlYXJpbmc6IDAsXG4gIGxhdGl0dWRlOiAzNy43NTA0MyxcbiAgbG9uZ2l0dWRlOiAtMTIyLjM0Njc5LFxuICB6b29tOiA5LFxuICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIG1pblpvb206IHVuZGVmaW5lZCxcbiAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICBtYXhQaXRjaDogdW5kZWZpbmVkLFxuICBtYXhCb3VuZHM6IHVuZGVmaW5lZCxcbiAgaXNTcGxpdDogZmFsc2UsXG4gIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gIHNwbGl0TWFwVmlld3BvcnRzOiBbXSxcbiAgbWFwVmlld01vZGU6IE1hcFZpZXdNb2RlLk1PREVfMkQsXG4gIGdsb2JlOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gICAgY29uZmlnOiBERUZBVUxUX0dMT0JFX0NPTkZJR1xuICB9LFxuICBtYXBTcGxpdE1vZGU6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICBzd2lwZUNvbXBhcmVQZXJjZW50YWdlOiA1MFxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogVXBkYXRlIG1hcCB2aWV3cG9ydFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVXBkYXRlTWFwVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7dmlld3BvcnQ6IGlucHV0Vmlld3BvcnQsIG1hcEluZGV4ID0gMH0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3Qgdmlld3BvcnQgPSB2YWxpZGF0ZVZpZXdQb3J0KGlucHV0Vmlld3BvcnQpO1xuXG4gIGlmIChzdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gVGhlIGB1cGRhdGVWaWV3cG9ydGAgZnVuY3Rpb24gaXMgdHlwZWQgYXMgKFZpZXdwb3J0LCBWaWV3cG9ydCkgLT4gVmlld3BvcnQgYnV0IGhlcmUgdGhlXG4gICAgLy8gZXhwZWN0ZWQgdHlwaW5nIGlzIChNYXBTdGF0ZSwgVmlld3BvcnQpIC0+IE1hcFN0YXRlLlxuICAgIC8vIHRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgYnVnIGFzIHdlIHRyZWF0IFZpZXdwb3J0IGFuZCBNYXBTdGF0ZSBhcyBlcXVhbCBzZWVtaW5nbHlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChzdGF0ZSwgdmlld3BvcnQpO1xuICB9XG5cbiAgbGV0IG90aGVyVmlld3BvcnRNYXBJbmRleCA9IC0xO1xuICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IHN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IG1hcEluZGV4KSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG1hdGNoaW5nIHZpZXdwb3J0IHdpdGggdGhlIG5ld1ZpZXdwb3J0IGluZm8gaW4gdGhlIGFjdGlvbiBwYXlsb2FkXG4gICAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoY3VycmVudFZpZXdwb3J0LCB2aWV3cG9ydCk7XG4gICAgfVxuXG4gICAgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gaTtcbiAgICAvLyBtYWtlIG5vIGNoYW5nZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0ICh5ZXQpXG4gICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgfSk7XG5cbiAgLy8gbWFrZSBjb25kaXRpb25hbCB1cGRhdGVzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCBub3QgbWF0Y2hpbmcgdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICBpZiAoTnVtYmVyLmlzRmluaXRlKG90aGVyVmlld3BvcnRNYXBJbmRleCkgJiYgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID4gLTEpIHtcbiAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBhIHNwZWNpYWwgY2FzZSBhbmQgYXJlIGFsd2F5cyB1cGRhdGVkXG4gICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0sXG4gICAgICB3aWR0aDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLndpZHRoLFxuICAgICAgaGVpZ2h0OiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uaGVpZ2h0XG4gICAgfTtcblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgb3RoZXIgdmlld3BvcnQgd2l0aCB0aGUgbmV3IHpvb20gZnJvbSB0aGUgc3BsaXQgdmlld3BvcnQgdGhhdCB3YXMgdXBkYXRlZCB3aXRoIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0sXG4gICAgICAgIHpvb206IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS56b29tXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gdXBkYXRlIHRoZSB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2l0aCB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggc3BsaXQgdmlld3BvcnRcbiAgICAvLyBXSFk/IHRoaXMgYXZvaWRzIHpvb20gYW5kIGJvdW5kcyBcImp1bXBpbmdcIiBkdWUgdG8gYSBcInN0YWxlXCIgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdoZW46XG4gICAgLy8gIDEuIHRvZ2dsaW5nIG9mZiB0aGUgdW5zeW5jZWQgdmlld3BvcnRzIG1vZGUgdG8gc3dpdGNoIHRvIHRoZSBzeW5jZWQgdmlld3BvcnRzIG1vZGVcbiAgICAvLyAgMi4gdG9nZ2xpbmcgb24gdGhlIHpvb20gbG9jayBkdXJpbmcgYW4gdW5zeW5jZWQgdmlld3BvcnRzIG1vZGVcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0sXG4gICAgLy8gdXBkYXRlIHRoZSBtYXBTdGF0ZSB3aXRoIHRoZSBuZXcgYXJyYXkgb2Ygc3BsaXQgdmlld3BvcnRzXG4gICAgc3BsaXRNYXBWaWV3cG9ydHNcbiAgfTtcbn07XG5cbi8qKlxuICogQXBwbHkgYSBwYXJ0aWFsIG1hcCBzdGF0ZSBmcm9tIHRoZSB2aWV3cG9ydCBKU09OIGVkaXRvci5cbiAqIFByZXNlcnZlcyBjdXJyZW50IHdpZHRoL2hlaWdodCBzbyBzYXZlZCBKU09OIGNhbm5vdCByZXNpemUgdGhlIG1hcCBjb250YWluZXIsXG4gKiBpbmNsdWRpbmcgbmVzdGVkIHNwbGl0LW1hcCB2aWV3cG9ydHMuIFdoZW4gdmlld3BvcnRzIGFyZSB1bnN5bmNlZCwgY2FtZXJhXG4gKiBmaWVsZHMgYXJlIGFwcGxpZWQgdG8gdGhlIG9wZW5lZCBtYXAgcGFuZSAoYG1hcEluZGV4YCksIG1hdGNoaW5nIGB1cGRhdGVNYXBgLlxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuY29uc3QgQVBQTFlfTUFQX1NUQVRFX1ZJRVdQT1JUX0tFWVM6IChrZXlvZiBWaWV3cG9ydClbXSA9IFtcbiAgJ2xhdGl0dWRlJyxcbiAgJ2xvbmdpdHVkZScsXG4gICd6b29tJyxcbiAgJ3BpdGNoJyxcbiAgJ2JlYXJpbmcnLFxuICAnZHJhZ1JvdGF0ZScsXG4gICdtaW5ab29tJyxcbiAgJ21heFpvb20nLFxuICAnbWF4UGl0Y2gnXG5dO1xuXG5leHBvcnQgY29uc3QgYXBwbHlNYXBTdGF0ZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuQXBwbHlNYXBTdGF0ZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3QgbmV4dCA9IGFjdGlvbi5wYXlsb2FkIHx8IHt9O1xuICBjb25zdCBtYXBJbmRleCA9IGFjdGlvbi5tZXRhPy5tYXBJbmRleCA/PyAwO1xuICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBzdGF0ZTtcblxuICBjb25zdCBuZXh0Q29uZmlnOiBQYXJ0aWFsPE1hcFN0YXRlPiA9IHsuLi5uZXh0fTtcbiAgZGVsZXRlIG5leHRDb25maWcud2lkdGg7XG4gIGRlbGV0ZSBuZXh0Q29uZmlnLmhlaWdodDtcbiAgaWYgKEFycmF5LmlzQXJyYXkobmV4dC5zcGxpdE1hcFZpZXdwb3J0cykpIHtcbiAgICBuZXh0Q29uZmlnLnNwbGl0TWFwVmlld3BvcnRzID0gbmV4dC5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKHZpZXdwb3J0LCBpKSA9PiAoe1xuICAgICAgLi4udmlld3BvcnQsXG4gICAgICB3aWR0aDogc3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbaV0/LndpZHRoID8/IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0c1tpXT8uaGVpZ2h0ID8/IGhlaWdodFxuICAgIH0pKTtcbiAgfVxuXG4gIGNvbnN0IG1lcmdlZFN0YXRlID0gZGVlcG1lcmdlPE1hcFN0YXRlPihzdGF0ZSwgbmV4dENvbmZpZywge1xuICAgIGFycmF5TWVyZ2U6IChfZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpID0+IHNvdXJjZUFycmF5XG4gIH0pO1xuICBjb25zdCBhcHBsaWVkID0gdmFsaWRhdGVWaWV3UG9ydCh7XG4gICAgLi4ubWVyZ2VkU3RhdGUsXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0pO1xuXG4gIGlmICghc3RhdGUuaXNWaWV3cG9ydFN5bmNlZCAmJiBzdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHBpY2sobmV4dCwgQVBQTFlfTUFQX1NUQVRFX1ZJRVdQT1JUX0tFWVMpO1xuICAgIGlmIChPYmplY3Qua2V5cyh2aWV3cG9ydCkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdXBkYXRlTWFwVXBkYXRlcihhcHBsaWVkLCB7XG4gICAgICAgIHBheWxvYWQ6IHt2aWV3cG9ydCwgbWFwSW5kZXh9XG4gICAgICB9IGFzIE1hcFN0YXRlQWN0aW9ucy5VcGRhdGVNYXBVcGRhdGVyQWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXBwbGllZDtcbn07XG5cbi8qKlxuICogRml0IG1hcCB2aWV3cG9ydCB0byBib3VuZHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmaXRCb3VuZHNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLkZpdEJvdW5kc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGFjdGlvbi5wYXlsb2FkLCB7XG4gICAgd2lkdGg6IHN0YXRlLndpZHRoLFxuICAgIGhlaWdodDogc3RhdGUuaGVpZ2h0LFxuICAgIHBhZGRpbmc6IGFjdGlvbi5tZXRhPy5wYWRkaW5nXG4gIH0pO1xuICBpZiAoIWNlbnRlckFuZFpvb20pIHtcbiAgICAvLyBib3VuZHMgaXMgaW52YWxpZFxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8vIEluIGdsb2JlIG1vZGUsIGNsYW1wIHpvb20gdG8gZ2xvYmUncyBhbGxvd2VkIHJhbmdlXG4gIGNvbnN0IGlzR2xvYmVNb2RlID0gQm9vbGVhbihzdGF0ZS5nbG9iZT8uZW5hYmxlZCk7XG4gIGNvbnN0IHpvb20gPSBOdW1iZXIuaXNGaW5pdGUoY2VudGVyQW5kWm9vbS56b29tKVxuICAgID8gaXNHbG9iZU1vZGVcbiAgICAgID8gTWF0aC5taW4oTWF0aC5tYXgoY2VudGVyQW5kWm9vbS56b29tLCBHTE9CRV9NSU5fWk9PTSksIEdMT0JFX01BWF9aT09NKVxuICAgICAgOiBjZW50ZXJBbmRab29tLnpvb21cbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAuLi4oem9vbSAhPT0gdW5kZWZpbmVkID8ge3pvb219IDoge30pXG4gIH07XG5cbiAgLy8gaWYgZml0dGluZyB0byBib3VuZHMgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhbmQgem9vbSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBsYXRpdHVkZTogbmV3U3RhdGUubGF0aXR1ZGUsXG4gICAgICBsb25naXR1ZGU6IG5ld1N0YXRlLmxvbmdpdHVkZSxcbiAgICAgIHpvb206IG5ld1N0YXRlLnpvb21cbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIDNkIGFuZCAyZCBtYXAuXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+IHtcbiAgLy8gT25seSBkcm9wIG1pbi9tYXhab29tIHdoZW4gd2UncmUgYWN0dWFsbHkgbGVhdmluZyBnbG9iZSBtb2RlLCB3aGVyZSB0aG9zZVxuICAvLyBib3VuZHMgYXJlIHNldCB0byBnbG9iZS1vbmx5IHZhbHVlcy4gSWYgZ2xvYmUgd2FzIG5ldmVyIGVuYWJsZWQgdGhlc2UgYXJlXG4gIC8vIHRoZSBhcHAncyBvd24gY3VzdG9tIGJvdW5kcyBhbmQgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gIGNvbnN0IHdhc0dsb2JlRW5hYmxlZCA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLntcbiAgICAgIHBpdGNoOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDUwLFxuICAgICAgYmVhcmluZzogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiAyNFxuICAgIH0sXG4gICAgZHJhZ1JvdGF0ZTogIXN0YXRlLmRyYWdSb3RhdGUsXG4gICAgbWFwVmlld01vZGU6IHN0YXRlLmRyYWdSb3RhdGUgPyBNYXBWaWV3TW9kZS5NT0RFXzJEIDogTWFwVmlld01vZGUuTU9ERV8zRCxcbiAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgIC8vIExlYXZpbmcgZ2xvYmUgbW9kZTogZHJvcCBnbG9iZS1vbmx5IHpvb20gYm91bmRzIHNvIHRoZSBmbGF0IG1hcCAoYW5kXG4gICAgLy8gY29uc3VtZXJzIG9mIG1hcFN0YXRlIHN1Y2ggYXMgdmlkZW8gZXhwb3J0KSBhcmVuJ3QgbGVmdCBjbGFtcGVkLiBXaGVuXG4gICAgLy8gZ2xvYmUgd2FzIG5ldmVyIG9uLCBrZWVwIHdoYXRldmVyIG1pbi9tYXhab29tIHRoZSBhcHAgY29uZmlndXJlZC5cbiAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIHRvZ2dsaW5nIDNkIGFuZCAyZCB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IHBpdGNoLCBiZWFyaW5nLCBhbmQgZHJhZ1JvdGF0ZSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBwaXRjaDogbmV3U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXdTdGF0ZS5iZWFyaW5nLFxuICAgICAgZHJhZ1JvdGF0ZTogbmV3U3RhdGUuZHJhZ1JvdGF0ZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogU2V0IG1hcCB2aWV3IG1vZGUgKDJELCAzRCwgR2xvYmUpXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFZpZXdNb2RlVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwVmlld01vZGV9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGxldCBuZXh0U3RhdGU6IE1hcFN0YXRlO1xuXG4gIC8vIE9ubHkgY2xlYXIgbWluL21heFpvb20gd2hlbiBsZWF2aW5nIGdsb2JlIG1vZGUgKHdoZXJlIHRoZXkgaG9sZCBnbG9iZS1vbmx5XG4gIC8vIGJvdW5kcykuIE90aGVyd2lzZSBwcmVzZXJ2ZSB0aGUgYXBwJ3MgY3VzdG9tIGJvdW5kcy5cbiAgY29uc3Qgd2FzR2xvYmVFbmFibGVkID0gQm9vbGVhbihzdGF0ZS5nbG9iZT8uZW5hYmxlZCk7XG5cbiAgc3dpdGNoIChtYXBWaWV3TW9kZSkge1xuICAgIGNhc2UgTWFwVmlld01vZGUuTU9ERV8yRDpcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiBmYWxzZX0sXG4gICAgICAgIHBpdGNoOiAwLFxuICAgICAgICBiZWFyaW5nOiAwLFxuICAgICAgICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgICAgICAgLy8gQ2xlYXIgdGhlIGdsb2JlLW9ubHkgem9vbSBib3VuZHMgc28gdGhlIGZsYXQgbWFwIChhbmQgYW55dGhpbmcgdGhhdFxuICAgICAgICAvLyByZWFkcyBtYXBTdGF0ZSwgZS5nLiB2aWRlbyBleHBvcnQpIGlzIG5vdCBsZWZ0IHdpdGggZ2xvYmUnc1xuICAgICAgICAvLyBtaW4vbWF4Wm9vbSBhZnRlciBsZWF2aW5nIGdsb2JlIG1vZGUuIE9ubHkgd2hlbiBnbG9iZSB3YXMgYWN0dWFsbHkgb24uXG4gICAgICAgIC4uLih3YXNHbG9iZUVuYWJsZWQgPyB7bWluWm9vbTogdW5kZWZpbmVkLCBtYXhab29tOiB1bmRlZmluZWR9IDoge30pLFxuICAgICAgICBtYXBWaWV3TW9kZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWFwVmlld01vZGUuTU9ERV8zRDpcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiBmYWxzZX0sXG4gICAgICAgIHBpdGNoOiA1MCxcbiAgICAgICAgYmVhcmluZzogMjQsXG4gICAgICAgIGRyYWdSb3RhdGU6IHRydWUsXG4gICAgICAgIC4uLih3YXNHbG9iZUVuYWJsZWQgPyB7bWluWm9vbTogdW5kZWZpbmVkLCBtYXhab29tOiB1bmRlZmluZWR9IDoge30pLFxuICAgICAgICBtYXBWaWV3TW9kZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWFwVmlld01vZGUuTU9ERV9HTE9CRTpcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiB0cnVlfSxcbiAgICAgICAgZHJhZ1JvdGF0ZTogdHJ1ZSxcbiAgICAgICAgcGl0Y2g6IDAsXG4gICAgICAgIGJlYXJpbmc6IDAsXG4gICAgICAgIC8vIEFsbG93IHpvb21pbmcgb3V0IGZ1cnRoZXIgdGhhbiB0aGUgZGVmYXVsdCBzbyB0aGUgd2hvbGUgZ2xvYmUgY2FuIGJlXG4gICAgICAgIC8vIHB1bGxlZCBiYWNrIG9uIHNjcmVlbi4gQ2FwIHRoZSBtYXggem9vbSBzbyB0aGUgYmFzZW1hcCB0aWxlcyBzdGF5XG4gICAgICAgIC8vIGNvaGVyZW50ICh0aGV5IGJyZWFrIGRvd24gYXQgaGlnaCBnbG9iZSB6b29tIGluIGRlY2suZ2wgOS54KS5cbiAgICAgICAgbWluWm9vbTogR0xPQkVfTUlOX1pPT00sXG4gICAgICAgIG1heFpvb206IEdMT0JFX01BWF9aT09NLFxuICAgICAgICB6b29tOiBNYXRoLm1pbihNYXRoLm1heChzdGF0ZS56b29tLCBHTE9CRV9NSU5fWk9PTSksIEdMT0JFX01BWF9aT09NKSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKG5leHRTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5leHRTdGF0ZS5waXRjaCxcbiAgICAgIGJlYXJpbmc6IG5leHRTdGF0ZS5iZWFyaW5nLFxuICAgICAgZHJhZ1JvdGF0ZTogbmV4dFN0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcblxuLyoqXG4gKiBVcGRhdGUgZ2xvYmUgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLkdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5zdGF0ZS5nbG9iZSEsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uc3RhdGUuZ2xvYmUhLmNvbmZpZyxcbiAgICAgICAgLi4uYWN0aW9uLnBheWxvYWRcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIHJlc2V0IG1hcFN0YXRlIHRvIGluaXRpYWwgU3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uSU5JVElBTF9NQVBfU1RBVEUsXG4gIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgaW5pdGlhbFN0YXRlOiBzdGF0ZS5pbml0aWFsU3RhdGVcbn0pO1xuXG4vLyBjb25zaWRlciBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgc3BsaXQgbWFwIGFuZCB1c2VyIHdhbnRzIHRvIHJlc2V0XG4vKipcbiAqIFVwZGF0ZSBgbWFwU3RhdGVgIHRvIHByb3BhZ2F0ZSBhIG5ldyBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7fSwgb3B0aW9ucyA9IHt9LCBib3VuZHMgPSBudWxsfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0YXRlID0+IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtQYXJ0aWFsPE1hcFN0YXRlPn1cbiAgICovXG4gIGNvbnN0IG1hcFN0YXRlID0gKGNvbmZpZyB8fCB7fSkubWFwU3RhdGUgfHwge307XG4gIC8vIG1lcmdlZCByZWNlaXZlZCBtYXBTdGF0ZSB3aXRoIHByZXZpb3VzIHN0YXRlXG4gIC8vIHN0YXRlIGFsc28gbWF5IGluY2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZXcgdG8gYW4gZXhpc3RpbmcsIHNhdmVkIHByb2plY3QncyBtYXBTdGF0ZVxuXG4gIGxldCBtZXJnZWRTdGF0ZSA9IGRlZXBtZXJnZTxNYXBTdGF0ZT4oc3RhdGUsIG1hcFN0YXRlLCB7XG4gICAgLy8gbm90ZTogZGVlcG1lcmdlIGJ5IGRlZmF1bHQgd2lsbCBtZXJnZSBhcnJheXMgYnkgY29uY2F0ZW5hdGluZyB0aGVtXG4gICAgLy8gYnV0IHdlIG5lZWQgdG8gb3ZlcndyaXRlIGRlc3RpbmF0aW9uIGFycmF5cyB3aXRoIHNvdXJjZSBhcnJheXMsIGlmIHByZXNlbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vVGVoU2hyaWtlL2RlZXBtZXJnZSNhcnJheW1lcmdlLWV4YW1wbGUtb3ZlcndyaXRlLXRhcmdldC1hcnJheVxuICAgIGFycmF5TWVyZ2U6IChfZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpID0+IHNvdXJjZUFycmF5XG4gIH0pO1xuXG4gIC8vIGlmIGNlbnRlciBtYXBcbiAgLy8gY2VudGVyIG1hcCB3aWxsIG92ZXJyaWRlIG1hcFN0YXRlIGNvbmZpZ1xuICBpZiAob3B0aW9ucy5jZW50ZXJNYXAgJiYgYm91bmRzKSB7XG4gICAgbWVyZ2VkU3RhdGUgPSBmaXRCb3VuZHNVcGRhdGVyKG1lcmdlZFN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiBib3VuZHMsXG4gICAgICBtZXRhOiB7cGFkZGluZzogb3B0aW9ucy5wYWRkaW5nfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIHZhbGlkYXRlIG1hcCBzdGF0ZSBiZWZvcmUgd2UgbWVyZ2VcbiAgbWVyZ2VkU3RhdGUgPSB2YWxpZGF0ZVZpZXdQb3J0KG1lcmdlZFN0YXRlKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm1lcmdlZFN0YXRlLFxuICAgIC8vIHVwZGF0ZSB3aWR0aCBpZiBgaXNTcGxpdGAgaGFzIGNoYW5nZWRcbiAgICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcChtZXJnZWRTdGF0ZS5pc1NwbGl0LCBzdGF0ZSlcbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gb25lIG9yIHNwbGl0IG1hcHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uc3RhdGUsXG4gIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKCFzdGF0ZS5pc1NwbGl0LCBzdGF0ZSksXG4gIGlzU3BsaXQ6ICFzdGF0ZS5pc1NwbGl0LFxuICBtYXBTcGxpdE1vZGU6ICFzdGF0ZS5pc1NwbGl0ID8gTWFwU3BsaXRNb2RlLkRVQUxfTUFQIDogTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAsXG4gIC4uLighc3RhdGUuaXNTcGxpdCA9PT0gZmFsc2VcbiAgICA/IHtcbiAgICAgICAgLy8gaWYgdG9nZ2xpbmcgdG8gbm8gbG9uZ2VyIHNwbGl0IChzaW5nbGUgbW9kZSkgdGhlbiByZXNldCBhIGZldyBwcm9wZXJ0aWVzXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfVxuICAgIDoge30pXG59KTtcblxuLyoqXG4gKiBTZXQgdGhlIG1hcCBzcGxpdCBtb2RlIChzaW5nbGUsIGR1YWwsIG9yIHN3aXBlKVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldE1hcFNwbGl0TW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwU3BsaXRNb2RlVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwU3BsaXRNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBwcmV2TW9kZSA9IHN0YXRlLm1hcFNwbGl0TW9kZTtcblxuICBpZiAobWFwU3BsaXRNb2RlID09PSBwcmV2TW9kZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHN3aXRjaCAobWFwU3BsaXRNb2RlKSB7XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IGZhbHNlLFxuICAgICAgICAuLi4ocHJldk1vZGUgPT09IE1hcFNwbGl0TW9kZS5EVUFMX01BUCAmJiB7XG4gICAgICAgICAgd2lkdGg6IHN0YXRlLndpZHRoICogMlxuICAgICAgICB9KSxcbiAgICAgICAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgICAgICAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgICAgICAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdXG4gICAgICB9O1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLkRVQUxfTUFQOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1hcFNwbGl0TW9kZSxcbiAgICAgICAgaXNTcGxpdDogdHJ1ZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCAmJiB7XG4gICAgICAgICAgd2lkdGg6IHN0YXRlLndpZHRoIC8gMlxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRSAmJiB7XG4gICAgICAgICAgd2lkdGg6IHN0YXRlLndpZHRoIC8gMlxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1hcFNwbGl0TW9kZSxcbiAgICAgICAgaXNTcGxpdDogdHJ1ZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAqIDJcbiAgICAgICAgfSksXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG4vKipcbiAqIFNldCB0aGUgc3dpcGUgY29tcGFyZSBwZXJjZW50YWdlXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge3BlcmNlbnRhZ2V9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1pbigxMDAsIE1hdGgubWF4KDAsIHBlcmNlbnRhZ2UpKTtcbiAgaWYgKGNsYW1wZWQgPT09IHN0YXRlLnN3aXBlQ29tcGFyZVBlcmNlbnRhZ2UpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzd2lwZUNvbXBhcmVQZXJjZW50YWdlOiBjbGFtcGVkXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIGxvY2tlZCBhbmQgdW5sb2NrZWQgc3BsaXQgdmlld3BvcnRzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXJBY3Rpb25cbikgPT4ge1xuICAvLyBTd2lwZSBtb2RlIGFsd2F5cyB1c2VzIHN5bmNlZCB2aWV3cG9ydHNcbiAgaWYgKHN0YXRlLm1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICAvLyBuZXcgbWFwIHN0YXRlIGltbWVkaWF0ZWx5IGdldHMgdGhlIG5ldywgb3B0aW9uYWwgcGF5bG9hZCB2YWx1ZXMgZm9yIGlzVmlld3BvcnRTeW5jZWQgYW5kL29yIGlzWm9vbUxvY2tlZFxuICBjb25zdCBuZXdNYXBTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi4oYWN0aW9uLnBheWxvYWQgfHwge30pXG4gIH07XG5cbiAgaWYgKG5ld01hcFN0YXRlLmlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAvLyBzd2l0Y2hpbmcgZnJvbSB1bnN5bmNlZCB0byBzeW5jZWQgdmlld3BvcnRzXG4gICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBbXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBzd2l0Y2hpbmcgZnJvbSBzeW5jZWQgdG8gdW5zeW5jZWQgdmlld3BvcnRzXG4gICAgLy8gb3IgYWxyZWFkeSBpbiB1bnN5bmNlZCBtb2RlIGFuZCB0b2dnbGluZyBsb2NrZWQgem9vbVxuXG4gICAgaWYgKHN0YXRlLmlzWm9vbUxvY2tlZCAmJiAhbmV3TWFwU3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyBzd2l0Y2hpbmcgb2ZmIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBkb24ndCBjb3B5IHRoZSBtYXBTdGF0ZXMgdG8gbGVmdCBhbmQgcmlnaHQgdmlld3BvcnRzIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSB6b29tIFwianVtcGluZ1wiXG4gICAgICByZXR1cm4gbmV3TWFwU3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKCFzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgbmV3TWFwU3RhdGUuaXNab29tTG9ja2VkKSB7XG4gICAgICAvLyBzd2l0Y2hpbmcgb24gbG9ja2VkIHpvb20gd2hpbGUgdW5zeW5jZWRcbiAgICAgIC8vIG9ubHkgY29weSB6b29tIHZpZXdwb3J0IHByb3BlcnR5IGZyb20gdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHZpZXdwb3J0IHRvIHRoZSBvdGhlclxuICAgICAgLy8gVE9ETzogZG8gd2Ugd2FudCB0byBjaGVjayBmb3IgYSBtYXRjaCBhIGRpZmZlcmVudCB3YXksIHN1Y2ggYXMgYSBjb21ibyBvZiBgbGF0aXR1ZGVgIGFuZCBgbG9uZ2l0dWRlYD9cbiAgICAgIGNvbnN0IGxhc3RVcGRhdGVkVmlld3BvcnRJbmRleCA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmZpbmRJbmRleChcbiAgICAgICAgdiA9PiBuZXdNYXBTdGF0ZS56b29tID09PSB2Lnpvb21cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHNwbGl0TWFwVmlld3BvcnRzID0gbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKChjdXJyZW50Vmlld3BvcnQsIGkpID0+IHtcbiAgICAgICAgaWYgKGkgPT09IGxhc3RVcGRhdGVkVmlld3BvcnRJbmRleCkge1xuICAgICAgICAgIC8vIG5vIHpvb20gdG8gbW9kaWZ5IGhlcmVcbiAgICAgICAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSBvdGhlciB2aWV3cG9ydCBnZXRzIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCdzIHpvb21cbiAgICAgICAgLy8gV0hZPyB0aGUgdmlld3BvcnQgdGhlIHVzZXIgd2FzIGxhc3QgaW50ZXJhY3Rpbmcgd2l0aCB3aWxsIHNldCB6b29tIGFjcm9zcyB0aGUgYm9hcmQgZm9yIHNtb290aCBVWFxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgICAgICB6b29tOiBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0c1tsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXhdLnpvb21cbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IHNwbGl0TWFwVmlld3BvcnRzO1xuXG4gICAgICByZXR1cm4gbmV3TWFwU3RhdGU7XG4gICAgfVxuXG4gICAgLy8gaWYgY3VycmVudCB2aWV3cG9ydCBpcyBzeW5jZWQsIGFuZCB3ZSBhcmUgdW5zeW5jaW5nIGl0XG4gICAgLy8gb3IgYWxyZWFkeSBpbiB1bnN5bmNlZCBtb2RlIGFuZCBOT1QgdG9nZ2xpbmcgbG9ja2VkIHpvb21cbiAgICAvLyBtYWtlIGEgZnJlc2ggY29weSBvZiB0aGUgY3VycmVudCB2aWV3cG9ydCBvYmplY3QsIGFzc2lnbiBpdCB0byBzcGxpdE1hcFZpZXdwb3J0c1tdXG4gICAgLy8gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUgaXMgY2FsbGVkIHR3aWNlIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGNvbmZsaWN0c1xuICAgIGNvbnN0IGxlZnRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBjb25zdCByaWdodFZpZXdwb3J0ID0gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUobmV3TWFwU3RhdGUpO1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW2xlZnRWaWV3cG9ydCwgcmlnaHRWaWV3cG9ydF07XG4gIH1cblxuICAvLyByZXR1cm4gbmV3IHN0YXRlXG4gIHJldHVybiBuZXdNYXBTdGF0ZTtcbn07XG5cbi8vIEhlbHBlcnNcbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXBEaW1Gb3JTcGxpdE1hcChpc1NwbGl0LCBzdGF0ZSkge1xuICAvLyBjYXNlczpcbiAgLy8gMS4gc3RhdGUgc3BsaXQ6IHRydWUgLSBpc1NwbGl0OiB0cnVlXG4gIC8vIGRvIG5vdGhpbmdcbiAgLy8gMi4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogZmFsc2VcbiAgLy8gZG8gbm90aGluZ1xuICBpZiAoc3RhdGUuaXNTcGxpdCA9PT0gaXNTcGxpdCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8vIEluIHN3aXBlIG1vZGUsIGJvdGggbWFwcyB1c2UgZnVsbCB3aWR0aCAob3ZlcmxhcHBpbmcgd2l0aCBjbGlwKVxuICBpZiAoc3RhdGUubWFwU3BsaXRNb2RlID09PSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHdpZHRoID1cbiAgICBzdGF0ZS5pc1NwbGl0ICYmICFpc1NwbGl0XG4gICAgICA/IC8vIDMuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogZmFsc2VcbiAgICAgICAgLy8gZG91YmxlIHdpZHRoXG4gICAgICAgIHN0YXRlLndpZHRoICogMlxuICAgICAgOiAvLyA0LiBzdGF0ZSBzcGxpdDogZmFsc2UgLSBpc1NwbGl0OiB0cnVlXG4gICAgICAgIC8vIHNwbGl0IHdpZHRoXG4gICAgICAgIHN0YXRlLndpZHRoIC8gMjtcblxuICByZXR1cm4ge1xuICAgIHdpZHRoXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyhzdGF0ZTogTWFwU3RhdGUsIG5ld01hcFN0YXRlOiBNYXBTdGF0ZSkge1xuICAvLyBHZXQgdGhlIG5ldyB2aWV3cG9ydCBib3VuZHNcbiAgY29uc3Qgdmlld3BvcnRCb3VuZHMgPSBnZW9WaWV3cG9ydC5ib3VuZHMoXG4gICAgW25ld01hcFN0YXRlLmxvbmdpdHVkZSwgbmV3TWFwU3RhdGUubGF0aXR1ZGVdLFxuICAgIG5ld01hcFN0YXRlLnpvb20sXG4gICAgW25ld01hcFN0YXRlLndpZHRoLCBuZXdNYXBTdGF0ZS5oZWlnaHRdLFxuICAgIE1BUEJPWF9USUxFX1NJWkVcbiAgKTtcbiAgLy8gR2VuZXJhdGUgdHVyZiBQb2x5Z29uIGZyb20gYm91bmRzIGZvciBjb21wYXJpc29uXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzUG9seWdvbiA9IGJib3hQb2x5Z29uKHZpZXdwb3J0Qm91bmRzKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBuZXdTdGF0ZU1heEJvdW5kczogQm91bmRzID0gbmV3TWFwU3RhdGUubWF4Qm91bmRzO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG1heEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbihuZXdTdGF0ZU1heEJvdW5kcyk7XG5cbiAgLy8gSWYgbWF4Qm91bmRzIGhhcyBjaGFuZ2VkIHJlc2V0IHRoZSB2aWV3cG9ydCB0byBzbmFwIHRvIGJvdW5kc1xuICBjb25zdCBoYXNNYXhCb3VuZHNDaGFuZ2VkID1cbiAgICAhc3RhdGUubWF4Qm91bmRzIHx8ICFzdGF0ZS5tYXhCb3VuZHMuZXZlcnkoKHZhbCwgaWR4KSA9PiB2YWwgPT09IG5ld1N0YXRlTWF4Qm91bmRzW2lkeF0pO1xuICBpZiAoaGFzTWF4Qm91bmRzQ2hhbmdlZCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gICAgaWYgKCFib29sZWFuV2l0aGluKHZpZXdwb3J0Qm91bmRzUG9seWdvbiwgbWF4Qm91bmRzUG9seWdvbikpIHtcbiAgICAgIGNvbnN0IHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCB6b29tfSA9IGZpdEJvdW5kcyh7XG4gICAgICAgIHdpZHRoOiBuZXdNYXBTdGF0ZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBuZXdNYXBTdGF0ZS5oZWlnaHQsXG4gICAgICAgIGJvdW5kczogW1xuICAgICAgICAgIFtuZXdTdGF0ZU1heEJvdW5kc1swXSwgbmV3U3RhdGVNYXhCb3VuZHNbMV1dLFxuICAgICAgICAgIFtuZXdTdGF0ZU1heEJvdW5kc1syXSwgbmV3U3RhdGVNYXhCb3VuZHNbM11dXG4gICAgICAgIF1cbiAgICAgIH0pO1xuXG4gICAgICBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgICAgLi4ubmV3TWFwU3RhdGUsXG4gICAgICAgIGxhdGl0dWRlLFxuICAgICAgICBsb25naXR1ZGUsXG4gICAgICAgIC8vIEZvciBtYXJnaW5hbCBvciBpbnZhbGlkIGJvdW5kcywgem9vbSBtYXkgYmUgTmFOLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBhIHZhbGlkIHZhbHVlIGluIG9yZGVyXG4gICAgICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAgICAgLi4uKE51bWJlci5pc0Zpbml0ZSh6b29tKSA/IHt6b29tfSA6IHt9KVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIG5ld01hcFN0YXRlIHZpZXdwb3J0IGlzIHdpdGhpbiBtYXhCb3VuZHNcbiAgaWYgKCFib29sZWFuV2l0aGluKHZpZXdwb3J0Qm91bmRzUG9seWdvbiwgbWF4Qm91bmRzUG9seWdvbikpIHtcbiAgICBuZXdNYXBTdGF0ZSA9IHtcbiAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgbG9uZ2l0dWRlOiBzdGF0ZS5sb25naXR1ZGUsXG4gICAgICBsYXRpdHVkZTogc3RhdGUubGF0aXR1ZGUsXG4gICAgICB6b29tOiBzdGF0ZS56b29tXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBuZXdNYXBTdGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKHN0YXRlOiBNYXBTdGF0ZSk6IFZpZXdwb3J0IHtcbiAgcmV0dXJuIHBpY2soc3RhdGUsIFtcbiAgICAnd2lkdGgnLFxuICAgICdoZWlnaHQnLFxuICAgICd6b29tJyxcbiAgICAncGl0Y2gnLFxuICAgICdiZWFyaW5nJyxcbiAgICAnbGF0aXR1ZGUnLFxuICAgICdsb25naXR1ZGUnLFxuICAgICdkcmFnUm90YXRlJyxcbiAgICAnbWluWm9vbScsXG4gICAgJ21heFpvb20nLFxuICAgICdtYXhQaXRjaCcsXG4gICAgJ21heEJvdW5kcydcbiAgXSk7XG59XG5cbi8qKiBTZWxlY3QgaXRlbXMgZnJvbSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgbm90IHVuZGVmaW5lZCAqL1xuY29uc3QgZGVmaW5lZFByb3BzID0gb2JqID0+XG4gIE9iamVjdC5lbnRyaWVzKG9iaikucmVkdWNlKFxuICAgIChhY2N1LCBbaywgdl0pID0+ICh7Li4uYWNjdSwgLi4uKHYgIT09IHVuZGVmaW5lZCA/IHtba106IHZ9IDoge30pfSksXG4gICAge31cbiAgKTtcblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnQob3JpZ2luYWxWaWV3cG9ydDogVmlld3BvcnQsIHZpZXdwb3J0VXBkYXRlczogVmlld3BvcnQpOiBWaWV3cG9ydCB7XG4gIGxldCBuZXdWaWV3cG9ydCA9IHtcbiAgICAuLi5vcmlnaW5hbFZpZXdwb3J0LFxuICAgIC4uLihkZWZpbmVkUHJvcHModmlld3BvcnRVcGRhdGVzKSB8fCB7fSlcbiAgfTtcblxuICAvLyBkZWNrLmdsJ3MgZ2xvYmUgY29udHJvbGxlciBhcHBsaWVzIGEgbGF0aXR1ZGUtZGVwZW5kZW50IGFkanVzdG1lbnQgdG8gdGhlXG4gIC8vIHpvb20gcmFuZ2UgKHNlZSBLZXBsZXJHbG9iZVZpZXcuX2NvbnN0cmFpblpvb20pLiBJZiB3ZSBjbGFtcCB0aGUgcHJvcGFnYXRlZFxuICAvLyB6b29tIGhlcmUgYWdhaW5zdCB0aGUgcmF3IG1pblpvb20vbWF4Wm9vbSAod2l0aG91dCB0aGF0IGFkanVzdG1lbnQpLCBSZWR1eFxuICAvLyBlbmRzIHVwIGRpc2FncmVlaW5nIHdpdGggdGhlIGNvbnRyb2xsZXI6IHRoZSBjb250cm9sbGVyIGxldHMgdGhlIHVzZXIgcHVsbFxuICAvLyB0aGUgZ2xvYmUgZnVydGhlciBvdXQsIGJ1dCB0aGlzIGNsYW1wIHNuYXBzIHpvb20gYmFjayB0byBgbWluWm9vbWAgd2hlbiB0aGVcbiAgLy8gaW50ZXJhY3Rpb24ncyBpbmVydGlhIHRyYW5zaXRpb24gZW5kcy4gQXBwbHkgdGhlIHNhbWUgYWRqdXN0bWVudCBpbiBnbG9iZVxuICAvLyBtb2RlIHNvIFJlZHV4IHN0YXlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgY29udHJvbGxlciBhbmQgdGhlcmUncyBubyBzbmFwLWJhY2suXG4gIGNvbnN0IGlzR2xvYmUgPSAobmV3Vmlld3BvcnQgYXMgYW55KS5nbG9iZT8uZW5hYmxlZDtcblxuICBpZiAoaXNHbG9iZSkge1xuICAgIC8vIEtlZXAgdGhlIGNhbWVyYSB0YXJnZXQgd2l0aGluIGEgbGF0aXR1ZGUgYmFuZCBhcm91bmQgdGhlIGVxdWF0b3Igc28gdGhlXG4gICAgLy8gc3RvcmVkIHZpZXdwb3J0IGNhbid0IGJlIGNlbnRlcmVkIG9uIHRoZSBwb2xlcyAobWF0Y2hlcyB0aGUgZ2xvYmVcbiAgICAvLyBjb250cm9sbGVyJ3MgYXBwbHlDb25zdHJhaW50cyBzbyBnZW9jb2Rlci9wcm9ncmFtbWF0aWMgdXBkYXRlcyBhZ3JlZSkuXG4gICAgaWYgKHR5cGVvZiBuZXdWaWV3cG9ydC5sYXRpdHVkZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIG5ld1ZpZXdwb3J0LmxhdGl0dWRlID0gTWF0aC5taW4oXG4gICAgICAgIEdMT0JFX01BWF9MQVRJVFVERSxcbiAgICAgICAgTWF0aC5tYXgoLUdMT0JFX01BWF9MQVRJVFVERSwgbmV3Vmlld3BvcnQubGF0aXR1ZGUpXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB6b29tQWRqdXN0bWVudCA9IE1hdGgubG9nMihNYXRoLmNvcygoKG5ld1ZpZXdwb3J0LmxhdGl0dWRlID8/IDApICogTWF0aC5QSSkgLyAxODApKTtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQubWluWm9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC56b29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgbmV3Vmlld3BvcnQuem9vbSA8IG5ld1ZpZXdwb3J0Lm1pblpvb20gKyB6b29tQWRqdXN0bWVudFxuICAgICkge1xuICAgICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1pblpvb20gKyB6b29tQWRqdXN0bWVudDtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lm1heFpvb20gPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQuem9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tICsgem9vbUFkanVzdG1lbnRcbiAgICApIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5tYXhab29tICsgem9vbUFkanVzdG1lbnQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIE1ha2Ugc3VyZSB6b29tIGxldmVsIGRvZXNuJ3QgZ28gYmVsbG93IG1pblpvb20gaWYgZGVmaW5lZFxuICAgIGlmIChuZXdWaWV3cG9ydC5taW5ab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA8IG5ld1ZpZXdwb3J0Lm1pblpvb20pIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5taW5ab29tO1xuICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGFib3ZlIG1heFpvb20gaWYgZGVmaW5lZFxuICAgIGlmIChuZXdWaWV3cG9ydC5tYXhab29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSA+IG5ld1ZpZXdwb3J0Lm1heFpvb20pIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5tYXhab29tO1xuICAgIH1cbiAgfVxuICAvLyBMaW1pdCB2aWV3cG9ydCB1cGRhdGUgYmFzZWQgb24gbWF4Qm91bmRzXG4gIGlmIChuZXdWaWV3cG9ydC5tYXhCb3VuZHMgJiYgdmFsaWRhdGVCb3VuZHMobmV3Vmlld3BvcnQubWF4Qm91bmRzKSkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVmlld3BvcnQnIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnTWFwU3RhdGUnOiBpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkLCBpc1pvb21Mb2NrZWQsIHNwbGl0TWFwVmlld3BvcnRzXG4gICAgbmV3Vmlld3BvcnQgPSB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMob3JpZ2luYWxWaWV3cG9ydCwgbmV3Vmlld3BvcnQpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1ZpZXdwb3J0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsY0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBUUEsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBTzhCLFNBQUFRLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVB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RyxDQUFFLEVBQUFKLHFCQUFBLEdBQUNGLFdBQVcsQ0FBQy9JLFFBQVEsY0FBQWlKLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQyxJQUFJMUUsSUFBSSxDQUFDK0UsRUFBRSxHQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLElBQ0UsT0FBT1AsV0FBVyxDQUFDekksT0FBTyxLQUFLLFFBQVEsSUFDdkMsT0FBT3lJLFdBQVcsQ0FBQzdJLElBQUksS0FBSyxRQUFRLElBQ3BDNkksV0FBVyxDQUFDN0ksSUFBSSxHQUFHNkksV0FBVyxDQUFDekksT0FBTyxHQUFHNkksY0FBYyxFQUN2RDtNQUNBSixXQUFXLENBQUM3SSxJQUFJLEdBQUc2SSxXQUFXLENBQUN6SSxPQUFPLEdBQUc2SSxjQUFjO0lBQ3pEO0lBQ0EsSUFDRSxPQUFPSixXQUFXLENBQUN2SSxPQUFPLEtBQUssUUFBUSxJQUN2QyxPQUFPdUksV0FBVyxDQUFDN0ksSUFBSSxLQUFLLFFBQVEsSUFDcEM2SSxXQUFXLENBQUM3SSxJQUFJLEdBQUc2SSxXQUFXLENBQUN2SSxPQUFPLEdBQUcySSxjQUFjLEVBQ3ZEO01BQ0FKLFdBQVcsQ0FBQzdJLElBQUksR0FBRzZJLFdBQVcsQ0FBQ3ZJLE9BQU8sR0FBRzJJLGNBQWM7SUFDekQ7RUFDRixDQUFDLE1BQU07SUFDTDtJQUNBLElBQUlKLFdBQVcsQ0FBQ3pJLE9BQU8sSUFBSXlJLFdBQVcsQ0FBQzdJLElBQUksSUFBSTZJLFdBQVcsQ0FBQzdJLElBQUksR0FBRzZJLFdBQVcsQ0FBQ3pJLE9BQU8sRUFBRTtNQUNyRnlJLFdBQVcsQ0FBQzdJLElBQUksR0FBRzZJLFdBQVcsQ0FBQ3pJLE9BQU87SUFDeEM7SUFDQTtJQUNBLElBQUl5SSxXQUFXLENBQUN2SSxPQUFPLElBQUl1SSxXQUFXLENBQUM3SSxJQUFJLElBQUk2SSxXQUFXLENBQUM3SSxJQUFJLEdBQUc2SSxXQUFXLENBQUN2SSxPQUFPLEVBQUU7TUFDckZ1SSxXQUFXLENBQUM3SSxJQUFJLEdBQUc2SSxXQUFXLENBQUN2SSxPQUFPO0lBQ3hDO0VBQ0Y7RUFDQTtFQUNBLElBQUl1SSxXQUFXLENBQUNySSxTQUFTLElBQUksSUFBQTZJLHFCQUFjLEVBQUNSLFdBQVcsQ0FBQ3JJLFNBQVMsQ0FBQyxFQUFFO0lBQ2xFO0lBQ0FxSSxXQUFXLEdBQUczQiwyQkFBMkIsQ0FBQ3dCLGdCQUFnQixFQUFFRyxXQUFXLENBQUM7RUFDMUU7RUFFQSxPQUFPQSxXQUFXO0FBQ3BCIiwiaWdub3JlTGlzdCI6W119
@@ -19,7 +19,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
19
19
  * Important: Do not rename `actionHandler` or the assignment pattern of property value.
20
20
  * It is used to generate documentation
21
21
  */
22
- var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), _actions.ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), _actions.ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater), _actions.ActionTypes.SET_MAP_VIEW_MODE, mapStateUpdaters.setMapViewModeUpdater), _actions.ActionTypes.GLOBE_CONFIG_CHANGE, mapStateUpdaters.globeConfigChangeUpdater), _actions.ActionTypes.SET_MAP_SPLIT_MODE, mapStateUpdaters.setMapSplitModeUpdater), (0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.SET_SWIPE_COMPARE_PERCENTAGE, mapStateUpdaters.setSwipeComparePercentageUpdater));
22
+ var actionHandler = (_actionHandler = {}, (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.UPDATE_MAP, mapStateUpdaters.updateMapUpdater), _actions.ActionTypes.APPLY_MAP_STATE, mapStateUpdaters.applyMapStateUpdater), _actions.ActionTypes.FIT_BOUNDS, mapStateUpdaters.fitBoundsUpdater), _actions.ActionTypes.TOGGLE_PERSPECTIVE, mapStateUpdaters.togglePerspectiveUpdater), _actions.ActionTypes.RECEIVE_MAP_CONFIG, mapStateUpdaters.receiveMapConfigUpdater), _actions.ActionTypes.RESET_MAP_CONFIG, mapStateUpdaters.resetMapConfigUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP, mapStateUpdaters.toggleSplitMapUpdater), _actions.ActionTypes.TOGGLE_SPLIT_MAP_VIEWPORT, mapStateUpdaters.toggleSplitMapViewportUpdater), _actions.ActionTypes.SET_MAP_VIEW_MODE, mapStateUpdaters.setMapViewModeUpdater), _actions.ActionTypes.GLOBE_CONFIG_CHANGE, mapStateUpdaters.globeConfigChangeUpdater), (0, _defineProperty2["default"])((0, _defineProperty2["default"])(_actionHandler, _actions.ActionTypes.SET_MAP_SPLIT_MODE, mapStateUpdaters.setMapSplitModeUpdater), _actions.ActionTypes.SET_SWIPE_COMPARE_PERCENTAGE, mapStateUpdaters.setSwipeComparePercentageUpdater));
23
23
 
24
24
  /* Reducer */
25
25
  var mapStateReducerFactory = exports.mapStateReducerFactory = function mapStateReducerFactory() {
@@ -32,4 +32,4 @@ var mapStateReducerFactory = exports.mapStateReducerFactory = function mapStateR
32
32
  );
33
33
  };
34
34
  var _default = exports["default"] = mapStateReducerFactory();
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdXhBY3Rpb25zIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwibWFwU3RhdGVVcGRhdGVycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGlvbkhhbmRsZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX01BUCIsInVwZGF0ZU1hcFVwZGF0ZXIiLCJGSVRfQk9VTkRTIiwiZml0Qm91bmRzVXBkYXRlciIsIlRPR0dMRV9QRVJTUEVDVElWRSIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIlJFQ0VJVkVfTUFQX0NPTkZJRyIsInJlY2VpdmVNYXBDb25maWdVcGRhdGVyIiwiUkVTRVRfTUFQX0NPTkZJRyIsInJlc2V0TWFwQ29uZmlnVXBkYXRlciIsIlRPR0dMRV9TUExJVF9NQVAiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJUT0dHTEVfU1BMSVRfTUFQX1ZJRVdQT1JUIiwidG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIiLCJTRVRfTUFQX1ZJRVdfTU9ERSIsInNldE1hcFZpZXdNb2RlVXBkYXRlciIsIkdMT0JFX0NPTkZJR19DSEFOR0UiLCJnbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJTRVRfTUFQX1NQTElUX01PREUiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwiU0VUX1NXSVBFX0NPTVBBUkVfUEVSQ0VOVEFHRSIsInNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyIiwibWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSIsImV4cG9ydHMiLCJpbml0aWFsU3RhdGUiLCJ1bmRlZmluZWQiLCJoYW5kbGVBY3Rpb25zIiwiSU5JVElBTF9NQVBfU1RBVEUiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAtc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtoYW5kbGVBY3Rpb25zfSBmcm9tICdyZWR1eC1hY3Rpb25zJztcbmltcG9ydCB7QWN0aW9uVHlwZXN9IGZyb20gJ0BrZXBsZXIuZ2wvYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBtYXBTdGF0ZVVwZGF0ZXJzIGZyb20gJy4vbWFwLXN0YXRlLXVwZGF0ZXJzJztcblxuLyoqXG4gKiBJbXBvcnRhbnQ6IERvIG5vdCByZW5hbWUgYGFjdGlvbkhhbmRsZXJgIG9yIHRoZSBhc3NpZ25tZW50IHBhdHRlcm4gb2YgcHJvcGVydHkgdmFsdWUuXG4gKiBJdCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRvY3VtZW50YXRpb25cbiAqL1xuY29uc3QgYWN0aW9uSGFuZGxlciA9IHtcbiAgW0FjdGlvblR5cGVzLlVQREFURV9NQVBdOiBtYXBTdGF0ZVVwZGF0ZXJzLnVwZGF0ZU1hcFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5GSVRfQk9VTkRTXTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1BFUlNQRUNUSVZFXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUddOiBtYXBTdGF0ZVVwZGF0ZXJzLnJlY2VpdmVNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVTRVRfTUFQX0NPTkZJR106IG1hcFN0YXRlVXBkYXRlcnMucmVzZXRNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTUFQX1ZJRVdfTU9ERV06IG1hcFN0YXRlVXBkYXRlcnMuc2V0TWFwVmlld01vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuR0xPQkVfQ09ORklHX0NIQU5HRV06IG1hcFN0YXRlVXBkYXRlcnMuZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX01BUF9TUExJVF9NT0RFXTogbWFwU3RhdGVVcGRhdGVycy5zZXRNYXBTcGxpdE1vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX1NXSVBFX0NPTVBBUkVfUEVSQ0VOVEFHRV06IG1hcFN0YXRlVXBkYXRlcnMuc2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXJcbn07XG5cbi8qIFJlZHVjZXIgKi9cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5ID0gKGluaXRpYWxTdGF0ZSA9IHt9KSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGhhbmRsZUFjdGlvbnMoYWN0aW9uSGFuZGxlciwge1xuICAgIC4uLm1hcFN0YXRlVXBkYXRlcnMuSU5JVElBTF9NQVBfU1RBVEUsXG4gICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgIGluaXRpYWxTdGF0ZVxuICB9KTtcblxuZXhwb3J0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
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdXhBY3Rpb25zIiwicmVxdWlyZSIsIl9hY3Rpb25zIiwibWFwU3RhdGVVcGRhdGVycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGlvbkhhbmRsZXIiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiYWN0aW9uSGFuZGxlciIsIkFjdGlvblR5cGVzIiwiVVBEQVRFX01BUCIsInVwZGF0ZU1hcFVwZGF0ZXIiLCJBUFBMWV9NQVBfU1RBVEUiLCJhcHBseU1hcFN0YXRlVXBkYXRlciIsIkZJVF9CT1VORFMiLCJmaXRCb3VuZHNVcGRhdGVyIiwiVE9HR0xFX1BFUlNQRUNUSVZFIiwidG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyIiwiUkVDRUlWRV9NQVBfQ09ORklHIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJSRVNFVF9NQVBfQ09ORklHIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiVE9HR0xFX1NQTElUX01BUCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsIlRPR0dMRV9TUExJVF9NQVBfVklFV1BPUlQiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciIsIlNFVF9NQVBfVklFV19NT0RFIiwic2V0TWFwVmlld01vZGVVcGRhdGVyIiwiR0xPQkVfQ09ORklHX0NIQU5HRSIsImdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlciIsIlNFVF9NQVBfU1BMSVRfTU9ERSIsInNldE1hcFNwbGl0TW9kZVVwZGF0ZXIiLCJTRVRfU1dJUEVfQ09NUEFSRV9QRVJDRU5UQUdFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5IiwiZXhwb3J0cyIsImluaXRpYWxTdGF0ZSIsInVuZGVmaW5lZCIsImhhbmRsZUFjdGlvbnMiLCJJTklUSUFMX01BUF9TVEFURSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hcC1zdGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2hhbmRsZUFjdGlvbnN9IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuaW1wb3J0IHtBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCAqIGFzIG1hcFN0YXRlVXBkYXRlcnMgZnJvbSAnLi9tYXAtc3RhdGUtdXBkYXRlcnMnO1xuXG4vKipcbiAqIEltcG9ydGFudDogRG8gbm90IHJlbmFtZSBgYWN0aW9uSGFuZGxlcmAgb3IgdGhlIGFzc2lnbm1lbnQgcGF0dGVybiBvZiBwcm9wZXJ0eSB2YWx1ZS5cbiAqIEl0IGlzIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRhdGlvblxuICovXG5jb25zdCBhY3Rpb25IYW5kbGVyID0ge1xuICBbQWN0aW9uVHlwZXMuVVBEQVRFX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudXBkYXRlTWFwVXBkYXRlcixcbiAgW0FjdGlvblR5cGVzLkFQUExZX01BUF9TVEFURV06IG1hcFN0YXRlVXBkYXRlcnMuYXBwbHlNYXBTdGF0ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5GSVRfQk9VTkRTXTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1BFUlNQRUNUSVZFXTogbWFwU3RhdGVVcGRhdGVycy50b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUddOiBtYXBTdGF0ZVVwZGF0ZXJzLnJlY2VpdmVNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuUkVTRVRfTUFQX0NPTkZJR106IG1hcFN0YXRlVXBkYXRlcnMucmVzZXRNYXBDb25maWdVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuVE9HR0xFX1NQTElUX01BUF9WSUVXUE9SVF06IG1hcFN0YXRlVXBkYXRlcnMudG9nZ2xlU3BsaXRNYXBWaWV3cG9ydFVwZGF0ZXIsXG4gIFtBY3Rpb25UeXBlcy5TRVRfTUFQX1ZJRVdfTU9ERV06IG1hcFN0YXRlVXBkYXRlcnMuc2V0TWFwVmlld01vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuR0xPQkVfQ09ORklHX0NIQU5HRV06IG1hcFN0YXRlVXBkYXRlcnMuZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX01BUF9TUExJVF9NT0RFXTogbWFwU3RhdGVVcGRhdGVycy5zZXRNYXBTcGxpdE1vZGVVcGRhdGVyLFxuICBbQWN0aW9uVHlwZXMuU0VUX1NXSVBFX0NPTVBBUkVfUEVSQ0VOVEFHRV06IG1hcFN0YXRlVXBkYXRlcnMuc2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXJcbn07XG5cbi8qIFJlZHVjZXIgKi9cbmV4cG9ydCBjb25zdCBtYXBTdGF0ZVJlZHVjZXJGYWN0b3J5ID0gKGluaXRpYWxTdGF0ZSA9IHt9KSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGhhbmRsZUFjdGlvbnMoYWN0aW9uSGFuZGxlciwge1xuICAgIC4uLm1hcFN0YXRlVXBkYXRlcnMuSU5JVElBTF9NQVBfU1RBVEUsXG4gICAgLi4uaW5pdGlhbFN0YXRlLFxuICAgIGluaXRpYWxTdGF0ZVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgbWFwU3RhdGVSZWR1Y2VyRmFjdG9yeSgpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxnQkFBQSxHQUFBQyx1QkFBQSxDQUFBSCxPQUFBO0FBQXlELElBQUFJLGNBQUEsRUFMekQ7QUFDQTtBQUFBLFNBQUFELHdCQUFBRSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSix1QkFBQSxZQUFBQSx3QkFBQUUsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxPQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEdBQUFNLENBQUEsQ0FBQU8sR0FBQSxDQUFBYixDQUFBLEVBQUFRLENBQUEsY0FBQU0sRUFBQSxJQUFBZCxDQUFBLGdCQUFBYyxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxFQUFBLE9BQUFQLENBQUEsSUFBQUQsQ0FBQSxHQUFBVyxNQUFBLENBQUFDLGNBQUEsS0FBQUQsTUFBQSxDQUFBRSx3QkFBQSxDQUFB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