kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
144 lines (143 loc) • 28.7 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.ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleContent = void 0;
exports.LayerConfigGroupLabelFactory = LayerConfigGroupLabelFactory;
exports["default"] = exports.StyledLayerConfigGroupAction = exports.StyledLayerConfigGroup = exports.StyledConfigGroupHeader = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _classnames = _interopRequireDefault(require("classnames"));
var _reactIntl = require("react-intl");
var _switch = _interopRequireDefault(require("../../common/switch"));
var _infoHelper = _interopRequireDefault(require("../../common/info-helper"));
var _icons = require("../../common/icons");
var _styledComponents2 = require("../../common/styled-components");
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7; // 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 StyledLayerConfigGroupAction = exports.StyledLayerConfigGroupAction = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n"])), function (props) {
return props.theme.textColor;
});
var ConfigGroupCollapsibleContent = exports.ConfigGroupCollapsibleContent = _styledComponents["default"].div.attrs({
className: 'layer-config-group__content__collapsible'
})(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n transition: max-height 0.3s ease-out;\n height: max-content;\n max-height: 1200px;\n overflow: auto;\n"])));
var ConfigGroupCollapsibleHeader = exports.ConfigGroupCollapsibleHeader = _styledComponents["default"].div.attrs({
className: 'layer-config-group__header__collapsible'
})(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n overflow: visible;\n overflow: hidden;\n max-height: 0;\n"])));
var StyledLayerConfigGroup = exports.StyledLayerConfigGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: ", "px;\n margin-bottom: ", "px;\n\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n &.collapsed {\n .layer-config-group__header__collapsible {\n overflow: visible;\n max-height: 600px;\n }\n .layer-config-group__content {\n .layer-config-group__content__collapsible {\n overflow: hidden;\n max-height: 0;\n }\n }\n }\n"])), function (props) {
return props.theme.layerConfigGroupPaddingLeft;
}, function (props) {
return props.theme.layerConfigGroupMarginBottom;
});
var StyledConfigGroupHeader = exports.StyledConfigGroupHeader = _styledComponents["default"].div.withConfig({
shouldForwardProp: _styledComponents2.shouldForwardProp
}).attrs({
className: 'layer-config-group__header'
})(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n cursor: default;\n\n &:hover {\n ", "\n .layer-config-group__label {\n color: ", ";\n }\n\n .layer-config-group__action {\n color: ", ";\n }\n }\n"])), function (props) {
return props.collapsible && 'cursor: pointer;';
}, function (props) {
return props.theme.textColorHl;
}, function (props) {
return props.theme.textColorHl;
});
var ConfigGroupContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n * {\n pointer-events: none;\n }\n }\n"])));
LayerConfigGroupLabelFactory.deps = [_infoHelper["default"]];
function LayerConfigGroupLabelFactory(InfoHelper) {
var StyledLayerConfigGroupLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n border-left: ", " solid\n ", ";\n line-height: 12px;\n margin-left: ", ";\n padding-left: ", ";\n\n display: flex;\n align-items: center;\n\n span {\n color: ", ";\n font-weight: 500;\n letter-spacing: 0.2px;\n text-transform: capitalize;\n margin-left: ", ";\n font-size: ", ";\n }\n "])), function (props) {
return props.theme.layerConfigGroupLabelBorderLeft;
}, function (props) {
return props.theme.labelColor;
}, function (props) {
return props.theme.layerConfigGroupLabelMargin;
}, function (props) {
return props.theme.layerConfigGroupLabelPadding;
}, function (props) {
return props.theme.textColor;
}, function (props) {
return props.theme.layerConfigGroupLabelLabelMargin;
}, function (props) {
return props.theme.layerConfigGroupLabelLabelFontSize;
});
var LayerConfigGroupLabel = function LayerConfigGroupLabel(_ref) {
var label = _ref.label,
description = _ref.description;
return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupLabel, {
className: "layer-config-group__label"
}, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_reactIntl.FormattedMessage, {
id: label || 'misc.empty',
defaultMessage: label
})), description && /*#__PURE__*/_react["default"].createElement(InfoHelper, {
description: description,
id: label
}));
};
return LayerConfigGroupLabel;
}
LayerConfigGroupFactory.deps = [LayerConfigGroupLabelFactory];
function nop() {
return;
}
function LayerConfigGroupFactory(LayerConfigGroupLabel) {
var LayerConfigGroup = function LayerConfigGroup(_ref2) {
var label = _ref2.label,
children = _ref2.children,
property = _ref2.property,
layer = _ref2.layer,
_ref2$onChange = _ref2.onChange,
_onChange2 = _ref2$onChange === void 0 ? nop : _ref2$onChange,
_ref2$collapsible = _ref2.collapsible,
collapsible = _ref2$collapsible === void 0 ? false : _ref2$collapsible,
_ref2$description = _ref2.description,
description = _ref2$description === void 0 ? '' : _ref2$description,
_ref2$disabled = _ref2.disabled,
disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
_ref2$expanded = _ref2.expanded,
expanded = _ref2$expanded === void 0 ? false : _ref2$expanded,
_ref2$IconComponent = _ref2.IconComponent,
IconComponent = _ref2$IconComponent === void 0 ? _icons.VertThreeDots : _ref2$IconComponent;
var _useState = (0, _react.useState)(!expanded),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
collapsed = _useState2[0],
toggleCollapsed = _useState2[1];
var onToggleCollapsed = (0, _react.useCallback)(function () {
collapsible && toggleCollapsed(!collapsed);
}, [collapsed, toggleCollapsed, collapsible]);
return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroup, {
className: (0, _classnames["default"])('layer-config-group', {
collapsed: collapsed,
disabled: disabled
})
}, /*#__PURE__*/_react["default"].createElement(StyledConfigGroupHeader, {
onClick: onToggleCollapsed,
collapsible: collapsible
}, /*#__PURE__*/_react["default"].createElement(LayerConfigGroupLabel, {
label: label,
description: description,
collapsed: collapsed
}), /*#__PURE__*/_react["default"].createElement(StyledLayerConfigGroupAction, {
className: "layer-config-group__action"
}, property ? /*#__PURE__*/_react["default"].createElement(_switch["default"], {
checked: layer === null || layer === void 0 ? void 0 : layer.config.visConfig[property],
id: "".concat(layer === null || layer === void 0 ? void 0 : layer.id, "-").concat(property),
onChange: function onChange() {
return _onChange2 === null || _onChange2 === void 0 ? void 0 : _onChange2((0, _defineProperty2["default"])({}, property, !(layer !== null && layer !== void 0 && layer.config.visConfig[property])));
}
}) : null, collapsible ? /*#__PURE__*/_react["default"].createElement(IconComponent, {
height: "18px"
}) : null)), /*#__PURE__*/_react["default"].createElement(ConfigGroupContent, {
className: (0, _classnames["default"])('layer-config-group__content', {
disabled: property && !(layer !== null && layer !== void 0 && layer.config.visConfig[property])
})
}, children));
};
return LayerConfigGroup;
}
var _default = exports["default"] = LayerConfigGroupFactory;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY2xhc3NuYW1lcyIsIl9yZWFjdEludGwiLCJfc3dpdGNoIiwiX2luZm9IZWxwZXIiLCJfaWNvbnMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfdGVtcGxhdGVPYmplY3Q1IiwiX3RlbXBsYXRlT2JqZWN0NiIsIl90ZW1wbGF0ZU9iamVjdDciLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIiwiZXhwb3J0cyIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsInRleHRDb2xvciIsIkNvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJDb25maWdHcm91cENvbGxhcHNpYmxlSGVhZGVyIiwiU3R5bGVkTGF5ZXJDb25maWdHcm91cCIsImxheWVyQ29uZmlnR3JvdXBQYWRkaW5nTGVmdCIsImxheWVyQ29uZmlnR3JvdXBNYXJnaW5Cb3R0b20iLCJTdHlsZWRDb25maWdHcm91cEhlYWRlciIsIndpdGhDb25maWciLCJzaG91bGRGb3J3YXJkUHJvcCIsImNvbGxhcHNpYmxlIiwidGV4dENvbG9ySGwiLCJDb25maWdHcm91cENvbnRlbnQiLCJMYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5IiwiZGVwcyIsIkluZm9IZWxwZXJGYWN0b3J5IiwiSW5mb0hlbHBlciIsIlN0eWxlZExheWVyQ29uZmlnR3JvdXBMYWJlbCIsImxheWVyQ29uZmlnR3JvdXBMYWJlbEJvcmRlckxlZnQiLCJsYWJlbENvbG9yIiwibGF5ZXJDb25maWdHcm91cExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsUGFkZGluZyIsImxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2luIiwibGF5ZXJDb25maWdHcm91cExhYmVsTGFiZWxGb250U2l6ZSIsIkxheWVyQ29uZmlnR3JvdXBMYWJlbCIsIl9yZWYiLCJsYWJlbCIsImRlc2NyaXB0aW9uIiwiY3JlYXRlRWxlbWVudCIsIkZvcm1hdHRlZE1lc3NhZ2UiLCJpZCIsImRlZmF1bHRNZXNzYWdlIiwiTGF5ZXJDb25maWdHcm91cEZhY3RvcnkiLCJub3AiLCJMYXllckNvbmZpZ0dyb3VwIiwiX3JlZjIiLCJjaGlsZHJlbiIsInByb3BlcnR5IiwibGF5ZXIiLCJfcmVmMiRvbkNoYW5nZSIsIm9uQ2hhbmdlIiwiX3JlZjIkY29sbGFwc2libGUiLCJfcmVmMiRkZXNjcmlwdGlvbiIsIl9yZWYyJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcmVmMiRleHBhbmRlZCIsImV4cGFuZGVkIiwiX3JlZjIkSWNvbkNvbXBvbmVudCIsIkljb25Db21wb25lbnQiLCJWZXJ0VGhyZWVEb3RzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiY29sbGFwc2VkIiwidG9nZ2xlQ29sbGFwc2VkIiwib25Ub2dnbGVDb2xsYXBzZWQiLCJ1c2VDYWxsYmFjayIsImNsYXNzbmFtZXMiLCJvbkNsaWNrIiwiY2hlY2tlZCIsImNvbmZpZyIsInZpc0NvbmZpZyIsImNvbmNhdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJoZWlnaHQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLWNvbmZpZy1ncm91cC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCBTd2l0Y2ggZnJvbSAnLi4vLi4vY29tbW9uL3N3aXRjaCc7XG5pbXBvcnQgSW5mb0hlbHBlckZhY3RvcnkgZnJvbSAnLi4vLi4vY29tbW9uL2luZm8taGVscGVyJztcbmltcG9ydCB7VmVydFRocmVlRG90c30gZnJvbSAnLi4vLi4vY29tbW9uL2ljb25zJztcbmltcG9ydCB7c2hvdWxkRm9yd2FyZFByb3B9IGZyb20gJy4uLy4uL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0xheWVyfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge0xheWVyVmlzQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJDb25maWdHcm91cExhYmVsUHJvcHMgPSB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY29sbGFwc2VkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIExheWVyQ29uZmlnR3JvdXBQcm9wcyA9IHtcbiAgbGF5ZXI/OiBMYXllcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgcHJvcGVydHk/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb2xsYXBzaWJsZT86IGJvb2xlYW47XG4gIGV4cGFuZGVkPzogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBvbkNoYW5nZT86IChuZXdWaXNDb25maWc6IFBhcnRpYWw8TGF5ZXJWaXNDb25maWc+KSA9PiB2b2lkO1xuICBJY29uQ29tcG9uZW50PzogUmVhY3QuRWxlbWVudFR5cGU7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXBBY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ0dyb3VwQ29sbGFwc2libGVDb250ZW50ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUnXG59KWBcbiAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjNzIGVhc2Utb3V0O1xuICBoZWlnaHQ6IG1heC1jb250ZW50O1xuICBtYXgtaGVpZ2h0OiAxMjAwcHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuYDtcblxuZXhwb3J0IGNvbnN0IENvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXIgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnbGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJfX2NvbGxhcHNpYmxlJ1xufSlgXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBtYXgtaGVpZ2h0OiAwO1xuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZExheWVyQ29uZmlnR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nLWxlZnQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGF5ZXJDb25maWdHcm91cFBhZGRpbmdMZWZ0fXB4O1xuICBtYXJnaW4tYm90dG9tOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBNYXJnaW5Cb3R0b219cHg7XG5cbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gICYuY29sbGFwc2VkIHtcbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19oZWFkZXJfX2NvbGxhcHNpYmxlIHtcbiAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgbWF4LWhlaWdodDogNjAwcHg7XG4gICAgfVxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQge1xuICAgICAgLmxheWVyLWNvbmZpZy1ncm91cF9fY29udGVudF9fY29sbGFwc2libGUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuaW50ZXJmYWNlIFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyUHJvcHMge1xuICBjb2xsYXBzaWJsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDb25maWdHcm91cEhlYWRlciA9IHN0eWxlZC5kaXYud2l0aENvbmZpZyh7c2hvdWxkRm9yd2FyZFByb3B9KS5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ2xheWVyLWNvbmZpZy1ncm91cF9faGVhZGVyJ1xufSk8U3R5bGVkQ29uZmlnR3JvdXBIZWFkZXJQcm9wcz5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xuXG4gICY6aG92ZXIge1xuICAgICR7cHJvcHMgPT4gcHJvcHMuY29sbGFwc2libGUgJiYgJ2N1cnNvcjogcG9pbnRlcjsnfVxuICAgIC5sYXllci1jb25maWctZ3JvdXBfX2xhYmVsIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgICB9XG5cbiAgICAubGF5ZXItY29uZmlnLWdyb3VwX19hY3Rpb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9ySGx9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgQ29uZmlnR3JvdXBDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJi5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICoge1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuICB9XG5gO1xuXG5MYXllckNvbmZpZ0dyb3VwTGFiZWxGYWN0b3J5LmRlcHMgPSBbSW5mb0hlbHBlckZhY3RvcnldO1xuXG5leHBvcnQgZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeShJbmZvSGVscGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBJbmZvSGVscGVyRmFjdG9yeT4pIHtcbiAgY29uc3QgU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsID0gc3R5bGVkLmRpdmBcbiAgICBib3JkZXItbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxCb3JkZXJMZWZ0fSBzb2xpZFxuICAgICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYWJlbENvbG9yfTtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBtYXJnaW4tbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxNYXJnaW59O1xuICAgIHBhZGRpbmctbGVmdDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxQYWRkaW5nfTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIHNwYW4ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxheWVyQ29uZmlnR3JvdXBMYWJlbExhYmVsTWFyZ2lufTtcbiAgICAgIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5sYXllckNvbmZpZ0dyb3VwTGFiZWxMYWJlbEZvbnRTaXplfTtcbiAgICB9XG4gIGA7XG5cbiAgY29uc3QgTGF5ZXJDb25maWdHcm91cExhYmVsOiBSZWFjdC5GQzxMYXllckNvbmZpZ0dyb3VwTGFiZWxQcm9wcz4gPSAoe2xhYmVsLCBkZXNjcmlwdGlvbn0pID0+IChcbiAgICA8U3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fbGFiZWxcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17bGFiZWwgfHwgJ21pc2MuZW1wdHknfSBkZWZhdWx0TWVzc2FnZT17bGFiZWx9IC8+XG4gICAgICA8L3NwYW4+XG4gICAgICB7ZGVzY3JpcHRpb24gJiYgPEluZm9IZWxwZXIgZGVzY3JpcHRpb249e2Rlc2NyaXB0aW9ufSBpZD17bGFiZWx9IC8+fVxuICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cExhYmVsPlxuICApO1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwTGFiZWw7XG59XG5cbkxheWVyQ29uZmlnR3JvdXBGYWN0b3J5LmRlcHMgPSBbTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeV07XG5cbmZ1bmN0aW9uIG5vcCgpIHtcbiAgcmV0dXJuO1xufVxuZnVuY3Rpb24gTGF5ZXJDb25maWdHcm91cEZhY3RvcnkoXG4gIExheWVyQ29uZmlnR3JvdXBMYWJlbDogUmV0dXJuVHlwZTx0eXBlb2YgTGF5ZXJDb25maWdHcm91cExhYmVsRmFjdG9yeT5cbikge1xuICBjb25zdCBMYXllckNvbmZpZ0dyb3VwOiBSZWFjdC5GQzxMYXllckNvbmZpZ0dyb3VwUHJvcHM+ID0gKHtcbiAgICBsYWJlbCxcbiAgICBjaGlsZHJlbixcbiAgICBwcm9wZXJ0eSxcbiAgICBsYXllcixcbiAgICBvbkNoYW5nZSA9IG5vcCxcbiAgICBjb2xsYXBzaWJsZSA9IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICBleHBhbmRlZCA9IGZhbHNlLFxuICAgIEljb25Db21wb25lbnQgPSBWZXJ0VGhyZWVEb3RzXG4gIH0pID0+IHtcbiAgICBjb25zdCBbY29sbGFwc2VkLCB0b2dnbGVDb2xsYXBzZWRdID0gdXNlU3RhdGUoIWV4cGFuZGVkKTtcbiAgICBjb25zdCBvblRvZ2dsZUNvbGxhcHNlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGNvbGxhcHNpYmxlICYmIHRvZ2dsZUNvbGxhcHNlZCghY29sbGFwc2VkKTtcbiAgICB9LCBbY29sbGFwc2VkLCB0b2dnbGVDb2xsYXBzZWQsIGNvbGxhcHNpYmxlXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZExheWVyQ29uZmlnR3JvdXAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXAnLCB7Y29sbGFwc2VkLCBkaXNhYmxlZH0pfT5cbiAgICAgICAgPFN0eWxlZENvbmZpZ0dyb3VwSGVhZGVyIG9uQ2xpY2s9e29uVG9nZ2xlQ29sbGFwc2VkfSBjb2xsYXBzaWJsZT17Y29sbGFwc2libGV9PlxuICAgICAgICAgIDxMYXllckNvbmZpZ0dyb3VwTGFiZWwgbGFiZWw9e2xhYmVsfSBkZXNjcmlwdGlvbj17ZGVzY3JpcHRpb259IGNvbGxhcHNlZD17Y29sbGFwc2VkfSAvPlxuICAgICAgICAgIDxTdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZy1ncm91cF9fYWN0aW9uXCI+XG4gICAgICAgICAgICB7cHJvcGVydHkgPyAoXG4gICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICBjaGVja2VkPXtsYXllcj8uY29uZmlnLnZpc0NvbmZpZ1twcm9wZXJ0eV19XG4gICAgICAgICAgICAgICAgaWQ9e2Ake2xheWVyPy5pZH0tJHtwcm9wZXJ0eX1gfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkNoYW5nZT8uKHtbcHJvcGVydHldOiAhbGF5ZXI/LmNvbmZpZy52aXNDb25maWdbcHJvcGVydHldfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjb2xsYXBzaWJsZSA/IDxJY29uQ29tcG9uZW50IGhlaWdodD1cIjE4cHhcIiAvPiA6IG51bGx9XG4gICAgICAgICAgPC9TdHlsZWRMYXllckNvbmZpZ0dyb3VwQWN0aW9uPlxuICAgICAgICA8L1N0eWxlZENvbmZpZ0dyb3VwSGVhZGVyPlxuICAgICAgICA8Q29uZmlnR3JvdXBDb250ZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdsYXllci1jb25maWctZ3JvdXBfX2NvbnRlbnQnLCB7XG4gICAgICAgICAgICBkaXNhYmxlZDogcHJvcGVydHkgJiYgIWxheWVyPy5jb25maWcudmlzQ29uZmlnW3Byb3BlcnR5XVxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0NvbmZpZ0dyb3VwQ29udGVudD5cbiAgICAgIDwvU3R5bGVkTGF5ZXJDb25maWdHcm91cD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBMYXllckNvbmZpZ0dyb3VwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbmZpZ0dyb3VwRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEs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