kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
158 lines (157 loc) • 28.6 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.ChickletTag = exports.ChickletButton = void 0;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react"));
var _styledComponents = _interopRequireDefault(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/styled-components"));
var _core = require("@dnd-kit/core");
var _sortable = require("@dnd-kit/sortable");
var _modifiers = require("@dnd-kit/modifiers");
var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/localization/src");
var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/common-utils/src");
var _delete = _interopRequireDefault(require("../icons/delete"));
var _styledComponents2 = require("../styled-components");
var _templateObject, _templateObject2, _templateObject3; // 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 ChickletButton = exports.ChickletButton = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n background: ", ";\n border-radius: 1px;\n color: ", ";\n font-size: 11px;\n line-height: 20px;\n margin: 4px 10px 4px 3px;\n padding: 2px 6px;\n display: flex;\n align-items: center;\n max-width: calc(100% - 8px);\n\n &:hover {\n color: ", ";\n }\n"])), function (props) {
return props.inputTheme === 'light' ? props.theme.chickletBgdLT : props.theme.chickletBgd;
}, function (props) {
return props.inputTheme === 'light' ? props.theme.textColorLT : props.theme.textColor;
}, function (props) {
return props.inputTheme === 'light' ? props.theme.textColorHlLT : props.theme.textColorHl;
});
var DND_MODIFIERS = [_modifiers.restrictToParentElement];
var ChickletTag = exports.ChickletTag = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: 10px;\n text-overflow: ellipsis;\n width: 100%;\n overflow: hidden;\n\n &:hover {\n overflow: visible;\n }\n"])));
var Chicklet = function Chicklet(_ref) {
var disabled = _ref.disabled,
name = _ref.name,
remove = _ref.remove,
inputTheme = _ref.inputTheme;
return /*#__PURE__*/_react["default"].createElement(ChickletButton, {
inputTheme: inputTheme
}, /*#__PURE__*/_react["default"].createElement(ChickletTag, null, name), /*#__PURE__*/_react["default"].createElement(_delete["default"], {
height: "16px",
onClick: disabled ? undefined : remove
}));
};
var ChickletedInputContainer = _styledComponents["default"].div.withConfig({
shouldForwardProp: _styledComponents2.shouldForwardProp
})(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n\n color: ", ";\n overflow: hidden;\n"])), function (props) {
return props.inputTheme === 'secondary' ? props.theme.secondaryChickletedInput : props.inputTheme === 'light' ? props.theme.chickletedInputLT : props.theme.chickletedInput;
}, function (props) {
return props.hasPlaceholder ? props.theme.selectColorPlaceHolder : props.theme.selectColor;
});
var ChickletedItem = function ChickletedItem(_ref2) {
var item = _ref2.item,
removeItem = _ref2.removeItem,
displayOption = _ref2.displayOption,
CustomChickletComponent = _ref2.CustomChickletComponent,
inputTheme = _ref2.inputTheme,
disabled = _ref2.disabled,
itemId = _ref2.itemId;
var _useSortable = (0, _sortable.useSortable)({
id: itemId
}),
attributes = _useSortable.attributes,
listeners = _useSortable.listeners,
setNodeRef = _useSortable.setNodeRef,
transform = _useSortable.transform,
transition = _useSortable.transition,
isDragging = _useSortable.isDragging;
var chickletProps = (0, _react.useMemo)(function () {
return {
inputTheme: inputTheme,
disabled: disabled,
name: displayOption(item),
displayOption: displayOption,
item: item,
attributes: attributes,
listeners: listeners,
setNodeRef: setNodeRef,
transform: transform,
transition: transition,
isDragging: isDragging,
remove: function remove(e) {
return removeItem(item, e);
}
};
}, [item, removeItem, displayOption, inputTheme, disabled, attributes, listeners, setNodeRef, transform, transition, isDragging]);
return CustomChickletComponent ? /*#__PURE__*/_react["default"].createElement(CustomChickletComponent, chickletProps) : /*#__PURE__*/_react["default"].createElement(Chicklet, chickletProps);
};
var ChickletedInput = function ChickletedInput(_ref3) {
var disabled = _ref3.disabled,
onClick = _ref3.onClick,
className = _ref3.className,
_ref3$selectedItems = _ref3.selectedItems,
selectedItems = _ref3$selectedItems === void 0 ? [] : _ref3$selectedItems,
_ref3$placeholder = _ref3.placeholder,
placeholder = _ref3$placeholder === void 0 ? '' : _ref3$placeholder,
removeItem = _ref3.removeItem,
_ref3$reorderItems = _ref3.reorderItems,
reorderItems = _ref3$reorderItems === void 0 ? function (d) {
return d;
} : _ref3$reorderItems,
_ref3$displayOption = _ref3.displayOption,
displayOption = _ref3$displayOption === void 0 ? function (d) {
return String(d);
} : _ref3$displayOption,
inputTheme = _ref3.inputTheme,
CustomChickletComponent = _ref3.CustomChickletComponent;
var selectedItemIds = (0, _react.useMemo)(function () {
return selectedItems.map(function (item) {
return displayOption(item);
});
}, [displayOption, selectedItems]);
var handleDragEnd = (0, _react.useCallback)(function (_ref4) {
var active = _ref4.active,
over = _ref4.over;
if (!over) return;
if (active.id !== over.id) {
var oldIndex = selectedItemIds.findIndex(function (itemId) {
return itemId === active.id;
});
var newIndex = selectedItemIds.findIndex(function (itemId) {
return itemId === over.id;
});
reorderItems((0, _src2.arrayMove)(selectedItems, oldIndex, newIndex));
}
}, [selectedItemIds, selectedItems, reorderItems]);
return /*#__PURE__*/_react["default"].createElement(ChickletedInputContainer, {
className: "".concat(className, " chickleted-input"),
onClick: onClick,
inputTheme: inputTheme,
hasPlaceholder: !selectedItems || !selectedItems.length
}, /*#__PURE__*/_react["default"].createElement(_core.DndContext, {
onDragEnd: handleDragEnd,
modifiers: DND_MODIFIERS,
collisionDetection: _core.pointerWithin,
autoScroll: false
}, /*#__PURE__*/_react["default"].createElement(_sortable.SortableContext, {
items: selectedItemIds
}, selectedItems.length > 0 ? selectedItems.map(function (item, index) {
return /*#__PURE__*/_react["default"].createElement(ChickletedItem, {
item: item,
itemId: displayOption(item),
removeItem: removeItem,
displayOption: displayOption,
CustomChickletComponent: CustomChickletComponent,
disabled: disabled,
inputTheme: inputTheme,
key: "".concat(displayOption(item), "_").concat(index)
});
}) : /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(className, " chickleted-input__placeholder")
}, /*#__PURE__*/_react["default"].createElement(_src.FormattedMessage, {
id: placeholder || 'placeholder.enterValue'
}))), /*#__PURE__*/_react["default"].createElement(_core.DragOverlay, {
dropAnimation: null
})));
};
var _default = exports["default"] = ChickletedInput;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29yZSIsIl9zb3J0YWJsZSIsIl9tb2RpZmllcnMiLCJfc3JjIiwiX3NyYzIiLCJfZGVsZXRlIiwiX3N0eWxlZENvbXBvbmVudHMyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJDaGlja2xldEJ1dHRvbiIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwiY2hpY2tsZXRCZ2RMVCIsImNoaWNrbGV0QmdkIiwidGV4dENvbG9yTFQiLCJ0ZXh0Q29sb3IiLCJ0ZXh0Q29sb3JIbExUIiwidGV4dENvbG9ySGwiLCJETkRfTU9ESUZJRVJTIiwicmVzdHJpY3RUb1BhcmVudEVsZW1lbnQiLCJDaGlja2xldFRhZyIsInNwYW4iLCJDaGlja2xldCIsIl9yZWYiLCJkaXNhYmxlZCIsIm5hbWUiLCJyZW1vdmUiLCJjcmVhdGVFbGVtZW50IiwiaGVpZ2h0Iiwib25DbGljayIsInVuZGVmaW5lZCIsIkNoaWNrbGV0ZWRJbnB1dENvbnRhaW5lciIsIndpdGhDb25maWciLCJzaG91bGRGb3J3YXJkUHJvcCIsInNlY29uZGFyeUNoaWNrbGV0ZWRJbnB1dCIsImNoaWNrbGV0ZWRJbnB1dExUIiwiY2hpY2tsZXRlZElucHV0IiwiaGFzUGxhY2Vob2xkZXIiLCJzZWxlY3RDb2xvclBsYWNlSG9sZGVyIiwic2VsZWN0Q29sb3IiLCJDaGlja2xldGVkSXRlbSIsIl9yZWYyIiwiaXRlbSIsInJlbW92ZUl0ZW0iLCJkaXNwbGF5T3B0aW9uIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJpdGVtSWQiLCJfdXNlU29ydGFibGUiLCJ1c2VTb3J0YWJsZSIsImlkIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsInNldE5vZGVSZWYiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaXNEcmFnZ2luZyIsImNoaWNrbGV0UHJvcHMiLCJ1c2VNZW1vIiwiQ2hpY2tsZXRlZElucHV0IiwiX3JlZjMiLCJjbGFzc05hbWUiLCJfcmVmMyRzZWxlY3RlZEl0ZW1zIiwic2VsZWN0ZWRJdGVtcyIsIl9yZWYzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcmVmMyRyZW9yZGVySXRlbXMiLCJyZW9yZGVySXRlbXMiLCJkIiwiX3JlZjMkZGlzcGxheU9wdGlvbiIsIlN0cmluZyIsInNlbGVjdGVkSXRlbUlkcyIsIm1hcCIsImhhbmRsZURyYWdFbmQiLCJ1c2VDYWxsYmFjayIsIl9yZWY0IiwiYWN0aXZlIiwib3ZlciIsIm9sZEluZGV4IiwiZmluZEluZGV4IiwibmV3SW5kZXgiLCJhcnJheU1vdmUiLCJjb25jYXQiLCJsZW5ndGgiLCJEbmRDb250ZXh0Iiwib25EcmFnRW5kIiwibW9kaWZpZXJzIiwiY29sbGlzaW9uRGV0ZWN0aW9uIiwicG9pbnRlcldpdGhpbiIsImF1dG9TY3JvbGwiLCJTb3J0YWJsZUNvbnRleHQiLCJpdGVtcyIsImluZGV4Iiwia2V5IiwiRm9ybWF0dGVkTWVzc2FnZSIsIkRyYWdPdmVybGF5IiwiZHJvcEFuaW1hdGlvbiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc3JjL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2NoaWNrbGV0ZWQtaW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge01vdXNlRXZlbnRIYW5kbGVyLCBSZWFjdE5vZGUsIHVzZU1lbW8sIHVzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBzdHlsZWQsIHtJU3R5bGVkQ29tcG9uZW50fSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0RuZENvbnRleHQsIERyYWdPdmVybGF5LCBwb2ludGVyV2l0aGlufSBmcm9tICdAZG5kLWtpdC9jb3JlJztcbmltcG9ydCB7U29ydGFibGVDb250ZXh0LCB1c2VTb3J0YWJsZX0gZnJvbSAnQGRuZC1raXQvc29ydGFibGUnO1xuaW1wb3J0IHtyZXN0cmljdFRvUGFyZW50RWxlbWVudH0gZnJvbSAnQGRuZC1raXQvbW9kaWZpZXJzJztcblxuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5pbXBvcnQge2FycmF5TW92ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuXG5pbXBvcnQgRGVsZXRlIGZyb20gJy4uL2ljb25zL2RlbGV0ZSc7XG5pbXBvcnQge0Jhc2VDb21wb25lbnRQcm9wc30gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtzaG91bGRGb3J3YXJkUHJvcH0gZnJvbSAnLi4vc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5leHBvcnQgdHlwZSBDaGlja2xldEJ1dHRvblByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICByZWY/OiAobm9kZTogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGNvbnN0IENoaWNrbGV0QnV0dG9uOiBJU3R5bGVkQ29tcG9uZW50PFxuICAnd2ViJyxcbiAgQ2hpY2tsZXRCdXR0b25Qcm9wc1xuPiA9IHN0eWxlZC5kaXY8Q2hpY2tsZXRCdXR0b25Qcm9wcz5gXG4gIGJhY2tncm91bmQ6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnID8gcHJvcHMudGhlbWUuY2hpY2tsZXRCZ2RMVCA6IHByb3BzLnRoZW1lLmNoaWNrbGV0QmdkfTtcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xuICBjb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCcgPyBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVCA6IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIG1hcmdpbjogNHB4IDEwcHggNHB4IDNweDtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA4cHgpO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAke3Byb3BzID0+XG4gICAgICBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnID8gcHJvcHMudGhlbWUudGV4dENvbG9ySGxMVCA6IHByb3BzLnRoZW1lLnRleHRDb2xvckhsfTtcbiAgfVxuYDtcblxuY29uc3QgRE5EX01PRElGSUVSUyA9IFtyZXN0cmljdFRvUGFyZW50RWxlbWVudF07XG5leHBvcnQgY29uc3QgQ2hpY2tsZXRUYWc6IElTdHlsZWRDb21wb25lbnQ8J3dlYic+ID0gc3R5bGVkLnNwYW5gXG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6aG92ZXIge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgQ2hpY2tsZXRQcm9wcyB7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgbmFtZTogUmVhY3ROb2RlO1xuICByZW1vdmU/OiBNb3VzZUV2ZW50SGFuZGxlcjxTVkdTVkdFbGVtZW50PjtcbiAgaW5wdXRUaGVtZT86IHN0cmluZztcbn1cblxuY29uc3QgQ2hpY2tsZXQgPSAoe2Rpc2FibGVkLCBuYW1lLCByZW1vdmUsIGlucHV0VGhlbWV9OiBDaGlja2xldFByb3BzKSA9PiAoXG4gIDxDaGlja2xldEJ1dHRvbiBpbnB1dFRoZW1lPXtpbnB1dFRoZW1lfT5cbiAgICA8Q2hpY2tsZXRUYWc+e25hbWV9PC9DaGlja2xldFRhZz5cbiAgICA8RGVsZXRlIGhlaWdodD1cIjE2cHhcIiBvbkNsaWNrPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IHJlbW92ZX0gLz5cbiAgPC9DaGlja2xldEJ1dHRvbj5cbik7XG5cbmV4cG9ydCB0eXBlIENoaWNrbGV0ZWRJbnB1dENvbnRhaW5lclByb3BzID0gQmFzZUNvbXBvbmVudFByb3BzICYge1xuICBpbnB1dFRoZW1lPzogc3RyaW5nO1xuICBoYXNQbGFjZWhvbGRlcj86IGJvb2xlYW47XG4gIGZvY3VzPzogSFRNTElucHV0RWxlbWVudFsnZm9jdXMnXTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrPzogKGU6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG59O1xuXG5jb25zdCBDaGlja2xldGVkSW5wdXRDb250YWluZXI6IElTdHlsZWRDb21wb25lbnQ8XG4gICd3ZWInLFxuICBDaGlja2xldGVkSW5wdXRDb250YWluZXJQcm9wc1xuPiA9IHN0eWxlZC5kaXYud2l0aENvbmZpZyh7c2hvdWxkRm9yd2FyZFByb3B9KTxDaGlja2xldGVkSW5wdXRDb250YWluZXJQcm9wcz5gXG4gICR7cHJvcHMgPT5cbiAgICBwcm9wcy5pbnB1dFRoZW1lID09PSAnc2Vjb25kYXJ5J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlDaGlja2xldGVkSW5wdXRcbiAgICAgIDogcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5jaGlja2xldGVkSW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5jaGlja2xldGVkSW5wdXR9XG5cbiAgY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5oYXNQbGFjZWhvbGRlciA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yUGxhY2VIb2xkZXIgOiBwcm9wcy50aGVtZS5zZWxlY3RDb2xvcn07XG4gIG92ZXJmbG93OiBoaWRkZW47XG5gO1xuXG5jb25zdCBDaGlja2xldGVkSXRlbSA9ICh7XG4gIGl0ZW0sXG4gIHJlbW92ZUl0ZW0sXG4gIGRpc3BsYXlPcHRpb24sXG4gIEN1c3RvbUNoaWNrbGV0Q29tcG9uZW50LFxuICBpbnB1dFRoZW1lLFxuICBkaXNhYmxlZCxcbiAgaXRlbUlkXG59KSA9PiB7XG4gIGNvbnN0IHthdHRyaWJ1dGVzLCBsaXN0ZW5lcnMsIHNldE5vZGVSZWYsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgaXNEcmFnZ2luZ30gPSB1c2VTb3J0YWJsZSh7XG4gICAgaWQ6IGl0ZW1JZFxuICB9KTtcbiAgY29uc3QgY2hpY2tsZXRQcm9wcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGlucHV0VGhlbWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG5hbWU6IGRpc3BsYXlPcHRpb24oaXRlbSksXG4gICAgICBkaXNwbGF5T3B0aW9uLFxuICAgICAgaXRlbSxcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICBsaXN0ZW5lcnMsXG4gICAgICBzZXROb2RlUmVmLFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgdHJhbnNpdGlvbixcbiAgICAgIGlzRHJhZ2dpbmcsXG4gICAgICByZW1vdmU6IGUgPT4gcmVtb3ZlSXRlbShpdGVtLCBlKVxuICAgIH0pLFxuICAgIFtcbiAgICAgIGl0ZW0sXG4gICAgICByZW1vdmVJdGVtLFxuICAgICAgZGlzcGxheU9wdGlvbixcbiAgICAgIGlucHV0VGhlbWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgICBsaXN0ZW5lcnMsXG4gICAgICBzZXROb2RlUmVmLFxuICAgICAgdHJhbnNmb3JtLFxuICAgICAgdHJhbnNpdGlvbixcbiAgICAgIGlzRHJhZ2dpbmdcbiAgICBdXG4gICk7XG4gIHJldHVybiBDdXN0b21DaGlja2xldENvbXBvbmVudCA/IChcbiAgICA8Q3VzdG9tQ2hpY2tsZXRDb21wb25lbnQgey4uLmNoaWNrbGV0UHJvcHN9IC8+XG4gICkgOiAoXG4gICAgPENoaWNrbGV0IHsuLi5jaGlja2xldFByb3BzfSAvPlxuICApO1xufTtcblxudHlwZSBJdGVtID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdCB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgQ2hpY2tsZXRlZElucHV0UHJvcHMgPSBDaGlja2xldGVkSW5wdXRDb250YWluZXJQcm9wcyAmIHtcbiAgc2VsZWN0ZWRJdGVtcz86IGFueVtdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT4gfCBudWxsO1xuICByZW9yZGVySXRlbXM/OiAobmV3T3JkZXI6IGFueSkgPT4gdm9pZDtcbiAgZGlzcGxheU9wdGlvbj86IChpdGVtOiBJdGVtKSA9PiBzdHJpbmc7XG4gIHJlbW92ZUl0ZW06IChpdGVtOiBJdGVtLCBlOiBSZWFjdC5Nb3VzZUV2ZW50PFNWR1NWR0VsZW1lbnQsIE1vdXNlRXZlbnQ+KSA9PiB2b2lkO1xufTtcblxuY29uc3QgQ2hpY2tsZXRlZElucHV0OiBSZWFjdC5GQzxDaGlja2xldGVkSW5wdXRQcm9wcz4gPSAoe1xuICBkaXNhYmxlZCxcbiAgb25DbGljayxcbiAgY2xhc3NOYW1lLFxuICBzZWxlY3RlZEl0ZW1zID0gW10sXG4gIHBsYWNlaG9sZGVyID0gJycsXG4gIHJlbW92ZUl0ZW0sXG4gIHJlb3JkZXJJdGVtcyA9IGQgPT4gZCxcbiAgZGlzcGxheU9wdGlvbiA9IGQgPT4gU3RyaW5nKGQpLFxuICBpbnB1dFRoZW1lLFxuICBDdXN0b21DaGlja2xldENvbXBvbmVudFxufSkgPT4ge1xuICBjb25zdCBzZWxlY3RlZEl0ZW1JZHMgPSB1c2VNZW1vKFxuICAgICgpID0+IHNlbGVjdGVkSXRlbXMubWFwKGl0ZW0gPT4gZGlzcGxheU9wdGlvbihpdGVtKSksXG4gICAgW2Rpc3BsYXlPcHRpb24sIHNlbGVjdGVkSXRlbXNdXG4gICk7XG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoe2FjdGl2ZSwgb3Zlcn0pID0+IHtcbiAgICAgIGlmICghb3ZlcikgcmV0dXJuO1xuICAgICAgaWYgKGFjdGl2ZS5pZCAhPT0gb3Zlci5pZCkge1xuICAgICAgICBjb25zdCBvbGRJbmRleCA9IHNlbGVjdGVkSXRlbUlkcy5maW5kSW5kZXgoaXRlbUlkID0+IGl0ZW1JZCA9PT0gYWN0aXZlLmlkKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBzZWxlY3RlZEl0ZW1JZHMuZmluZEluZGV4KGl0ZW1JZCA9PiBpdGVtSWQgPT09IG92ZXIuaWQpO1xuICAgICAgICByZW9yZGVySXRlbXMoYXJyYXlNb3ZlKHNlbGVjdGVkSXRlbXMsIG9sZEluZGV4LCBuZXdJbmRleCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbGVjdGVkSXRlbUlkcywgc2VsZWN0ZWRJdGVtcywgcmVvcmRlckl0ZW1zXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPENoaWNrbGV0ZWRJbnB1dENvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtjbGFzc05hbWV9IGNoaWNrbGV0ZWQtaW5wdXRgfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIGlucHV0VGhlbWU9e2lucHV0VGhlbWV9XG4gICAgICBoYXNQbGFjZWhvbGRlcj17IXNlbGVjdGVkSXRlbXMgfHwgIXNlbGVjdGVkSXRlbXMubGVuZ3RofVxuICAgID5cbiAgICAgIDxEbmRDb250ZXh0XG4gICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgbW9kaWZpZXJzPXtETkRfTU9ESUZJRVJTfVxuICAgICAgICBjb2xsaXNpb25EZXRlY3Rpb249e3BvaW50ZXJXaXRoaW59XG4gICAgICAgIGF1dG9TY3JvbGw9e2ZhbHNlfVxuICAgICAgPlxuICAgICAgICA8U29ydGFibGVDb250ZXh0IGl0ZW1zPXtzZWxlY3RlZEl0ZW1JZHN9PlxuICAgICAgICAgIHtzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPENoaWNrbGV0ZWRJdGVtXG4gICAgICAgICAgICAgICAgaXRlbT17aXRlbX1cbiAgICAgICAgICAgICAgICBpdGVtSWQ9e2Rpc3BsYXlPcHRpb24oaXRlbSl9XG4gICAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17cmVtb3ZlSXRlbX1cbiAgICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5T3B0aW9ufVxuICAgICAgICAgICAgICAgIEN1c3RvbUNoaWNrbGV0Q29tcG9uZW50PXtDdXN0b21DaGlja2xldENvbXBvbmVudH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgaW5wdXRUaGVtZT17aW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXlPcHRpb24oaXRlbSl9XyR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7Y2xhc3NOYW1lfSBjaGlja2xldGVkLWlucHV0X19wbGFjZWhvbGRlcmB9PlxuICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17cGxhY2Vob2xkZXIgfHwgJ3BsYWNlaG9sZGVyLmVudGVyVmFsdWUnfSAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU29ydGFibGVDb250ZXh0PlxuICAgICAgICA8RHJhZ092ZXJsYXkgZHJvcEFuaW1hdGlvbj17bnVsbH0gLz5cbiAgICAgIDwvRG5kQ29udGV4dD5cbiAgICA8L0NoaWNrbGV0ZWRJbnB1dENvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoaWNrbGV0ZWRJbnB1dDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUVBLElBQUFNLElBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLEtBQUEsR0FBQVAsT0FBQTtBQUVBLElBQUFRLE9BQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFTLGtCQUFBLEdBQUFULE9BQUE7QUFBdUQsSUFBQVUsZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQWZ2RDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFmLHdCQUFBZSxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENBQUEsT0FBQUMsQ0FBQSxJQUFBQSxDQUFB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
;