kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
88 lines (87 loc) • 27.6 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireDefault(require("react"));
var _reactRedux = require("react-redux");
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _sourceDataSelector = _interopRequireDefault(require("../common/source-data-selector"));
var _channelByValueSelector = _interopRequireDefault(require("./channel-by-value-selector"));
var _layerConfigGroup = _interopRequireWildcard(require("./layer-config-group"));
var _layerColorSelector = require("./layer-color-selector");
var _radiusByZoomInput = _interopRequireDefault(require("./radius-by-zoom-input"));
var _visConfigSlider = _interopRequireDefault(require("./vis-config-slider"));
var _visConfigSwitch = _interopRequireDefault(require("./vis-config-switch"));
var _templateObject; // SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
var StyledLayerConfigurator = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 12px;\n"])));
VectorTileLayerConfiguratorFactory.deps = [_channelByValueSelector["default"], _layerColorSelector.LayerColorRangeSelectorFactory, _layerColorSelector.LayerColorSelectorFactory, _layerConfigGroup["default"], _visConfigSlider["default"], _visConfigSwitch["default"], _sourceDataSelector["default"]];
function VectorTileLayerConfiguratorFactory(ChannelByValueSelector, LayerColorRangeSelector, LayerColorSelector, LayerConfigGroup, VisConfigSlider, VisConfigSwitch) {
var VectorTileLayerConfigurator = function VectorTileLayerConfigurator(_ref) {
var _layer$config$visConf;
var layer = _ref.layer,
visConfiguratorProps = _ref.visConfiguratorProps,
layerChannelConfigProps = _ref.layerChannelConfigProps,
layerConfiguratorProps = _ref.layerConfiguratorProps;
return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
label: "layer.fillColor"
}), layerChannelConfigProps.fields ? /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, {
channel: layer.visualChannels.color
})) : null, layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.dynamicColor)), /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
channel: layer.visualChannels.color
}))) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, {
label: "layer.strokeColor",
collapsible: true
}), /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, {
channel: layer.visualChannels.strokeColor
})), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
property: "strokeColorRange",
channel: layer.visualChannels.strokeColor
})) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, {
selectedColor: layer.config.visConfig.strokeColor,
property: "strokeColor"
})), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.strokeOpacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.stroked, {
label: "layer.strokeWidth",
collapsible: true
}), layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, {
label: false
})) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.strokeWidth, visConfiguratorProps, {
label: false
})), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, {
channel: layer.visualChannels.size
})))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, {
collapsible: true
}), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, {
label: false
})), layerChannelConfigProps.fields ? /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, {
channel: layer.visualChannels.height
})) : null), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, {
label: 'layer.radius',
description: "Point radius in pixels or meters",
collapsible: true
}), (_layer$config$visConf = layer.config.visConfig.radiusByZoom) !== null && _layer$config$visConf !== void 0 && _layer$config$visConf.enabled && visConfiguratorProps.onChange ? /*#__PURE__*/_react["default"].createElement(_radiusByZoomInput["default"], {
config: layer.config.visConfig.radiusByZoom,
onChange: visConfiguratorProps.onChange,
label: "Radius",
property: "radiusByZoom",
unit: "px"
}) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, {
label: false
})), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, layerChannelConfigProps.fields ? /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, {
channel: layer.visualChannels.radius
})) : null, /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.radiusUnits, visConfiguratorProps)))));
};
var ConnectedVectorTileLayerConfigurator = (0, _reactRedux.connect)(function (state) {
return state;
})(VectorTileLayerConfigurator);
return ConnectedVectorTileLayerConfigurator;
}
var _default = exports["default"] = VectorTileLayerConfiguratorFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdFJlZHV4IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfc291cmNlRGF0YVNlbGVjdG9yIiwiX2NoYW5uZWxCeVZhbHVlU2VsZWN0b3IiLCJfbGF5ZXJDb25maWdHcm91cCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2xheWVyQ29sb3JTZWxlY3RvciIsIl9yYWRpdXNCeVpvb21JbnB1dCIsIl92aXNDb25maWdTbGlkZXIiLCJfdmlzQ29uZmlnU3dpdGNoIiwiX3RlbXBsYXRlT2JqZWN0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkTGF5ZXJDb25maWd1cmF0b3IiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlZlY3RvclRpbGVMYXllckNvbmZpZ3VyYXRvckZhY3RvcnkiLCJkZXBzIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3RvcnkiLCJMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnkiLCJMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5IiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJWaXNDb25maWdTbGlkZXJGYWN0b3J5IiwiVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJDaGFubmVsQnlWYWx1ZVNlbGVjdG9yIiwiTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3IiLCJMYXllckNvbG9yU2VsZWN0b3IiLCJMYXllckNvbmZpZ0dyb3VwIiwiVmlzQ29uZmlnU2xpZGVyIiwiVmlzQ29uZmlnU3dpdGNoIiwiVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yIiwiX3JlZiIsIl9sYXllciRjb25maWckdmlzQ29uZiIsImxheWVyIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwibGFiZWwiLCJmaWVsZHMiLCJjaGFubmVsIiwidmlzdWFsQ2hhbm5lbHMiLCJjb2xvciIsImNvbmZpZyIsImNvbG9yRmllbGQiLCJGcmFnbWVudCIsInZpc0NvbmZpZ1NldHRpbmdzIiwiZHluYW1pY0NvbG9yIiwib3BhY2l0eSIsInN0cm9rZWQiLCJjb2xsYXBzaWJsZSIsInN0cm9rZUNvbG9yIiwic3Ryb2tlQ29sb3JGaWVsZCIsInByb3BlcnR5Iiwic2VsZWN0ZWRDb2xvciIsInZpc0NvbmZpZyIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50Iiwic3Ryb2tlT3BhY2l0eSIsInNpemVGaWVsZCIsInNpemVSYW5nZSIsInN0cm9rZVdpZHRoIiwic2l6ZSIsImVuYWJsZTNkIiwiZWxldmF0aW9uU2NhbGUiLCJoZWlnaHQiLCJkZXNjcmlwdGlvbiIsInJhZGl1c0J5Wm9vbSIsImVuYWJsZWQiLCJvbkNoYW5nZSIsInVuaXQiLCJyYWRpdXMiLCJyYWRpdXNVbml0cyIsIkNvbm5lY3RlZFZlY3RvclRpbGVMYXllckNvbmZpZ3VyYXRvciIsImNvbm5lY3QiLCJzdGF0ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL3ZlY3Rvci10aWxlLWxheWVyLWNvbmZpZ3VyYXRvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Y29ubmVjdH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7VmVjdG9yVGlsZUxheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0tlcGxlclRhYmxlIGFzIEtlcGxlckRhdGFzZXR9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG5pbXBvcnQgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeSBmcm9tICcuLi9jb21tb24vc291cmNlLWRhdGEtc2VsZWN0b3InO1xuaW1wb3J0IENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5IGZyb20gJy4vY2hhbm5lbC1ieS12YWx1ZS1zZWxlY3Rvcic7XG5pbXBvcnQgTGF5ZXJDb25maWdHcm91cEZhY3RvcnksIHtDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudH0gZnJvbSAnLi9sYXllci1jb25maWctZ3JvdXAnO1xuaW1wb3J0IHtMYXllckNvbG9yUmFuZ2VTZWxlY3RvckZhY3RvcnksIExheWVyQ29sb3JTZWxlY3RvckZhY3Rvcnl9IGZyb20gJy4vbGF5ZXItY29sb3Itc2VsZWN0b3InO1xuaW1wb3J0IFZpc0NvbmZpZ0J5Wm9vbUlucHV0IGZyb20gJy4vcmFkaXVzLWJ5LXpvb20taW5wdXQnO1xuaW1wb3J0IFZpc0NvbmZpZ1NsaWRlckZhY3RvcnkgZnJvbSAnLi92aXMtY29uZmlnLXNsaWRlcic7XG5pbXBvcnQgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSBmcm9tICcuL3Zpcy1jb25maWctc3dpdGNoJztcblxuY29uc3QgU3R5bGVkTGF5ZXJDb25maWd1cmF0b3IgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAxMnB4O1xuYDtcblxudHlwZSBHZXRQcm9wczxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiBSZWFjdC5GQzxhbnk+PiA9IFBhcmFtZXRlcnM8UmV0dXJuVHlwZTxUPj5bMF07XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGxheWVyOiBWZWN0b3JUaWxlTGF5ZXI7XG4gIGRhdGFzZXQ/OiBLZXBsZXJEYXRhc2V0O1xuICB2aXNDb25maWd1cmF0b3JQcm9wczogYW55O1xuICBsYXllckNoYW5uZWxDb25maWdQcm9wczogR2V0UHJvcHM8dHlwZW9mIENoYW5uZWxCeVZhbHVlU2VsZWN0b3JGYWN0b3J5PjtcbiAgbGF5ZXJDb25maWd1cmF0b3JQcm9wczogYW55O1xufTtcblxuVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeS5kZXBzID0gW1xuICBDaGFubmVsQnlWYWx1ZVNlbGVjdG9yRmFjdG9yeSxcbiAgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5LFxuICBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeSxcbiAgVmlzQ29uZmlnU2xpZGVyRmFjdG9yeSxcbiAgVmlzQ29uZmlnU3dpdGNoRmFjdG9yeSxcbiAgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeVxuXTtcblxuZnVuY3Rpb24gVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeShcbiAgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvcjogUmV0dXJuVHlwZTx0eXBlb2YgQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvckZhY3Rvcnk+LFxuICBMYXllckNvbG9yUmFuZ2VTZWxlY3RvcjogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb2xvclJhbmdlU2VsZWN0b3JGYWN0b3J5PixcbiAgTGF5ZXJDb2xvclNlbGVjdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBMYXllckNvbG9yU2VsZWN0b3JGYWN0b3J5PixcbiAgTGF5ZXJDb25maWdHcm91cDogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb25maWdHcm91cEZhY3Rvcnk+LFxuICBWaXNDb25maWdTbGlkZXI6IFJldHVyblR5cGU8dHlwZW9mIFZpc0NvbmZpZ1NsaWRlckZhY3Rvcnk+LFxuICBWaXNDb25maWdTd2l0Y2g6IFJldHVyblR5cGU8dHlwZW9mIFZpc0NvbmZpZ1N3aXRjaEZhY3Rvcnk+XG4pOiBSZWFjdC5GQzxQcm9wcz4ge1xuICBjb25zdCBWZWN0b3JUaWxlTGF5ZXJDb25maWd1cmF0b3IgPSAoe1xuICAgIGxheWVyLFxuICAgIHZpc0NvbmZpZ3VyYXRvclByb3BzLFxuICAgIGxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzLFxuICAgIGxheWVyQ29uZmlndXJhdG9yUHJvcHNcbiAgfTogUHJvcHMpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICAgICB7LyogRmlsbCBDb2xvciAqL31cbiAgICAgICAgPExheWVyQ29uZmlnR3JvdXAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSBsYWJlbD1cImxheWVyLmZpbGxDb2xvclwiPlxuICAgICAgICAgIHtsYXllckNoYW5uZWxDb25maWdQcm9wcy5maWVsZHMgPyAoXG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmNvbG9yfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7bGF5ZXIuY29uZmlnLmNvbG9yRmllbGQgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8VmlzQ29uZmlnU3dpdGNoXG4gICAgICAgICAgICAgICAgey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfVxuICAgICAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5keW5hbWljQ29sb3J9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5jb2xvcn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8TGF5ZXJDb2xvclNlbGVjdG9yIHsuLi5sYXllckNvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlciB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Mub3BhY2l0eX0gey4uLnZpc0NvbmZpZ3VyYXRvclByb3BzfSAvPlxuICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgey8qIFN0cm9rZSBjb2xvciAqL31cbiAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc3Ryb2tlZH1cbiAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VDb2xvclwiXG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICBjaGFubmVsPXtsYXllci52aXN1YWxDaGFubmVscy5zdHJva2VDb2xvcn1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtsYXllci5jb25maWcuc3Ryb2tlQ29sb3JGaWVsZCA/IChcbiAgICAgICAgICAgIDxMYXllckNvbG9yUmFuZ2VTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHByb3BlcnR5PVwic3Ryb2tlQ29sb3JSYW5nZVwiXG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnN0cm9rZUNvbG9yfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPExheWVyQ29sb3JTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I9e2xheWVyLmNvbmZpZy52aXNDb25maWcuc3Ryb2tlQ29sb3J9XG4gICAgICAgICAgICAgIHByb3BlcnR5PVwic3Ryb2tlQ29sb3JcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXIgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZU9wYWNpdHl9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG5cbiAgICAgICAgey8qIFN0cm9rZSBXaWR0aCAqL31cbiAgICAgICAgPExheWVyQ29uZmlnR3JvdXBcbiAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZWR9XG4gICAgICAgICAgbGFiZWw9XCJsYXllci5zdHJva2VXaWR0aFwiXG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIHtsYXllci5jb25maWcuc2l6ZUZpZWxkID8gKFxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3Muc2l6ZVJhbmdlfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgICAgey4uLmxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLnN0cm9rZVdpZHRofVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnNpemV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICB7LyogRWxldmF0aW9uICovfVxuICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MuZW5hYmxlM2R9XG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIDxWaXNDb25maWdTbGlkZXJcbiAgICAgICAgICAgIHsuLi5sYXllci52aXNDb25maWdTZXR0aW5ncy5lbGV2YXRpb25TY2FsZX1cbiAgICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtsYXllckNoYW5uZWxDb25maWdQcm9wcy5maWVsZHMgPyAoXG4gICAgICAgICAgICA8Q2hhbm5lbEJ5VmFsdWVTZWxlY3RvclxuICAgICAgICAgICAgICB7Li4ubGF5ZXJDaGFubmVsQ29uZmlnUHJvcHN9XG4gICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLmhlaWdodH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDwvTGF5ZXJDb25maWdHcm91cD5cblxuICAgICAgICB7LyogUmFkaXVzICovfVxuICAgICAgICA8TGF5ZXJDb25maWdHcm91cFxuICAgICAgICAgIHsuLi52aXNDb25maWd1cmF0b3JQcm9wc31cbiAgICAgICAgICBsYWJlbD17J2xheWVyLnJhZGl1cyd9XG4gICAgICAgICAgZGVzY3JpcHRpb249XCJQb2ludCByYWRpdXMgaW4gcGl4ZWxzIG9yIG1ldGVyc1wiXG4gICAgICAgICAgY29sbGFwc2libGVcbiAgICAgICAgPlxuICAgICAgICAgIHtsYXllci5jb25maWcudmlzQ29uZmlnLnJhZGl1c0J5Wm9vbT8uZW5hYmxlZCAmJiB2aXNDb25maWd1cmF0b3JQcm9wcy5vbkNoYW5nZSA/IChcbiAgICAgICAgICAgIDxWaXNDb25maWdCeVpvb21JbnB1dFxuICAgICAgICAgICAgICBjb25maWc9e2xheWVyLmNvbmZpZy52aXNDb25maWcucmFkaXVzQnlab29tfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17dmlzQ29uZmlndXJhdG9yUHJvcHMub25DaGFuZ2V9XG4gICAgICAgICAgICAgIGxhYmVsPVwiUmFkaXVzXCJcbiAgICAgICAgICAgICAgcHJvcGVydHk9XCJyYWRpdXNCeVpvb21cIlxuICAgICAgICAgICAgICB1bml0PVwicHhcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFZpc0NvbmZpZ1NsaWRlclxuICAgICAgICAgICAgICB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzfVxuICAgICAgICAgICAgICB7Li4udmlzQ29uZmlndXJhdG9yUHJvcHN9XG4gICAgICAgICAgICAgIGxhYmVsPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICAgIHtsYXllckNoYW5uZWxDb25maWdQcm9wcy5maWVsZHMgPyAoXG4gICAgICAgICAgICAgIDxDaGFubmVsQnlWYWx1ZVNlbGVjdG9yXG4gICAgICAgICAgICAgICAgey4uLmxheWVyQ2hhbm5lbENvbmZpZ1Byb3BzfVxuICAgICAgICAgICAgICAgIGNoYW5uZWw9e2xheWVyLnZpc3VhbENoYW5uZWxzLnJhZGl1c31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPFZpc0NvbmZpZ1N3aXRjaCB7Li4ubGF5ZXIudmlzQ29uZmlnU2V0dGluZ3MucmFkaXVzVW5pdHN9IHsuLi52aXNDb25maWd1cmF0b3JQcm9wc30gLz5cbiAgICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgICA8L1N0eWxlZExheWVyQ29uZmlndXJhdG9yPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgQ29ubmVjdGVkVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yID0gY29ubmVjdChzdGF0ZSA9PiBzdGF0ZSkoVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yKTtcbiAgcmV0dXJuIENvbm5lY3RlZFZlY3RvclRpbGVMYXllckNvbmZpZ3VyYXRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmVjdG9yVGlsZUxheWVyQ29uZmlndXJhdG9yRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGlCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFLQSxJQUFBRyxtQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksdUJB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